TradeInChannel

Author: Copyright � 2010, Korvin � Co.
Orders Execution
Checks for the total of open orders
Miscellaneous
Uses files from the file systemIt reads information from a fileIt writes information to fileIt plays sound alertsIt issuies visual alerts to the screen
0 Views
0 Downloads
0 Favorites
TradeInChannel
//+--------------------------------------------------------------------------------------+
//|                                                                   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