Author: Copyright � 2016, Khlystov Vladimir
Orders Execution
Checks for the total of open ordersIt can change open orders parameters, due to possible stepping strategy
0 Views
0 Downloads
0 Favorites
SetStop
//+------------------------------------------------------------------+
//|                                                      SetStop.mq4 |
//|                              Copyright © 2010, Khlystov Vladimir |
//|                                                cmillion@narod.ru |
//+------------------------------------------------------------------+
#property copyright "Copyright © 2016, Khlystov Vladimir"
#property link      "cmillion@narod.ru"
#property version   "1.00"
#property strict
#property description "ñîâåòíèê âûñòàâëÿåò ñòîï ëîññ è òåéê ïðîôèò ó âñåõ ïîçèöèé â òåêóùåì îêíå, "
#property description "åñëè âûñòàâëåíî çíà÷åíèå ìåíåå STOPLEVEL, òî ñîâåòíèê íå ìåíÿåò ñòîï."
//--------------------------------------------------------------------
extern int stoploss   = 50, //óðîâåíü âûñòàâëåíèÿ SL, åñëè 0, òî SL íå èçìåíÿåòñÿ
           takeprofit = 50; //óðîâåíü âûñòàâëåíèÿ TP, åñëè 0, òî TP íå èçìåíÿåòñÿ
//--------------------------------------------------------------------
void OnTick()
{
   int tip,Ticket;
   double SL,TP;
   double OOP,OSL,OTP;
   int STOPLEVEL = (int)MarketInfo(Symbol(),MODE_STOPLEVEL);
   int SPREAD    = (int)MarketInfo(Symbol(),MODE_SPREAD);
   if (stoploss<STOPLEVEL) stoploss=0; 
   if (takeprofit<STOPLEVEL) takeprofit=0; 
   Comment("SetStop   Copyright © 2016, http://cmillion.ru\n",
           "ñîâåòíèê âûñòàâëÿåò\nñòîï ëîññ      = ",stoploss,"\nòåéê ïðîôèò = ",takeprofit
           ,"\nSTOPLEVEL  = ",STOPLEVEL);
   for (int i=0; i<OrdersTotal(); i++) 
   {  
      if (OrderSelect(i, SELECT_BY_POS))
      {  
         tip = OrderType();
         if (OrderSymbol()==Symbol())
         {
            OSL = OrderStopLoss();
            OTP = OrderTakeProfit();
            if ((OSL==0&&stoploss!=0)||(OTP==0&&takeprofit!=0))
            {  
               OOP   = OrderOpenPrice();
               Ticket = OrderTicket();
               if (tip==OP_BUY || tip==OP_BUYSTOP || tip==OP_BUYLIMIT)             
               {
                  if (takeprofit!=0) TP = NormalizeDouble(OOP + takeprofit*Point,Digits); else TP=OTP;
                  if (stoploss!=0)   SL = NormalizeDouble(OOP - (stoploss+SPREAD)* Point,Digits); else SL=OSL;       
                  if (OrderModify(Ticket,OOP,SL,TP,0,White)) Print("SetStop ",Ticket," SL ",OSL," -> ",SL,"   TP ",OTP," -> ",TP);
                  else Print(Symbol()," Error SetStop ",GetLastError(),"  Ticket ",Ticket);
               }                                         
               if (tip==OP_SELL || tip==OP_SELLSTOP || tip==OP_SELLLIMIT)        
               {
                  if (takeprofit!=0) TP = NormalizeDouble(OOP - takeprofit*Point,Digits); else TP=OTP;
                  if (stoploss!=0)   SL = NormalizeDouble(OOP + (stoploss+SPREAD)* Point,Digits); else SL=OSL;             
                  if (OrderModify(Ticket,OOP,SL,TP,0,White)) Print("SetStop ",Ticket," SL ",OSL," -> ",SL,"   TP ",OTP," -> ",TP);
                  else Print(Symbol()," Error SetStop ",GetLastError(),"  Ticket ",Ticket);
               } 
            }
         }
      }
   }
}
//--------------------------------------------------------------------

Comments

Markdown supported. Formatting help

Markdown Formatting Guide

Element Markdown Syntax
Heading # H1
## H2
### H3
Bold **bold text**
Italic *italicized text*
Link [title](https://www.example.com)
Image ![alt text](image.jpg)
Code `code`
Code Block ```
code block
```
Quote > blockquote
Unordered List - Item 1
- Item 2
Ordered List 1. First item
2. Second item
Horizontal Rule ---