trail_lock_nstop_order6

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
trail_lock_nstop_order6
//+------------------------------------------------------------------+
#property copyright "Copyright © 2015, http://cmillion.ru/"
#property link      "cmillion@narod.ru"
#property show_inputs
//--------------------------------------------------------------------
#property description "Ñêðèïò âûñòàâëÿåò ñòîï îðäåð íà òî ìåñòî êóäà åãî áðîñèëè èëè íà ðàññòîÿíèå Delta îò öåíû, åñëè Delta óêàçàíà áîëüøå íîëÿ."
#property description "BuyStop, åñëè êèíóëè Âûøå öåíû è SellStop åñëè íèæå"
#property description "Äàëåå ñêðèïò áóäåò òðàëèòü ýòîò îðäåð çà öåíîé âïëîòü äî ñðàáàòûâàíèÿ> ïîñëå ÷åãî çàêîí÷èò ñâîþ ðàáîòó."
#property description "Åñëè íå óêàçàí ëîò â ïàðàìåòðå Lot, òî ñêðèïò ñàì âû÷èñëÿåò ëîò êàê ðàçíèöó ñóììû ëîòîâ íàïðàâëåíèé (ëîê)"
//--------------------------------------------------------------------
extern int     TakeProfit        = 0;     //òåéêïðîôèò îðäåðà, åñëè 0 òî íåò ñòîïëîññà
extern int     StopLoss          = 0;     //ñòîïëîññ îðäåðà, åñëè 0 òî íåò ñòîïëîññà
extern int     Delta             = 0;     //ðàññòîÿíèå îò öåíû äî îðäåðà, åñëè 0 òî îðäåð îòêðûâàåì â òî÷êå, êóäà áðîñèëè åãî ìûøüþ
extern int     StepMove          = 1;     //øàã ñìåùåíèÿ îðäåðà â ïóíêòàõ
extern double  Lot               = 0.1;   //ëîò, åñëè 0 òî ñêðèïò ñàì ðàññ÷èòûâàåò ëîê
extern int     Magic             = 100;   //óíèêàëüíûé íîìåð îðäåðà
//--------------------------------------------------------------------
int start()
{
   int i,OT,TicketBuyStop,TicketSellStop;
   double LB=0,LS=0,PriceBuyStop=0,PriceSellStop=0;
   if (Lot==0)
   {
      for (i=0; i<OrdersTotal(); i++)
      {    
         if (OrderSelect(i,SELECT_BY_POS,MODE_TRADES))
         {
            if (OrderSymbol()==Symbol())
            { 
               OT = OrderType(); 
               if (OT==OP_BUY) 
               {  
                  LB=OrderLots();
               }                                         
               if (OT==OP_SELL) 
               {
                  LS=OrderLots();
               }                                         
            }
         }
      }
   }
   
   //---
   
   double SL,TP,delta;
   double StopLevel = MarketInfo(Symbol(),MODE_STOPLEVEL)*Point;
   double Price = NormalizeDouble(WindowPriceOnDropped(),Digits);
   if(Price>=Ask) 
   {
      if (Lot==0) Lot = LS-LB;
      if (Lot<0)  {Comment("Ëîê îðäåð â äàííîì íàïðàâëåíèè íå íóæåí, ñêðèïò çàêîí÷èë ñâîþ ðàáîòó");return(0);}
      if (Delta>0) Price = NormalizeDouble(Ask+Delta*Point,Digits);
      if (Price<NormalizeDouble(Ask+StopLevel,Digits)) Price = NormalizeDouble(Ask+StopLevel,Digits);
      if (TakeProfit!=0) TP = NormalizeDouble(Price + TakeProfit * Point,Digits); else TP=0;
      if (StopLoss!=0) SL = NormalizeDouble(Price - StopLoss * Point,Digits); else SL=0;
      if (OrderSend(Symbol(),OP_BUYSTOP,Lot,Price,0,SL,TP,"http://cmillion.ru/",Magic,0,CLR_NONE)==-1) Comment("Error OrderSend BUYSTOP ",GetLastError());
      delta = NormalizeDouble(Price-Ask,Digits);
   }
   if(Price<=Bid) 
   {
      if (Lot==0) Lot = LB-LS;
      if (Lot<0)  {Comment("Ëîê îðäåð â äàííîì íàïðàâëåíèè íå íóæåí, ñêðèïò çàêîí÷èë ñâîþ ðàáîòó");return(0);}
      if (Delta>0) Price = NormalizeDouble(Bid-Delta*Point,Digits);
      if (Price>NormalizeDouble(Bid-StopLevel,Digits)) Price = NormalizeDouble(Bid-StopLevel,Digits);
      if (TakeProfit!=0) TP = NormalizeDouble(Price - TakeProfit * Point,Digits); else TP=0;
      if (StopLoss!=0) SL = NormalizeDouble(Price + StopLoss * Point,Digits); else SL=0;
      if (OrderSend(Symbol(),OP_SELLSTOP,Lot,Price,0,SL,TP,"http://cmillion.ru/",Magic,0,CLR_NONE)==-1) Comment("Error OrderSend SELLSTOP ",GetLastError());
      delta = NormalizeDouble(Bid-Price,Digits);
   }
   Comment("Òÿíåì ñòîï îðäåð íà ðàññòîÿíèè ",DoubleToStr(delta/Point,0),"ï");

   //---

   while(!IsStopped())
   {
      TicketBuyStop=0;TicketSellStop=0;
      for (i=0; i<OrdersTotal(); i++)
      {    
         if (OrderSelect(i,SELECT_BY_POS,MODE_TRADES))
         {
            if (OrderSymbol()==Symbol() && Magic==OrderMagicNumber())
            { 
               OT = OrderType(); 
               if (OT==OP_BUYSTOP) 
               {  
                  TicketBuyStop=OrderTicket();
                  PriceBuyStop = NormalizeDouble(OrderOpenPrice(),Digits);
               }                                         
               if (OT==OP_SELLSTOP) 
               {
                  TicketSellStop=OrderTicket();
                  PriceSellStop = NormalizeDouble(OrderOpenPrice(),Digits);
               }                                         
            }
         }
      }
      
      //---
   
      if (TicketBuyStop+TicketSellStop==0) {Comment("Ñêðèïò çàêîí÷èë ñâîþ ðàáîòó");return(0);}
      
      //---
   
      if (PriceBuyStop!=0)             
      {  
         Price = NormalizeDouble(Ask+delta,Digits);
         if (NormalizeDouble(PriceBuyStop-StepMove*Point,Digits) > Price)
         {  
            if (!OrderModify(TicketBuyStop,Price,0,0,0,White)) Print("Error ",GetLastError(),"   Order Modify Buy   OOP ",PriceBuyStop,"->",Price);
            //else Print("Order Buy Modify   OOP ",PriceBuyStop,"->",Price);
         }
      }                                         
      if (PriceSellStop!=0)        
      {
         Price = NormalizeDouble(Bid-delta,Digits);
         if (NormalizeDouble(PriceSellStop+StepMove*Point,Digits) < Price)
         {  
            if (!OrderModify(TicketSellStop,Price,0,0,0,White)) Print("Error ",GetLastError(),"   Order Modify Sell   OOP ",PriceSellStop,"->",Price);
            //else Print("Order Sell Modify   OOP ",PriceSellStop,"->",Price);
         }
      } 
      Sleep(500);
      RefreshRates();
   }
   return(0);
}
//--------------------------------------------------------------------

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 ---