Orders Execution
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 Formatting Guide
# H1
## H2
### H3
**bold text**
*italicized text*
[title](https://www.example.com)

`code`
```
code block
```
> blockquote
- Item 1
- Item 2
1. First item
2. Second item
---