//+------------------------------------------------------------------+ //| e-TSATR_NRTR_Last.mq4 | //| Copyright © 2005, Al (idea from Oleg VS) | //| http://www.metaquotes.net/ | //+------------------------------------------------------------------+ /* Äîáàâëåíà íîâàÿ âñòîðîåííàÿ âåðñèÿ òðåéëèíãîâàíèÿ, êîòîðàÿ çàäà¸òñÿ ïîëüçîâàòåëüñêîé ïåðåìåííîé Vts. Ïðè óñòàíîâêå Vts=1 ýêñïåðò òðåéëèíãóåò ñòîïû, êàê è â ïðåæíåé âåðñèè, â çàâèñèìîñòè îò çíà÷åíèÿ ATR íà ïåðâîì áàðå(íóëåâîé áàð â ðàññ÷åò íå ïðèíèìàåòñÿ). Ïðè óñòàíîâêå Vts=2 ñòîï òðåéëèíãóåòñÿ îò ïîñëåäíèõ ýêñòðåìóìîâ öåíû íà ðàññòîÿíèè àìïëèòóäû(øèðèíû äèàïàçîíà) íà çàäàííîì ïåðèîäå(ïî óìîë÷àíèþ Prange=5). Ïðèìåíåíèå òàêîãî ñïîñîáà òðåéëèíãîâàíèÿ ñòîïà èñïûòàíî â ðåàëüíîì âðåìåíè è ïðîâåðåíî ïóò¸ì ïîäñòàíîâêè â ðàçëè÷íûå ýêñïåðòû è ñèñòåìû.  ðåçóëüòàòå òåñòîâ âûÿâëåíî óâåëè÷åíèå ïðîôèòíîñòè íà 15-25% â ðàçëè÷íûõ ýêñïåðòàõ. Âñå çàäàííûå ïàðàìåòðû è òåêóùèå ðàññ÷åòíûå çíà÷åíèÿ êîììåíòèðóþòñÿ â ëåâîì âåðõíåì óãëó ãðàôèêà. */ extern double Patr=9; extern double Prange=5; extern double Kstop=1.5; extern double kts=2; extern double Vts=2; double cnt=0,ValATR=0,hi=0,lo=0,SL=0,TS=0,prevBars=0; //+------------------------------------------------------------------+ //| | //+------------------------------------------------------------------+ int start() { int i,mode,ticket,total; if (prevBars!=Bars) { ValATR=0; for(i=1; i<=Patr; i++) { if(i<=Patr) { ValATR+=High[i]-Low[i]; } } ValATR=ValATR/Patr; hi=High[Highest(NULL,0,MODE_HIGH,Prange,Prange)]; lo=Low[Lowest(NULL,0,MODE_LOW,Prange,Prange)]; if (Vts==1) {TS=kts*ValATR; SL=Kstop*ValATR;} if (Vts==2) {TS=(hi-lo); SL=Kstop*(hi-lo);} prevBars = Bars; } if (Vts<1 || Vts>2) return(0); //------------------------------------------------------- for (cnt=0; cnt<=OrdersTotal(); cnt++) { OrderSelect(cnt,SELECT_BY_POS); mode=OrderType(); if(OrderSymbol()==Symbol()) { //First Stop--------------------------------- if (mode==OP_BUY && OrderStopLoss()== 0) { OrderModify(OrderTicket(),OrderOpenPrice(),Low[0]-SL,OrderTakeProfit(),0,CLR_NONE); PlaySound("expert.wav"); return(0); } if (mode==OP_SELL && OrderStopLoss()==0) { OrderModify(OrderTicket(),OrderOpenPrice(),High[0]+SL,OrderTakeProfit(),0,CLR_NONE); PlaySound("expert.wav"); return(0); } //Main Trailing------------------------------- if ((mode==OP_BUY && High[0]-OrderOpenPrice()>TS && OrderStopLoss()<High[0]-TS) || OrderStopLoss()==0) { OrderModify(OrderTicket(),OrderOpenPrice(),High[0]-TS,OrderTakeProfit(),0,CLR_NONE); PlaySound("expert.wav"); return(0); } if ((mode==OP_SELL && OrderOpenPrice()-Low[0]>TS && OrderStopLoss()>Low[0]+TS) || OrderStopLoss()==0) { OrderModify(OrderTicket(),OrderOpenPrice(),Low[0]+TS,OrderTakeProfit(),0,CLR_NONE); PlaySound("expert.wav"); return(0); } } } Comment("Versia: ",Vts,"\n", "Per_ATR: ",Patr,"\n", "Per_Range: ",Prange,"\n", "Range: ",(High[0]-Low[0]),"\n", "ATR: ",ValATR,"\n", "SL: ",SL,"\n", "TS: ",TS); return(0); }
Sample
Analysis
Market Information Used:
Series array that contains the highest prices of each bar
Series array that contains the lowest prices of each bar
Indicator Curves created:
Indicators Used:
Custom Indicators Used:
Order Management characteristics:
Checks for the total of open orders
It can change open orders parameters, due to possible stepping strategy
Other Features:
It plays sound alerts