Price Data Components
Orders Execution
0
Views
0
Downloads
0
Favorites
TrailingByTime
//+------------------------------------------------------------------+
//| TrailingFiftyFifty.mq4 |
//| I_D |
//| http://www.mymmk.com/ |
//+------------------------------------------------------------------+
#property copyright "I_D"
#property link "http://www.mymmk.com/ Ñîôò äëÿ óïðàâëåíèÿ êàïèòàëîì"
extern int iTicket; // óíèêàëüíûé íîìåð (òèêåò) îòêðûòîé ïîçèöèè
extern int iInterval = 240; // âðåìåííîé èíòåðâàë, ÷åðåç êîòîðûé (ïî âîçìîæíîñòè) ïåðåíîñèòñÿ ñòîïëîññ, ìèíóò
extern int iTrlstep = 20; // øàã òðåéëèíãà, ïóíêòîâ
extern bool bTrlinloss = false; // ñëåäóåò ëè òðàëèòü íà ó÷àñòêå ëîññîâ (ìåæäó êóðñîì ñòîïëîññà è îòêðûòèÿ)
//+------------------------------------------------------------------+
//| ÒÐÅÉËÈÍÃ ÏÎ ÂÐÅÌÅÍÈ |
//| Ïðè çàïóñêå ýêñïåðòà åìó íåîáõîäèìî óêàçàòü óíèêàëüíûé íîìåð |
//| (òèêåò) îòêðûòîé ïîçèöèè, à òàêæå îïðåäåëèòü ïàðàìåòðû òðåéëèíãà:|
//| âðåìåííîé èíòåðâàë (ìèíóò), ñ êîòîðûì ïðîèçâîäèòñÿ ïåðåìåùåíèå |
//| ñòîïëîññà, øàã ñòîïëîññà (ïóíêòîâ), à òàêæå îïðåäåëèòü, ñëåäóåò |
//| ëè òðåéëèíãîâàòü íà ó÷àñòêå ñòîïëîññîâ |
//+------------------------------------------------------------------+
//+------------------------------------------------------------------+
//| expert initialization function |
//+------------------------------------------------------------------+
int init()
{
return(0);
}
//+------------------------------------------------------------------+
//| expert deinitialization function |
//+------------------------------------------------------------------+
int deinit()
{
return(0);
}
//+------------------------------------------------------------------+
//| expert start function |
//+------------------------------------------------------------------+
int start()
{
TrailingByTime(iTicket,iInterval,iTrlstep,bTrlinloss);
return(0);
}
//+------------------------------------------------------------------+
void TrailingByTime(int ticket,int interval,int trlstep,bool trlinloss)
{
// ïðîâåðÿåì ïåðåäàííûå çíà÷åíèÿ
if ((ticket==0) || (interval<1) || (trlstep<1) || !OrderSelect(ticket,SELECT_BY_TICKET))
{
Print("Òðåéëèíã ôóíêöèåé TrailingByTime() íåâîçìîæåí èç-çà íåêîððåêòíîñòè çíà÷åíèé ïåðåäàííûõ åé àðãóìåíòîâ.");
return(0);
}
double minpast; // êîë-âî ïîëíûõ ìèíóò îò îòêðûòèÿ ïîçèöèè äî òåêóùåãî ìîìåíòà
double times2change; // êîë-âî èíòåðâàëîâ interval ñ ìîìåíòà îòêðûòèÿ ïîçèöèè (ò.å. ñêîëüêî ðàç äîëæåí áûë áûòü ïåðåìåùåí ñòîïëîññ)
double newstop; // íîâîå çíà÷åíèå ñòîïëîññà (ó÷èòûâàÿ êîë-âî ïåðåíîñîâ, êîòîðûå äîëæíû áûëè èìåòü ìåñòî)
// îïðåäåëÿåì, ñêîëüêî âðåìåíè ïðîøëî ñ ìîìåíòà îòêðûòèÿ ïîçèöèè
minpast = (TimeCurrent() - OrderOpenTime()) / 60;
// ñêîëüêî ðàç íóæíî áûëî ïåðåäâèíóòü ñòîïëîññ
times2change = MathFloor(minpast / interval);
// åñëè äëèííàÿ ïîçèöèÿ (OP_BUY)
if (OrderType()==OP_BUY)
{
// åñëè òðàëèì â óáûòêå, òî îòñòóïàåì îò ñòîïëîññà (åñëè îí íå 0, åñëè 0 - îò îòêðûòèÿ)
if (trlinloss==true)
{
if (OrderStopLoss()==0) newstop = OrderOpenPrice() + times2change*(trlstep*Point);
else newstop = OrderStopLoss() + times2change*(trlstep*Point);
}
else
// èíà÷å - îò êóðñà îòêðûòèÿ ïîçèöèè
newstop = OrderOpenPrice() + times2change*(trlstep*Point);
if (times2change>0)
{
if ((newstop>OrderStopLoss()) && (newstop<Bid- MarketInfo(Symbol(),MODE_STOPLEVEL)*Point))
{
if (!OrderModify(ticket,OrderOpenPrice(),newstop,OrderTakeProfit(),OrderExpiration()))
Print("Íå óäàëîñü ìîäèôèöèðîâàòü ñòîïëîññ îðäåðà ¹",OrderTicket(),". Îøèáêà: ",GetLastError());
}
}
}
// åñëè êîðîòêàÿ ïîçèöèÿ (OP_SELL)
if (OrderType()==OP_SELL)
{
// åñëè òðàëèì â óáûòêå, òî îòñòóïàåì îò ñòîïëîññà (åñëè îí íå 0, åñëè 0 - îò îòêðûòèÿ)
if (trlinloss==true)
{
if (OrderStopLoss()==0) newstop = OrderOpenPrice() - times2change*(trlstep*Point) - MarketInfo(Symbol(),MODE_SPREAD)*Point;
else newstop = OrderStopLoss() - times2change*(trlstep*Point) - MarketInfo(Symbol(),MODE_SPREAD)*Point;
}
else
newstop = OrderOpenPrice() - times2change*(trlstep*Point) - MarketInfo(Symbol(),MODE_SPREAD)*Point;
if (times2change>0)
{
if (((OrderStopLoss()==0) || (OrderStopLoss()<OrderOpenPrice())) && (newstop>Ask+MarketInfo(Symbol(),MODE_STOPLEVEL)*Point))
{
if (!OrderModify(ticket,OrderOpenPrice(),newstop,OrderTakeProfit(),OrderExpiration()))
Print("Íå óäàëîñü ìîäèôèöèðîâàòü ñòîïëîññ îðäåðà ¹",OrderTicket(),". Îøèáêà: ",GetLastError());
}
else
if ((newstop<OrderStopLoss()) && (newstop>Ask+MarketInfo(Symbol(),MODE_STOPLEVEL)*Point))
{
if (!OrderModify(ticket,OrderOpenPrice(),newstop,OrderTakeProfit(),OrderExpiration()))
Print("Íå óäàëîñü ìîäèôèöèðîâàòü ñòîïëîññ îðäåðà ¹",OrderTicket(),". Îøèáêà: ",GetLastError());
}
}
}
}
//+------------------------------------------------------------------+
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
---