тейк профит и стоп лосс - страница 2

 
MrBrooklin #:

Доброе утро, Алексей! Думаю, что это вопрос не ко мне нужно адресовать, а к топикстартеру, т.к. это его стратегия.

С уважением, Владимир.

Владимир, заказчик в праве неграмотно, в терминологии программиста, выражаться, а программист должен понимать его незнания. 

Ещё очень важно с какой стороны цена идёт к линии. То-есть моут быть варианты

>= && <   // Первое касание не учитывается
> && <=   // Учитывается первое касание или «пролёт» сверху вниз
> && <     // Это тоже ошибочная запись. 

Если цена сначала коснётся линии, а потом опустится ниже, то это пересечение не будет учтено.

 
идея очень очень интересная, надо пробовать и тогда узнаем работает или нет
 
menshikov_ab #:
идея очень очень интересная, надо пробовать и тогда узнаем работает или нет

Все стратегии очень интересные и иногда кажутся гениальными. Вы попросили в своём первом сообщении помочь дописать (ключевое слово ДОПИСАТЬ!) советника, а кода этого советника, так и не предоставили. Вам уже Максим Кузнецов прозрачно намекнул по поводу экстрасенсов, но Вы похоже проигнорировали его намёк. Ну так либо сами уж додумывайтесь, как его дописать, либо не морочьте голову людям и выкладывайте полный код советника, чтобы всем миром смогли Вам помочь.

Поверьте, "граалей" здесь уже столько повидали, что очередным шедевром точно никого не удивите.

С уважением, Владимир.

 
input int TP = 25;                   //Тейк профик
input int SL = 200;                  //Стоп лос
input int Bezubitok = 0;             //Безубыток
input int Trailing_Stop = 0;         //Трейлинг стоп
input double Lot = 0.1;              //Лот
input double Lot_percent_dop = 10;   //% от лота
input int ID = 430583;
input bool H4_use = true;
input int Min_channel_size_H4 = 70;     //Минимальное значение канала на H4
input int Max_channel_size_H4 = 270;    //Максимальное значение канала на H4
input bool H1_use = true;
input int Min_channel_size_H1 = 70;     //Минимальное значение канала на H1
input int Max_channel_size_H1 = 270;    //Максимальное значение канала на H1
input bool M30_use = true;
input int Min_channel_size_M30 = 70;     //Минимальное значение канала на M30
input int Max_channel_size_M30 = 270;    //Максимальное значение канала на M30
input bool M15_use = true;
input int Min_channel_size_M15 = 70;     //Минимальное значение канала на М15
input int Max_channel_size_M15 = 270;    //Максимальное значение канала на М15
input int Min_channel_size_1_2 = 15;
input int Max_channel_size_1_2 = 15;
input int Min_channel_size_5_6 = 15;
input int Max_channel_size_5_6 = 15;
input bool M5_use = true;
input int Min_channel_size_M5 = 70;     //Минимальное значение канала на М5
input int Max_channel_size_M5 = 270;    //Максимальное значение канала на М5
input bool M1_use = true;
input int Min_channel_size_M1 = 70;     //Минимальное значение канала на М1
input int Max_channel_size_M1 = 270;    //Максимальное значение канала на М1

input string IND = "Indicator options shot_End";//'
input int  Par_bar=6;           //кол-во бар
input int Par_bar_Temp = 25;
input bool shift = true;        //-1 бар
input int Bars_calc = 100;      //Сколько баров отображает индикатор

input string IND_kol = "Indicator options shot_End_kol";//'
input int  Par_bar_kol=25;           //кол-во бар
input bool shift_kol = true;        //-1 бар
input int Bars_calc_kol = 100;      //Сколько баров отображает индикатор

input string IND_kol_F = "Indicator options shot_End_kol_F";//'
input int  Par_bar_kol_F=7;           //кол-во бар
input bool shift_kol_F = true;        //-1 бар
input int Bars_calc_kol_F = 100;      //Сколько баров отображает индикатор

bool MarketExecution = false;
bool gap_close = true;
int number_try = 20;
int time_period_try = 1;
string main_id;

int OnInit()
{
   main_id = "@" + DoubleToStr(ID,0) + "@";
   return(INIT_SUCCEEDED);
}

void OnDeinit(const int reason)
{
   GlobalVariablesDeleteAll(main_id);
}

void save ( string add )
{
   string name = main_id + add;
   if ( GlobalVariableCheck(name) )GlobalVariableSet(name, GlobalVariableGet(name) + 1);
   else GlobalVariableSet(name, 1);
}

bool load ( string add )
{
   string name = main_id + add;
   return GlobalVariableCheck(name);
}

double l_bid = 0;

void OnTick()
{
   modify_orders();
   
   if ( l_bid == 0.0 )
   {
      l_bid = Bid;
      return;
   }
   
   double v1 = 0, v2 = 0, v3 = 0, v4 = 0, v5 = 0, v6 = 0, v7 = 0, v8 = 0;
   double v3_1=0;
   double v4_1=0;
   
   //MN
   double MN_11 = 0;
   double MN_12 = 0;    
   double MN_13 = 0;
   double MN_14 = 0; 
   //W
   double W_21 = 0;
   double W_22 = 0;
   double W_23 = 0;
   double W_24 = 0;
   //D1
   double D_31 = 0;
   double D_32 = 0;
   double D_33 = 0;
   double D_34 = 0;
   double D_35 = 0;
   double D_36 = 0;
   //H4
   double H4_41 = 0;
   double H4_42 = 0;
   double H4_43 = 0;
   double H4_44 = 0;
   double H4_45 = 0;
   double H4_46 = 0;
   //H1
   double H1_51 = 0;
   double H1_52 = 0;
   double H1_53 = 0;
   double H1_54 = 0;
   double H1_55 = 0;
   double H1_56 = 0;
   //M30
   double M30_61 = 0;
   double M30_62 = 0;
   double M30_63 = 0;
   double M30_64 = 0;
   double M30_65 = 0;
   double M30_66 = 0;
   //M5
   double M5_71 = 0;
   double M5_72 = 0;
   double M5_73 = 0;
   double M5_74 = 0;
   double M5_75 = 0;
   double M5_76 = 0;
   //M1
   double M1_81 = 0;
   double M1_82 = 0;
   double M1_83 = 0;
   double M1_84 = 0;
   double M1_85 = 0;
   double M1_86 = 0;
   
   //kol
   double kol_1 = 0;
   double kol_2 = 0;
   double kol_3 = 0;
   double kol_4 = 0;
   double kol_5 = 0;
   double kol_6 = 0;
   double kol_7 = 0;
   double kol_m1 = 0;
   //kol_F
   double kol_F_1 = 0;
   double kol_F_2 = 0;
   double kol_F_3 = 0;
   double kol_F_4 = 0;
   double kol_F_5 = 0;
   double kol_F_6 = 0;
   double kol_F_7 = 0;
   //kol_Fi
   double kol_Fi_M5 = 0;
   double kol_Fi_1 = 0;
   double kol_Fi_2 = 0;
   double kol_Fi_3 = 0;
   double kol_Fi_4 = 0;
   double kol_Fi_5 = 0;
   double kol_Fi_6 = 0;
   double kol_Fi_7 = 0;
      
   
         
   if ( H4_use )
   {
      v1 = get_indicator ( PERIOD_H4, 1, 1 );
      v2 = get_indicator ( PERIOD_H4, 2, 1 );
      v5 = get_indicator ( PERIOD_H4, 5, 1 );
      v6 = get_indicator ( PERIOD_H4, 6, 1 );
      v7 = get_indicator ( PERIOD_H4, 7, 1 );
      v8 = get_indicator ( PERIOD_H4, 8, 1 );
      
      if ( Bid < MathMax(v1, v2) )GlobalVariablesDeleteAll(main_id + "line_1_2_H4");
      if ( Bid < v7 )GlobalVariablesDeleteAll(main_id + "line_7_H4");
      if ( Bid > MathMin(v5, v6) )GlobalVariablesDeleteAll(main_id + "line_5_6_H4");
      if ( Bid > v8 )GlobalVariablesDeleteAll(main_id + "line_8_H4");
      
      if ( (v2 - v6) / Point >= Min_channel_size_H4 && (v1 - v5) / Point >= Min_channel_size_H4 )
      if ( (v2 - v6) / Point <= Max_channel_size_H4 && (v1 - v5) / Point <= Max_channel_size_H4 )
      
      {
         if ( l_bid < MathMax(v1, v2) && Bid >= MathMax(v1, v2) )save("line_1_2_H4");
         if ( l_bid < v7 && Bid >= v7 )save("line_7_H4");
         if ( l_bid > MathMin(v5, v6) && Bid <= MathMin(v5, v6) )save("line_5_6_H4");
         if ( l_bid > v8 && Bid <= v8 )save("line_8_H4");
      }
   }  
    
   if ( H1_use )
   {
      v1 = get_indicator ( PERIOD_H1, 1, 1 );
      v2 = get_indicator ( PERIOD_H1, 2, 1 );
      v5 = get_indicator ( PERIOD_H1, 5, 1 );
      v6 = get_indicator ( PERIOD_H1, 6, 1 );
      v7 = get_indicator ( PERIOD_H1, 7, 1 );
      v8 = get_indicator ( PERIOD_H1, 8, 1 );
      
      if ( Bid < MathMax(v1, v2) )GlobalVariablesDeleteAll(main_id + "line_1_2_H1");
      if ( Bid < v7 )GlobalVariablesDeleteAll(main_id + "line_7_H1");
      if ( Bid > MathMin(v5, v6) )GlobalVariablesDeleteAll(main_id + "line_5_6_H1");
      if ( Bid > v8 )GlobalVariablesDeleteAll(main_id + "line_8_H1");
      

      
      if ( (v2 - v6) / Point >= Min_channel_size_H1 && (v1 - v5) / Point >= Min_channel_size_H1 )
      if ( (v2 - v6) / Point <= Max_channel_size_H1 && (v1 - v5) / Point <= Max_channel_size_H1 )
      {
         if ( l_bid < MathMax(v1, v2) && Bid >= MathMax(v1, v2) )save("line_1_2_H1");
         if ( l_bid < v7 && Bid >= v7 )save("line_7_H1");
         if ( l_bid > MathMin(v5, v6) && Bid <= MathMin(v5, v6) )save("line_5_6_H1");
         if ( l_bid > v8 && Bid <= v8 )save("line_8_H1");
      }
   }
   
   
   if ( M30_use )
   {
      v1 = get_indicator ( PERIOD_M30, 1, 1 );
      v2 = get_indicator ( PERIOD_M30, 2, 1 );
      v5 = get_indicator ( PERIOD_M30, 5, 1 );
      v6 = get_indicator ( PERIOD_M30, 6, 1 );
      v7 = get_indicator ( PERIOD_M30, 7, 1 );
      v8 = get_indicator ( PERIOD_M30, 8, 1 );

      
      if ( Bid < MathMax(v1, v2) )GlobalVariablesDeleteAll(main_id + "line_1_2_m30");
      if ( Bid < v7 )GlobalVariablesDeleteAll(main_id + "line_7_m30");
      if ( Bid > MathMin(v5, v6) )GlobalVariablesDeleteAll(main_id + "line_5_6_m30");
      if ( Bid > v8 )GlobalVariablesDeleteAll(main_id + "line_8_m30");
      
   
      if ( (v2 - v6) / Point >= Min_channel_size_M30 && (v1 - v5) / Point >= Min_channel_size_M30 )
      if ( (v2 - v6) / Point <= Max_channel_size_M30 && (v1 - v5) / Point <= Max_channel_size_M30 )
      {
         if ( l_bid < MathMax(v1, v2) && Bid >= MathMax(v1, v2) )save("line_1_2_m30");
         if ( l_bid < v7 && Bid >= v7 )save("line_7_m30");
         if ( l_bid > MathMin(v5, v6) && Bid <= MathMin(v5, v6) )save("line_5_6_m30");
         if ( l_bid > v8 && Bid <= v8 )save("line_8_m30");
      }
   }
   
   if ( M15_use )
   {
      v1 = get_indicator ( PERIOD_M15, 1, 1 );
      v2 = get_indicator ( PERIOD_M15, 2, 1 );
      v3 = get_indicator ( PERIOD_M15, 3, 1 );
      v3_1 = get_indicator ( PERIOD_M15, 3, 4 );
      v4 = get_indicator ( PERIOD_M15, 4, 1 );
      v4_1 = get_indicator ( PERIOD_M15, 4, 4 );
      v5 = get_indicator ( PERIOD_M15, 5, 1 );
      v6 = get_indicator ( PERIOD_M15, 6, 1 );
      v7 = get_indicator ( PERIOD_M15, 7, 1 );
      v8 = get_indicator ( PERIOD_M15, 8, 1 );
      //MN
      MN_11 = get_indicator ( PERIOD_MN1, 1, 1);
      MN_12 = get_indicator ( PERIOD_MN1, 2, 1);
      MN_13 = get_indicator ( PERIOD_MN1, 3, 1);
      MN_14 = get_indicator ( PERIOD_MN1, 4, 1);
      //W
      W_21 = get_indicator ( PERIOD_W1, 1, 1);
      W_22 = get_indicator ( PERIOD_W1, 2, 1);
      W_23 = get_indicator ( PERIOD_W1, 3, 1);
      W_24 = get_indicator ( PERIOD_W1, 4, 1);
      //D1
      D_31 = get_indicator ( PERIOD_D1, 1, 1); 
      D_32 = get_indicator ( PERIOD_D1, 2, 1); 
      D_33 = get_indicator ( PERIOD_D1, 3, 1); 
      D_34 = get_indicator ( PERIOD_D1, 4, 1); 
      D_35 = get_indicator ( PERIOD_D1, 5, 1); 
      D_36 = get_indicator ( PERIOD_D1, 6, 1); 
      //H4
      H4_41 = get_indicator ( PERIOD_H4, 1, 1); 
      H4_42 = get_indicator ( PERIOD_H4, 2, 1); 
      H4_43 = get_indicator ( PERIOD_H4, 3, 1); 
      H4_44 = get_indicator ( PERIOD_H4, 4, 1); 
      H4_45 = get_indicator ( PERIOD_H4, 5, 1); 
      H4_46 = get_indicator ( PERIOD_H4, 6, 1); 
      //H1
      H1_51 = get_indicator ( PERIOD_H1, 1, 1); 
      H1_52 = get_indicator ( PERIOD_H1, 2, 1); 
      H1_53 = get_indicator ( PERIOD_H1, 3, 1); 
      H1_54 = get_indicator ( PERIOD_H1, 4, 1); 
      H1_55 = get_indicator ( PERIOD_H1, 5, 1); 
      H1_56 = get_indicator ( PERIOD_H1, 6, 1); 
      //M30
      M30_61 = get_indicator ( PERIOD_M30, 1, 1); 
      M30_62 = get_indicator ( PERIOD_M30, 2, 1); 
      M30_63 = get_indicator ( PERIOD_M30, 3, 1); 
      M30_64 = get_indicator ( PERIOD_M30, 4, 1);
      M30_65 = get_indicator ( PERIOD_M30, 5, 1);
      M30_66 = get_indicator ( PERIOD_M30, 6, 1);
      //M5
      M5_71 = get_indicator ( PERIOD_M5, 1, 1); 
      M5_72 = get_indicator ( PERIOD_M5, 2, 1); 
      M5_73 = get_indicator ( PERIOD_M5, 3, 1); 
      M5_74 = get_indicator ( PERIOD_M5, 4, 1);
      //M1 
      M1_81 = get_indicator ( PERIOD_M1, 1, 1); 
      M1_82 = get_indicator ( PERIOD_M1, 2, 1); 
      M1_83 = get_indicator ( PERIOD_M1, 3, 1); 
      M1_84 = get_indicator ( PERIOD_M1, 4, 1); 
      M1_85 = get_indicator ( PERIOD_M1, 5, 1); 
      M1_86 = get_indicator ( PERIOD_M1, 6, 1); 
      
      //kol
      kol_1 = get_indicator_kol ( PERIOD_M15, 1, 1);
      kol_2 = get_indicator_kol ( PERIOD_M30, 1, 1);
      kol_3 = get_indicator_kol ( PERIOD_H1, 1, 1);
      kol_4 = get_indicator_kol ( PERIOD_H4, 1, 1);
      kol_5 = get_indicator_kol ( PERIOD_D1, 1, 1);
      kol_6 = get_indicator_kol ( PERIOD_W1, 1, 1);
      kol_7 = get_indicator_kol ( PERIOD_M5, 1, 1);
      //kol_F
      kol_F_1 = get_indicator_kol_F ( PERIOD_M15, 1, 1);
      kol_F_2 = get_indicator_kol_F ( PERIOD_M30, 1, 1);
      kol_F_3 = get_indicator_kol_F ( PERIOD_H1, 1, 1);
      kol_F_4 = get_indicator_kol_F ( PERIOD_H4, 1, 1);
      kol_F_5 = get_indicator_kol_F ( PERIOD_D1, 1, 1);
      kol_F_6 = get_indicator_kol_F ( PERIOD_W1, 1, 1);
      //kol_Fi
           
      kol_Fi_M5 = get_indicator_kol_Fi ( PERIOD_M5, 1, 1);
      kol_Fi_1 = get_indicator_kol_Fi ( PERIOD_M15, 1, 1);
      kol_Fi_2 = get_indicator_kol_Fi ( PERIOD_M1, 1, 1);
      kol_Fi_3 = get_indicator_kol_Fi ( PERIOD_H1, 1, 1);
      kol_Fi_4 = get_indicator_kol_Fi ( PERIOD_H4, 1, 1);
      kol_Fi_5 = get_indicator_kol_Fi ( PERIOD_D1, 1, 1);
      kol_Fi_6 = get_indicator_kol_Fi ( PERIOD_W1, 1, 1);


     
      if ( Bid < MathMax(v1, v2) )GlobalVariablesDeleteAll(main_id + "line_1_2_m15");
      if ( Bid > MathMin(v5, v6) )GlobalVariablesDeleteAll(main_id + "line_5_6_m15");
      if ( Bid < v7 )GlobalVariablesDeleteAll(main_id + "line_7_m15");
      if ( Bid > v8 )GlobalVariablesDeleteAll(main_id + "line_8_m15");
      
      
      if ( (v2 - v6) / Point >= Min_channel_size_M15 && (v1 - v5) / Point >= Min_channel_size_M15 )
      if ( (v2 - v6) / Point <= Max_channel_size_M15 && (v1 - v5) / Point <= Max_channel_size_M15 )
      /*if ( (v3 - v4) / Point <= Max_channel_size_1_2 && (v4 - v3) / Point <= Min_channel_size_1_2 )*/   
     /* if ( (v2 - v1) / Point <= Max_channel_size_5_6 && (v2 - v1) / Point >= Min_channel_size_5_6)*/
   
      {
          if ( l_bid < MathMax(v4, v4) && Bid >= MathMax(v4, v4)       &&    kol_Fi_1 > 0    /*&& kol_Fi_M5 >0*/  && H4_41<H4_42   )save("line_1_2_m15");
          if ( l_bid > MathMin(v4, v4) && Bid <= MathMin(v4, v4)       &&    kol_Fi_1 < 0    /*&& kol_Fi_M5 <0*/  && H4_41>H4_42    )save("line_5_6_m15");
        /* if ( l_bid < v7 && Bid >= v7  )save("line_7_m15");
         if ( l_bid > v8 && Bid <= v8  )save("line_8_m15");*/

      }
   }
   
   if ( M5_use )
   {
      v1 = get_indicator ( PERIOD_M5, 1, 1 );
      v2 = get_indicator ( PERIOD_M5, 2, 1 );
      v5 = get_indicator ( PERIOD_M5, 5, 1 );
      v6 = get_indicator ( PERIOD_M5, 6, 1 );
      v7 = get_indicator ( PERIOD_M5, 7, 1 );
      v8 = get_indicator ( PERIOD_M5, 8, 1 );
      
      if ( Bid < MathMax(v1, v2) )GlobalVariablesDeleteAll(main_id + "line_1_2_m5");
      if ( Bid < v7 )GlobalVariablesDeleteAll(main_id + "line_7_m5");
      if ( Bid > MathMin(v5, v6) )GlobalVariablesDeleteAll(main_id + "line_5_6_m5");
      if ( Bid > v8 )GlobalVariablesDeleteAll(main_id + "line_8_m5");
      

      if ( (v2 - v6) / Point >= Min_channel_size_M5 && (v1 - v5) / Point >= Min_channel_size_M5 )
      if ( (v2 - v6) / Point <= Max_channel_size_M5 && (v1 - v5) / Point <= Max_channel_size_M5 )
      {
         /*if ( l_bid < MathMax(v1, v2) && Bid >= MathMax(v1, v2) )save("line_1_2_m5");*/
         if ( l_bid < v7 && Bid >= v7 )save("line_7_m15");
         /*if ( l_bid > MathMin(v5, v6) && Bid <= MathMin(v5, v6) )save("line_5_6_m5");*/
         if ( l_bid > v8 && Bid <= v8 )save("line_8_m15");
      }
   }
   
   if ( M1_use )
   {
      v1 = get_indicator ( PERIOD_M1, 1, 1 );
      v2 = get_indicator ( PERIOD_M1, 2, 1 );
      v5 = get_indicator ( PERIOD_M1, 5, 1 );
      v6 = get_indicator ( PERIOD_M1, 6, 1 );
      v7 = get_indicator ( PERIOD_M1, 7, 1 );
      v8 = get_indicator ( PERIOD_M1, 8, 1 );
      
      if ( Bid < MathMax(v1, v2) )GlobalVariablesDeleteAll(main_id + "line_1_2_m1");
      if ( Bid < v7 )GlobalVariablesDeleteAll(main_id + "line_7_m1");
      if ( Bid > MathMin(v5, v6) )GlobalVariablesDeleteAll(main_id + "line_5_6_m1");
      if ( Bid > v8 )GlobalVariablesDeleteAll(main_id + "line_8_m1");
      
      
      if ( (v2 - v6) / Point >= Min_channel_size_M1 && (v1 - v5) / Point >= Min_channel_size_M1 )
      if ( (v2 - v6) / Point <= Max_channel_size_M1 && (v1 - v5) / Point <= Max_channel_size_M1 )
      {
         if ( l_bid < MathMax(v1, v2) && Bid >= MathMax(v1, v2) )save("line_1_2_m1");
         if ( l_bid < v7 && Bid >= v7 )save("line_7_m1");
         if ( l_bid > MathMin(v5, v6) && Bid <= MathMin(v5, v6) )save("line_5_6_m1");
         if ( l_bid > v8 && Bid <= v8 )save("line_8_m1");
      }
   }

   if ( (!M1_use || load("line_1_2_m1")) && (!M5_use || load("line_1_2_m5")) && (!M15_use || load("line_1_2_m15")) && (!M30_use || load("line_1_2_m30")) && (!H1_use || load("line_1_2_H1")) && (!H4_use || load("line_1_2_H4")) ) 
   {
      open(OP_SELL, get_lot(), SL, TP);
      GlobalVariablesDeleteAll(main_id + "line_1_2");
   }
   
   if ( (!M1_use || load("line_7_m1")) && (!M5_use || load("line_7_m5")) && (!M15_use || load("line_7_m15")) && (!M30_use || load("line_7_m30")) && (!H1_use || load("line_1_2_H1")) && (!H4_use || load("line_1_2_H4")) )
   {
      open( OP_SELL, get_lot(), SL, TP);
      GlobalVariablesDeleteAll(main_id + "line_7");
   }
   
   if ( (!M1_use || load("line_5_6_m1")) && (!M5_use || load("line_5_6_m5")) && (!M15_use || load("line_5_6_m15")) && (!M30_use || load("line_5_6_m30")) && (!H1_use || load("line_1_2_10_H1")) && (!H4_use || load("line_1_2_H4")) )
   {
      open(OP_BUY, get_lot(), SL, TP);
      GlobalVariablesDeleteAll(main_id + "line_5_6");
   }
   
   if ( (!M1_use || load("line_8_m1")) && (!M5_use || load("line_8_m5")) && (!M15_use || load("line_8_m15")) && (!M30_use || load("line_8_m30")) && (!H1_use || load("line_1_2_H1")) && (!H4_use || load("line_1_2_H4")) )
   {
      open( OP_BUY, get_lot(), SL, TP);
      GlobalVariablesDeleteAll(main_id + "line_8");
   }
 
   
   l_bid = Bid;
}

double get_lot()
{
   double res = Lot;
   
   if ( Lot_percent_dop != 0.0 )res = NormalizeDouble(AccountBalance() * (Lot_percent_dop / 100), 2);
   
   return (res);
  
}

bool isNewBar()

{
   static datetime BarTime;  
   bool res = false;
   bool res_kol = false;
   bool res_kol_F = false;
   bool res_kol_Fi = false;
    
   if ( BarTime != Time[0] ) 
   {
      BarTime = Time[0];  
      res = true;
      res_kol = true;
      res_kol_F = true;
      res_kol_Fi = true;
   } 
   return(res);
   return(res_kol);
   return(res_kol_F);
   return(res_kol_Fi);
}


double get_indicator ( ENUM_TIMEFRAMES tf, int line, int i )
{
   double res = -1;
   
   res = iCustom(NULL,tf,"shot_End",Par_bar,Par_bar_Temp,shift,Bars_calc,line - 1, i);
   
   return (res);
}

double get_indicator_kol ( ENUM_TIMEFRAMES tf, int line, int i ) 
{
   
   double res_kol = -1;
   res_kol = iCustom(NULL,tf,"shot_End_kol",Par_bar_kol,shift_kol,Bars_calc_kol,line - 1, i);
   
   return (res_kol);
}
 double get_indicator_kol_F ( ENUM_TIMEFRAMES tf, int line, int i ) 
{
   
   double res_kol_F = -1;
   res_kol_F = iCustom(NULL,tf,"shot_End_kol_F",Par_bar_kol_F,shift_kol_F,Bars_calc_kol_F,line - 1, i);
   
   return (res_kol_F);
double get_indicator_kol_Fi ( ENUM_TIMEFRAMES tf, int line, int i ) 
{

   double res_kol_Fi = -1;
   res_kol_Fi = iCustom(NULL,tf,"shot_End_fi",line - 1, i);
   
   return (res_kol_Fi);
}
void modify_orders()
{
   bool res;
   int i;
   
   for( i = OrdersTotal() - 1; i >= 0; i-- )
   {
      if ( !OrderSelect(i,SELECT_BY_POS,MODE_TRADES) )continue;
      if ( OrderMagicNumber() == ID )
      {
         if ( OrderType() == OP_BUY )
         {
            if ( Bezubitok != 0 && NormalizeDouble(OrderStopLoss(), Digits) == 0 && (MarketInfo(Symbol(),MODE_ASK) - OrderOpenPrice())/Point >= Bezubitok)
            {
               while ( IsTradeContextBusy() )Sleep(500);
               res = OrderModify(OrderTicket(),OrderOpenPrice(),OrderOpenPrice(),OrderTakeProfit(),0,clrBlue);  

            }
            if ( Bezubitok != 0 && NormalizeDouble(OrderStopLoss(), Digits) != 0 && NormalizeDouble(OrderStopLoss(), Digits) < NormalizeDouble(OrderOpenPrice(), Digits) && (MarketInfo(Symbol(),MODE_ASK) - OrderOpenPrice())/Point >= Bezubitok)
            {
               while ( IsTradeContextBusy() )Sleep(500);
               res = OrderModify(OrderTicket(),OrderOpenPrice(),OrderOpenPrice(),OrderTakeProfit(),0,clrBlue);
               
           }
            if
            (
               Trailing_Stop != 0 && NormalizeDouble(OrderStopLoss(), Digits) != 0 && ((NormalizeDouble(OrderStopLoss(), Digits) >= NormalizeDouble(OrderOpenPrice(), Digits) && Bezubitok != 0) || Bezubitok == 0) && 
               (NormalizeDouble(MarketInfo(Symbol(),MODE_ASK) - Trailing_Stop * Point, Digits) > NormalizeDouble(OrderStopLoss(), Digits))
            )
            {
               while ( IsTradeContextBusy() )Sleep(500);
               res = OrderModify(OrderTicket(),OrderOpenPrice(),NormalizeDouble(MarketInfo(Symbol(),MODE_ASK) - Trailing_Stop * Point, Digits),OrderTakeProfit(),0,clrBlue);

            }
         }
         
         if ( OrderType() == OP_SELL )
         {
            if ( Bezubitok != 0 && NormalizeDouble(OrderStopLoss(), Digits) == 0 && (OrderOpenPrice() - MarketInfo(Symbol(),MODE_BID))/Point >= Bezubitok)
            {
               while ( IsTradeContextBusy() )Sleep(500);
               res = OrderModify(OrderTicket(),OrderOpenPrice(),OrderOpenPrice(),OrderTakeProfit(),0,clrBlue);

            }
            if ( Bezubitok != 0 && NormalizeDouble(OrderStopLoss(), Digits) != 0 && NormalizeDouble(OrderStopLoss(), Digits) > NormalizeDouble(OrderOpenPrice(), Digits) && (OrderOpenPrice() - MarketInfo(Symbol(),MODE_BID))/Point >= Bezubitok)
            {
               while ( IsTradeContextBusy() )Sleep(500);
               res = OrderModify(OrderTicket(),OrderOpenPrice(),OrderOpenPrice(),OrderTakeProfit(),0,clrBlue);
               
            }
            if
            (
               Trailing_Stop != 0 && NormalizeDouble(OrderStopLoss(), Digits) != 0 && ((NormalizeDouble(OrderStopLoss(), Digits) <= NormalizeDouble(OrderOpenPrice(), Digits) && Bezubitok != 0) || Bezubitok == 0) && 
               (NormalizeDouble(MarketInfo(Symbol(),MODE_BID) + Trailing_Stop * Point, Digits) < NormalizeDouble(OrderStopLoss(), Digits))
            )
            {
               while ( IsTradeContextBusy() )Sleep(500);
               res = OrderModify(OrderTicket(),OrderOpenPrice(),NormalizeDouble(MarketInfo(Symbol(),MODE_BID) + Trailing_Stop * Point, Digits),OrderTakeProfit(),0,clrBlue);
           
            }
         }
      }
   }
}

double check_lot(double &lo)
{
   double l = MarketInfo(Symbol(),MODE_LOTSTEP);
   int ok = 0;
   while ( l < 1 ){l*=10;ok++;}
   if( lo < MarketInfo(Symbol(),MODE_MINLOT) )lo = MarketInfo(Symbol(),MODE_MINLOT);
   if( lo > MarketInfo(Symbol(),MODE_MAXLOT) )lo = MarketInfo(Symbol(),MODE_MAXLOT);
   return(NormalizeDouble(lo,ok));
}

int open( int type, double l, double sl = 0, double tp = 0, string comm = "")
{
   bool res;
   
   int isOpened = 0, try = 0;
   double s = 0,t = 0;
   color color_order = clrGold;
   
   while ( IsTradeContextBusy() )Sleep(500);
   RefreshRates();
   if ( sl != 0 && sl < MarketInfo(Symbol(),MODE_STOPLEVEL) )sl = MarketInfo(Symbol(),MODE_STOPLEVEL);
   if ( tp != 0 && tp < MarketInfo(Symbol(),MODE_STOPLEVEL) )tp = MarketInfo(Symbol(),MODE_STOPLEVEL);
   if ( type == 0 )
   {
      if ( tp == 0 )t = 0;
      if ( tp != 0 )t = Ask + tp * Point;
      if ( sl == 0 )s = 0;
      if ( sl != 0 )s = Ask - sl * Point;
   }
   if ( type == 1 )
   {
      if ( tp == 0 )t = 0;
      if ( tp != 0 )t = Bid - tp * Point;
      if ( sl == 0 )s = 0;
      if ( sl != 0 )s = Bid + sl * Point;
   }
   
   s = NormalizeDouble(s,Digits);
   t = NormalizeDouble(t,Digits);
   
   if ( MarketExecution )
   {
      if(type == 0)isOpened = OrderSend(Symbol(),type,check_lot(l),NormalizeDouble(Ask,Digits),100,0,0,comm,ID);
      if(type == 1)isOpened = OrderSend(Symbol(),type,check_lot(l),NormalizeDouble(Bid,Digits),100,0,0,comm,ID);
   }
   else
   {
      if(type == 0)isOpened = OrderSend(Symbol(),type,check_lot(l),NormalizeDouble(Ask,Digits),100,s,t,comm,ID);
      if(type == 1)isOpened = OrderSend(Symbol(),type,check_lot(l),NormalizeDouble(Bid,Digits),100,s,t,comm,ID);
   }
   
   while( isOpened < 0 )
   {
      Sleep(time_period_try * 1000);
      while ( IsTradeContextBusy() )Sleep(500);
      RefreshRates();
      if ( type == 0 )
      {
         if ( tp == 0 )t = 0;
         if ( tp != 0 )t = Ask + tp * Point;
         if ( sl == 0 )s = 0;
         if ( sl != 0 )s = Ask - sl * Point;
      }
      if ( type == 1 )
      {
         if ( tp == 0 )t = 0;
         if ( tp != 0 )t = Bid - tp * Point;
         if ( sl == 0 )s = 0;
         if ( sl != 0 )s = Bid + sl * Point;
      }
      s = NormalizeDouble(s,Digits);
      t = NormalizeDouble(t,Digits);
      try++;
      if ( MarketExecution )
      {
         if(type == 0)isOpened = OrderSend(Symbol(),type,check_lot(l),NormalizeDouble(Ask,Digits),100,0,0,comm,ID);
         if(type == 1)isOpened = OrderSend(Symbol(),type,check_lot(l),NormalizeDouble(Bid,Digits),100,0,0,comm,ID);
      }
      else
      {
         if(type == 0)isOpened = OrderSend(Symbol(),type,check_lot(l),NormalizeDouble(Ask,Digits),100,s,t,comm,ID);
         if(type == 1)isOpened = OrderSend(Symbol(),type,check_lot(l),NormalizeDouble(Bid,Digits),100,s,t,comm,ID);
      }
      if(try > number_try || isOpened >= 0) break;
   }
   
   if( isOpened < 0 ) Print("Ордер не открыт, ошибка :", GetLastError());
   else if ( MarketExecution )
   {
      if ( !OrderSelect(isOpened,SELECT_BY_TICKET) )return(0);
      if ( OrderType() == 0 )color_order = Blue;
      if ( OrderType() == 1 )color_order = Red;
      try = 0;
      
      if ( NormalizeDouble(OrderStopLoss(),Digits) != NormalizeDouble(s,Digits) || NormalizeDouble(OrderTakeProfit(),Digits) != NormalizeDouble(t,Digits) )
      {
         while ( IsTradeContextBusy() )Sleep(500);
         res = OrderModify(OrderTicket(),OrderOpenPrice(),s,t,0,color_order);  
         
         while ( !res )
         {
            while ( IsTradeContextBusy() )Sleep(500);
            res = OrderModify(OrderTicket(),OrderOpenPrice(),s,t,0,color_order);
            
            Sleep(time_period_try * 1000);
            try ++;
            Print("Ордер с типом " + DoubleToStr(OrderType(),0) + " по цене " + DoubleToStr(OrderOpenPrice(),Digits) + " не модифицирован по OPEN, попытка " + DoubleToStr(try,0));
            if ( try > number_try || res )break;
         }
      }
   }
   return (isOpened);
}
 

советник открывает сделку на покупку от v4 если v1>v2, на продажу все зеркально, 

если покупка то тейк на v1 должен быть стоп на v5, продажа тейк на v6, стоп на v2

 
Товарищи помогите написать если время будет
 
menshikov_ab:

товарищи, помоги разобраться и дописать советника, смысл такой:

есть советник который открывает сделку на продажу от линии v1  и на покупку от линии 5

нужно чтобы советник сам закрыл сделку, если на продажу то на линии v3, если на покупку то на линии v4. 

моя задумка такая, что даже если с убытком, но при касании линий сделка закрылась. как это написать?

Закажите у кого-нибудь тут чтоб написали готового эксперта.. В задумке ничего сложного нет.