StopAndTake

Author: Copyright 2016, Melnichenko D.A.
StopAndTake
Orders Execution
Checks for the total of open ordersIt can change open orders parameters, due to possible stepping strategy
Miscellaneous
It opens Message Boxes to the user
0 Views
0 Downloads
0 Favorites
StopAndTake
//+------------------------------------------------------------------+
//|                                                  StopAndTake.mq4 |
//|                        Copyright 2016, MetaQuotes Software Corp. |
//|                                             https://www.mql5.com |
//+------------------------------------------------------------------+
#property copyright "Copyright 2016, Melnichenko D.A."
#property link      "https://www.mql5.com"
#property version   "1.00"
#property strict
#include <stderror.mqh>
#include <stdlib.mqh>
double price=0;
//+------------------------------------------------------------------+
//| Script program start function                                    |
//+------------------------------------------------------------------+
void OnStart()
  {
   price=ChartPriceOnDropped();
   for(int i=OrdersTotal()-1;i>=0;i--)
     {
      if(OrderSelect(i,SELECT_BY_POS,MODE_TRADES)==false) continue;
      while(IsTradeContextBusy()){Sleep(1000);}
      ModifyOrder();
     }
  }
//+------------------------------------------------------------------+
void ModifyOrder()
{
   switch(OrderType())
   {
      case OP_BUY:
      {
         if(price > Bid)
            if(!OrderModify(OrderTicket(), OrderOpenPrice(), OrderStopLoss(), price, 0))
               MessageBox("Order change error", "Warning", MB_OK);
         if(price < Bid)
            if(!OrderModify(OrderTicket(), OrderOpenPrice(), price, OrderTakeProfit(), 0))
               MessageBox("Order change error", "Warning", MB_OK);
         break;
      }
      case OP_SELL:
      {
         if(price < Ask)
            if(!OrderModify(OrderTicket(), OrderOpenPrice(), OrderStopLoss(), price, 0))
               MessageBox("Order change error", "Warning", MB_OK);
         if(price > Ask)
            if(!OrderModify(OrderTicket(), OrderOpenPrice(), price, OrderTakeProfit(), 0))
               MessageBox("Order change error", "Warning", MB_OK);
         break;
      }
   }
}
//+------------------------------------------------------------------+

Comments