//+--------------------------------------------------------------------------------------+
//| TradeInChannel.mq4 |
//| Copyright © 2010, Korvin ® Co. |
//| http://alecask.narod.ru/ |
//+--------------------------------------------------------------------------------------+
#property copyright "Copyright © 2010, Korvin ® Co."
#property link "http://alecask.narod.ru/"
#include <mylib_v3_3.mqh>
//#include <>
// - - - - - - - - - - - - - - - ïî óìîë÷àíèþ - - - - - - - - - - - - - - - - - - - - - -
extern bool expert = false; // ðàáîòà â ðåæèìå ÝÊÑÏÅÐÒ
// - - - - - - - - - - - - - - - ïîäãðóæàåìûå - - - - - - - - - - - - - - - - - - - - - -
extern int MaxRisk = 2; // çàäàíèå ìàêñèìàëüíîãî ðèñêà
extern int STOPLOSS = 5; // óñòàíîâêà StopLoss
extern int TAKEPROFIT = 5; // óñòàíîâêà TakeProfit
extern int DELTA = 5; // óñòàíîâêà øèðèíû çîíû îòêðûòèÿ
extern double Factor = 1.0; // ðàñøèðåíèå äëÿ çîíû çàêðûòèÿ
extern double FlipFACTOR = 50.0; // ðàñøèðåíèå äëÿ çîíû çàêðûòèÿ ïî FlipTrade
extern double TrailingStop = 25.0; // âêëþ÷åíèå TrailingStop, â % îò øèðèíû êàíàëà
extern int align = 0; // ñäâèã òåêñòîâîãî áëîêà
// - - - - - - - - - - - - - - - ïî óìîë÷àíèþ - - - - - - - - - - - - - - - - - - - - - -
extern bool readpresets = true; // ñ÷èòûâàòü ïðåäóñòàíîâêè èëè çàïèñûâàòü ?
//extern
// - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - -
double d; // d - øèðèíà òîðãîâîãî êàíàëà
int swap,tic,m,count,magic,TP,handle; //
int code = 11; // èíäèâèäóàëüíûé êîä ýêñïåðòà = 11
string dir,fileName,ext;
bool SoundOn; // âêëþ÷åíèå/âûêëþ÷åíèå çâóêà
//äëÿ SoundOn íóæíû ôàéëû: OrderClose.wav OrderBuyOpen.wav OrderSellOpen.wav StopLoss.wav
//----------------------------------------------------------------------------------------
//
//+#######################################################################################
//|######################### expert initialization function ##############################
//+#######################################################################################
int init() {
// - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - -
magic = GetMagic(code);// Êîä "7" äëÿ @TradeInChannel
// - - - - - - - - - - - - - - - Ï Ð Å Ä Ó Ñ Ò À Í Î Â Ê È - - - - - - - - - - - - - - - -
// ãåíåðàöèÿ èìåíè ôàéëà ïðåäóñòàíîâîê
dir = "@TradeInChannel";// äèðåêòîðèÿ ôàéëîâ ïðåäóñòàíîâîê
ext = ".dat";// ðàñøèðåíèå èì¸í ôàéëîâ ïðåäóñòàíîâîê
switch (Period()) {
case 1 : fileName = dir+"/"+Symbol()+"_M1"+ext; break;
case 5 : fileName = dir+"/"+Symbol()+"_M5"+ext; break;
case 15 : fileName = dir+"/"+Symbol()+"_M15"+ext; break;
case 30 : fileName = dir+"/"+Symbol()+"_M30"+ext; break;
case 60 : fileName = dir+"/"+Symbol()+"_H1"+ext; break;
case 240 : fileName = dir+"/"+Symbol()+"_H4"+ext; break;
case 1440 : fileName = dir+"/"+Symbol()+"_D1"+ext; break;
case 1080 : fileName = dir+"/"+Symbol()+"_W1"+ext; break;
case 43200 : fileName = dir+"/"+Symbol()+"_MN1"+ext; break;
}// êîíåö ãåíåðàöèè èìåíè ôàéëà ïðåäóñòàíîâîê
// - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - -
handle = FileOpen(fileName,FILE_CSV|FILE_READ,";");
// åñëè ôàéë ñóùåñòâóåò è ðàçðåøåíî ÷èòàòü ïðåäóñòàíîâêè - ÷èòàåì èõ
if (readpresets && handle>=1) {
MaxRisk = StrToInteger(FileReadString(handle,1));
STOPLOSS = StrToInteger(FileReadString(handle,2));
TAKEPROFIT = StrToInteger(FileReadString(handle,3));
DELTA = StrToInteger(FileReadString(handle,4));
Factor = StrToDouble(FileReadString(handle,5));
FlipFACTOR = StrToDouble(FileReadString(handle,6));
TrailingStop = StrToDouble(FileReadString(handle,7));
align = StrToInteger(FileReadString(handle,8));
readpresets = StrToInteger(FileReadString(handle,9));
FileClose(handle);
Comment(Span(align-10)+"Èñïîëüçóåì ñòàðûå ïðåäóñòàíîâêè"); Sleep(800);
}// êîíåö ÷òåíèÿ ïðåäóñòàíîâîê
// - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - -
else {// âî âñåõ îñòàëüíûõ ñëó÷àÿõ - çàïèøåì çàäàííûå óñòàíîâêè, êàê íîâûå ïðåäóñòàíîâêè
handle = FileOpen(fileName,FILE_CSV|FILE_WRITE,";");
// - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - -
FileWrite(handle,MaxRisk,STOPLOSS,TAKEPROFIT,DELTA,Factor,FlipFACTOR,TrailingStop,
align,readpresets);
// - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - -
Comment(Span(align-10)+"Ñîõðàíÿåì íîâûå ïðåäóñòàíîâêè"); Sleep(800);
FileClose(handle);
}// êîíåö çàïèñè ïðåäóñòàíîâîê
//----------------------------------------------------------------------------------------
return(0);}// êîíåö ïîäïðîãðàììû èíèöèàëèçàöèè
//+#######################################################################################
//|######################## expert deinitialization function #############################
//+#######################################################################################
int deinit() {
// - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - -
ObjectDelete("LineMiddle"); // Î÷èñòèì ýêðàí
ObjectDelete("LineRealOpen"); // îò îáúåêòîâ,
ObjectDelete("LineRealClose"); // íàðèñîâàííûõ
ObjectDelete("LineStopLoss"); // ýêñïåðòîì,
ObjectDelete("LineTakeProfit"); // êðîìå ñàìîãî êàíàëà.
//ObjectDelete("");
//----------------------------------------------------------------------------------------
return(0);}// êîíåö ïîäïðîãðàììû äåèíèöèàëèçàöèè
//+#######################################################################################
//|########################### expert start function ####################################
//+#######################################################################################
int start() {
// - - - - - - - - Â Ê Ë Þ × Å Í È Å / Â Û Ê Ë Þ × Å Í È Å Ç Â Ó Ê À - - - - - - - - - -
if (GlobalVariableCheck("Sound") && GlobalVariableGet("Sound")!=0) SoundOn = true;
else SoundOn = false;
//if (SoundOn) PlaySound("StopLoss.wav");// #####
// - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - -
swap = MathRound((Ask-Bid)/Point);// Îïðåäåëèì ïðîñêàëüçûâàíèå íà ãðàôèêå
Comment(""); // Î÷èñòèì ýêðàí îò ïðåäûäóùèõ íàäïèñåé
// Î÷èñòèì ýêðàí îò îáúåêòîâ, íàðèñîâàííûõ â ïðîøëîì òèêå:
ObjectDelete("LineMiddle");
ObjectDelete("LineRealOpen");
ObjectDelete("LineRealClose");
ObjectDelete("LineStopLoss");
ObjectDelete("LineTakeProfit");
//ObjectDelete("");
// Åñëè íå ïðîéäåí îáùèé êîíòðîëü - çàïðåòèì òîðãîâëþ.
if (!RutineCheck()) {Comment (Span(align),"!!! Òîðãîâëÿ çàïðåùåíà !!!"); return(0);}
// Íàðèñîâàí ëè êàíàë "TradeChannel" ...?
//------------------ Ñ Ò Ð Î Ê Î Â Û Å Ï Å Ð Å Ì Å Í Í Û Å -----------------------------
string name="TradeChannel"; string msg1,msg2,msg3,msg4,msg5,msg6,msg7,msg8,msg9;
//----------------------------------------------------------------------------------------
RefreshRates(); // Îáíîâèì äàííûå è ñäåëàåì çàïðîñû ïî èìåíè "TradeCannel"
datetime t1=ObjectGet(name,OBJPROP_TIME1);
datetime t2=ObjectGet(name,OBJPROP_TIME2);
datetime t3=ObjectGet(name,OBJPROP_TIME3);
double p1=ObjectGet(name,OBJPROP_PRICE1);
double p2=ObjectGet(name,OBJPROP_PRICE2);
double p3=ObjectGet(name,OBJPROP_PRICE3);
bool exact=0; // êîíòðîëüíàÿ öèôðà
int s1 = iBarShift( NULL, 0, t1, exact); // ñìåùåíèå áàðà öåíû p1
int s2 = iBarShift( NULL, 0, t2, exact); // ñìåùåíèå áàðà öåíû p2
int s3 = iBarShift( NULL, 0, t3, exact); // ñìåùåíèå áàðà öåíû p3
//---------------- Í À Ð È Ñ Ó Å Ì Ò Î Ð Ã Î Â Û É Ê À Í À Ë -------------------------
// Åñëè êàíàëà íåò, ïîïðîñèì åãî íàðèñîâàòü
int err=GetLastError();
if (err==4202) {
Comment(Span(187)," Íàðèñóéòå òîðãîâûé êàíàë è äàéòå åìó èìÿ \"TradeChannel\".");
return;
}
// ïðîâåðèì ÷òî òîðãîâûé êàíàë íàðèñîâàí ïðàâèëüíî (ñëåâà-íàïðàâî)
if(t1>t2) {Comment(Span(219),"Ðàñïîëîæèòå \"",name,"\" ïðàâèëüíî!"); return(0);}
// Åñëè êàíàë íàðèñîâàí âåðíî - ïðîäîëæèì ëèíèè êàíàëà (ñâîéñòâî ëó÷)
ObjectSet(name,OBJPROP_RAY,true);
//-------------------- Ø È Ð È Í À Ò Î Ð Ã Î Â Î Ã Î Ê À Í À Ë À --------------------+
d = (p3-p1) - (p2-p1)*(s1-s3)/(s1-s2); // |
//--------------- Ç Í À Ê Ø È Ð È Í Û Ò Î Ð Ã Î Â Î Ã Î Ê À Í À Ë À ---------------+
int sign = MathRound(d/MathAbs(d));// |
//+--------------------------------------------------------------------------------------+
// Åñëè êàíàë âîñõîäÿùèé - îí çåë¸íûé, åñëè íèñõîäÿùèé - êðàñíûé.
if (p1<=p2) ObjectSet(name,OBJPROP_COLOR,MediumSeaGreen);
else ObjectSet(name,OBJPROP_COLOR,Red);
//---------- Í À Ð È Ñ Ó Å Ì Ñ Ð Å Ä Í Þ Þ Ë È Í È Þ Ê À Í À Ë À -------------------
double plm1=p1+d*0.5; double plm2=p2+d*0.5; // Ïàðàìåòðû öåíû äëÿ ðèñîâàíèÿ ñðåäíåé ëèíèè
ObjectCreate("LineMiddle",OBJ_TREND,0,t1,plm1,t2,plm2);
ObjectSet("LineMiddle",OBJPROP_STYLE,STYLE_DASHDOT);
ObjectSet("LineMiddle",OBJPROP_WIDTH,1);
ObjectSet("LineMiddle",OBJPROP_COLOR,Goldenrod);
//--------------- Ò Å Ê Ó Ù Å Å Ç Í À × Å Í È Å Ëèíèè îòêðûòèÿ îðäåðîâ ----------------+
double LineOpen = ObjectGetValueByShift(name,0);
//--------------- Ò Å Ê Ó Ù Å Å Ç Í À × Å Í È Å Ëèíèè çàêðûòèÿ îðäåðîâ ----------------+
double LineClose = LineOpen+d;
//--------------- Ò Å Ê Ó Ù Å Å Ç Í À × Å Í È Å Ñðåäíåé ëèíèè -------------------------+
double LineMiddle = ObjectGetValueByShift("LineMiddle",0);
//------------- Î Ï Ð Å Ä Å Ë È Ì Í À Ï Ð À Â Ë Å Í È Å Ò Î Ð Ã Î Â Ë È --------------
bool trend, potrendu;
if (p2>=p1) {trend=true; msg3=" ÂÎÑÕÎÄßÙÈÉ ";} // òðåíä âîñõîäÿùèé ...
else {trend=false; msg3=" ÍÈÑÕÎÄßÙÈÉ ";} // èëè íèñõîäÿùèé ?
if ((trend && sign>=0)||
(!trend && sign<0)) {potrendu=true; msg4=" ÏÎ ÒÐÅÍÄÓ ";} // òîðãîâëÿ ïî òðåíäó ...
else {potrendu=false; msg4=" ÏÐÎÒÈÂ ÒÐÅÍÄÀ ";} // èëè ïðîòèâ òðåíäà ?
// - - - - - - - - Ñ Ê À Ê È Ì Take Profit Ð À Á Î Ò À Ò Ü ? - - - - - - - - - - - -
// äëÿ ðàáîòû ïî òðåíäó
if (potrendu) TP = TAKEPROFIT;
// äëÿ ðàáîòû ïðîòèâ òðåíäà
else TP = (-1)*MathCeil((1 - 0.01*FlipFACTOR)*MathAbs(d/Point));
//------- Ï Î Ê À Æ Å Ì Ã Ä Å Á Ó Ä Ó Ò Î Ò Ê Ð Û Â À Ò Ü Ñ ß Î Ð Ä Å Ð À --------
double zona1;
if (d<0) zona1 = sign*DELTA*Point;
else zona1 = sign*(DELTA+swap)*Point;
double lro1=p1+zona1; double lro2=p2+zona1; // Ïàðàìåòðû öåíû äëÿ
ObjectCreate("LineRealOpen",OBJ_TREND,0,t1,lro1,t2,lro2);
ObjectSet("LineRealOpen",OBJPROP_STYLE,STYLE_DASH);
ObjectSet("LineRealOpen",OBJPROP_WIDTH,1);
if ((trend && potrendu)||(!trend && !potrendu)) ObjectSet("LineRealOpen",OBJPROP_COLOR,Lime);
else ObjectSet("LineRealOpen",OBJPROP_COLOR,DeepPink);
double LineRealOpen = ObjectGetValueByShift("LineRealOpen",0); // òåêóùåå çíà÷åíèå ëèíèè
//------- Ï Î Ê À Æ Å Ì Ã Ä Å Á Ó Ä Ó Ò Ç À Ê Ð Û Â À Ò Ü Ñ ß Î Ð Ä Å Ð À --------
if (d<0) zona1 = sign*(DELTA+swap)*Point;
else zona1 = sign*DELTA*Point;// Ïàðàìåòðû öåíû äëÿ
double lrc1=p1+d-zona1*Factor; double lrc2=p2+d-zona1*Factor; // ëèíèè çàêðûòèÿ
ObjectCreate("LineRealClose",OBJ_TREND,0,t1,lrc1,t2,lrc2);
ObjectSet("LineRealClose",OBJPROP_STYLE,STYLE_DASH);
ObjectSet("LineRealClose",OBJPROP_WIDTH,1);
if ((trend && potrendu)||(!trend && !potrendu)) ObjectSet("LineRealClose",OBJPROP_COLOR,DeepPink);
else ObjectSet("LineRealClose",OBJPROP_COLOR,Lime);
double LineRealClose = ObjectGetValueByShift("LineRealClose",0); // òåêóùåå çíà÷åíèå ëèíèè
//-------------- Í À É Ä Å Ì Ð Å À Ë Ü Í Ó Þ Ø È Ð È Í Ó Ê À Í À Ë À ---------------
int realwidth = sign*MathRound((LineRealClose-LineRealOpen)/Point);// Çàêîí÷èì, åñëè
if (realwidth<=0) {Comment(Span(align)," ÊÀÍÀË ÑËÈØÊÎÌ ÓÇÎÊ"); return(0);}// óçêèé êàíàë
//---- Ï Î Ê À Æ Å Ì Ã Ä Å Á Ó Ä Å Ò Ó Ñ Ò À Í À Â Ë È Â À Ò Ü Ñ ß STOP_LOSS -----
// Ïàðàìåòðû öåíû äëÿ ðèñîâàíèÿ LineStopLoss
double lsl1=p1-sign*STOPLOSS*Point; double lsl2=p2-sign*STOPLOSS*Point;
ObjectCreate("LineStopLoss",OBJ_TREND,0,t1,lsl1,t2,lsl2);
ObjectSet("LineStopLoss",OBJPROP_STYLE,STYLE_DOT);
ObjectSet("LineStopLoss",OBJPROP_WIDTH,1);
ObjectSet("LineStopLoss",OBJPROP_COLOR,DeepPink);
double LineStopLoss = ObjectGetValueByShift("LineStopLoss",0);// òåêóùåå çíà÷åíèå ëèíèè
//--- Ï Î Ê À Æ Å Ì Ã Ä Å Á Ó Ä Å Ò Ó Ñ Ò À Í À Â Ë È Â À Ò Ü Ñ ß TAKE_PROFIT ----
// Ïàðàìåòðû öåíû äëÿ ðèñîâàíèÿ LineTakeProfit
double ltp1=p1+d+sign*TP*Point; double ltp2=p2+d+sign*TP*Point;
ObjectCreate("LineTakeProfit",OBJ_TREND,0,t1,ltp1,t2,ltp2);
ObjectSet("LineTakeProfit",OBJPROP_STYLE,STYLE_DOT);
ObjectSet("LineTakeProfit",OBJPROP_WIDTH,1);
ObjectSet("LineTakeProfit",OBJPROP_COLOR,DodgerBlue);
double LineTakeProfit = ObjectGetValueByShift("LineTakeProfit",0);// òåêóùåå çíà÷åíèå ëèíèè
//----------------------ïîäñ÷èòàåì êîë-âî îòêðûòûõ îðäåðîâ ------------------------------
int oBuy=0,oSell=0; msg8="";
for(int i=OrdersTotal()-1;i>=0;i--)
{
if(OrderSelect(i,SELECT_BY_POS,MODE_TRADES)) {
if((OrderSymbol()==Symbol()) && (magic==OrderMagicNumber())) {
if (OrderType()==OP_BUY) oBuy++;
if (OrderType()==OP_SELL) oSell++;
if (oBuy+oSell==0) {tic=0; msg8=Span(align-5)+"ÍÅÒ ÓÏÐÀÂËßÅÌÛÕ ÎÐÄÅÐΠ";}
if (oBuy+oSell==1) {tic=OrderTicket(); msg8=Span(align-5)+"ÓÏÐÀÂËÅÍÈÅ ÎÐÄÅÐÎÌ "+tic;}
if (oBuy+oSell>1) {msg8=Span(align-5)+"ÁÎËÜØÅ ÎÄÍÎÃÎ ÎÐÄÅÐÀ"+
Span(align-5)+"ÏÎ ÝÒÎÉ ÂÀËÞÒÍÎÉ ÏÀÐÅ";}
}
}
}
//------------------------- Á Ë Î Ê Â Û Â Î Ä À Ò Å Ê Ñ Ò À -------------------------
msg9 = Span(align)+" FlipFACTOR: "+DoubleToStr(FlipFACTOR,2)+" %"+
Span(align)+" TrailingStop: "+DoubleToStr(TrailingStop,2)+" %";
// - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - -
if (!expert) {msg1="******* ÈÍÄÈÊÀÒÎÐ *******";}
else {msg1="******** ÝÊÑÏÅÐÒ ********";}
if (!expert) msg5=Span(align)+"Ëèíèÿ îòêðûòèÿ: "+DoubleToStr(LineRealOpen,Digits)+
Span(align)+"Ëèíèÿ çàêðûòèÿ: "+DoubleToStr(LineRealClose,Digits);
if (oBuy+oSell!=0) {
msg5=Span(align)+"Öåíà çàêðûòèÿ: "+DoubleToStr(LineRealClose,Digits);
msg6=Span(align-2)+"- - - - - - - - - - - - - - - - - - - - - -"+
Span(align)+" Îðäåð ¹ : "+OrderTicket()+
Span(align-2)+"- - - - - - - - - - - - - - - - - - - - - -";}
Comment(Span(align-5),msg1,
Span(align),msg3," ÊÀÍÀË",
Span(align),"Òîðãîâëÿ: ",msg4,
Span(align),"Øèðèíà êàíàëà: ",MathAbs(MathRound(d/Point))," / ",realwidth,
Span(align)," Ñâîï: ",swap," ïóíêòîâ",
msg9,msg6,msg5,
Span(align),"Ñðåäíÿÿ ëèíèÿ: ",DoubleToStr(LineMiddle,Digits),
Span(align),"Óðîâåíü SL: ",DoubleToStr(LineStopLoss,Digits),
Span(align),"Óðîâåíü TP: ",DoubleToStr(LineTakeProfit,Digits),
Span(align-5),"=====================", msg8
// Span(align),"",
);
if (!expert) return(0); // äëÿ ðåæèìà ÈÍÄÈÊÀÒÎÐ íè÷åãî áîëüøå íå íàäî, ÓÕÎÄÈÌ
//----- Â Ñ ¨ Í È Æ Å Ñ Ë Å Ä Ó Þ Ù Å Å - Ä Ë ß Ð Å Æ È Ì À "Ý Ê Ñ Ï Å Ð Ò" ------
//+--------------------------------------------------------------------------------------+
//| Áëîê óïðàâëåíèÿ îðäåðàìè |
//+--------------------------------------------------------------------------------------+
//+------------------------------------------------------------------------- ÇÀÊÐÛÒÈÅ ---+
// åñëè åñòü îðäåðà è öåíà ïîäîøëà ê ëèíèè çàêðûòèÿ - çàêðîåì îðäåð
double tp=0.0;
double sl=0.0;
double Lot=GetLot(MaxRisk);
if (oBuy+oSell!=0 && tic>0 && Lot!=0 && (OrderType()==OP_BUY) &&
Bid>=LineClose-Factor*DELTA*Point && Bid<=LineClose) {
CloseOrder(tic); tic=0; PlaySound("OrderClose.wav"); Sleep(500);}
if (oBuy+oSell!=0 && tic>0 && Lot!=0 && (OrderType()==OP_SELL) &&
Bid<=LineClose+Factor*DELTA*Point && Bid>=LineClose) {
CloseOrder(tic); tic=0; PlaySound("OrderClose.wav"); Sleep(500);}
// åñëè íåò îðäåðîâ è öåíà ïîäîøëà ê ëèíèè îòêðûòèÿ - îòêðîåì îðäåð
tp=0;
sl=0;
Lot=GetLot(MaxRisk);
if(Lot==0.0) {Alert("Íåäîñòàòî÷íî ñðåäñòâ!");return(0);}
//+-------------------------------------------------------------------------- ÏÎÊÓÏÊÀ ---+
// åñëè íåò îòêðûòûõ îðäåðîâ è öåíà â çîíå îòêðûòèÿ
RefreshRates();
if (oBuy+oSell==0 && Bid>=LineOpen && Bid<=LineOpen+DELTA*Point)
{if(TP!=0) tp=LineTakeProfit;
if(STOPLOSS>0) sl=LineStopLoss;
tic=NewOrder(OP_BUY,Lot,Ask,tp,sl,magic);
if (ErrorFix(0)>=2) return(0);
sl=0; tp=0;
if (SoundOn&&tic>0) PlaySound("OrderBuyOpen.wav"); Sleep(500);
}
//+-------------------------------------------------------------------------- ÏÐÎÄÀÆÀ ---+
// åñëè íåò îòêðûòûõ îðäåðîâ è öåíà â çîíå îòêðûòèÿ
if (oBuy+oSell==0 && Bid<=LineOpen && Bid>=LineOpen-DELTA*Point)
{if(TP!=0) tp=LineTakeProfit;
if(STOPLOSS>0) sl=LineStopLoss;
tic=NewOrder(OP_SELL,Lot,Bid,tp,sl,magic);
if (ErrorFix(0)>=2) return(0);
sl=0; tp=0;
if (SoundOn&&tic>0) PlaySound("OrderSellOpen.wav"); Sleep(500);
}
//+---------------------------------------------------------------- È Ç Ì Å Í Å Í È Å ---+
// ïåðåñòàâèì StopLoss íà áåçóáûòîê, åñëè öåíà íà ïåðåñåêëà ñðåäíþþ ëèíèþ
// è òîðãîâëÿ èä¸ò ÏÎ ÒÐÅÍÄÓ #####
if (oBuy+oSell!=0 && tic>0 && potrendu) {OrderSelect(tic,SELECT_BY_TICKET,MODE_TRADES);
if (((OrderType()==OP_BUY) && Bid>=0.01*TrailingStop*d && LineOpen>OrderStopLoss()) ||
((OrderType()==OP_SELL) && Bid<=0.01*TrailingStop*d && LineOpen<OrderStopLoss())) {
tp=LineTakeProfit;
sl=LineRealOpen+sign*Point;
EditOrder(tic,sl,tp);
if (ErrorFix(0)>=2) return(0);
PlaySound("StopLoss.wav"); Sleep(500);
}}
// - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - -
// ïåðåñòàâèì TakeProfit, åñëè åãî çíà÷åíèå èçìåíèëîñü íà 1 ïóíêò
if (oBuy+oSell!=0 && tic!=0 && ((LineTakeProfit>=OrderTakeProfit()+Point) ||
(LineTakeProfit<=OrderTakeProfit()-Point))) {
OrderSelect(tic,SELECT_BY_TICKET,MODE_TRADES);
sl=0;
tp=LineTakeProfit;
EditOrder(tic,sl,tp);
sl=OrderStopLoss();
Sleep(500);
}
//+#######################################################################################
return(0);}//####################### Ê Î Í Å Ö Ð À Á Î Ò Û #############################
//+#######################################################################################
Comments