Подскажите как правильно написать

 

Здравствуйте.

Подскажите, пожалуйста, необходима небольшая модернизация, но я не пойму как правильно изменить.

//====================================================================\\
// Modtc                                                              ||
//====================================================================//
bool CAllinSave::Modtc()
  {
   if((NormalizeDouble(sl_md,_digits)!=NormalizeDouble(last_sl,_digits) || (last_sl==0 && sl_md>0)) || 
      (NormalizeDouble(tp_md,_digits)!=NormalizeDouble(last_tp,_digits) || (last_tp==0 && tp_md>0))) {}
      else return true;
   if(!OrderSelect(ticket,SELECT_BY_TICKET,MODE_TRADES)) return false;
//---
   StopLevel=(int)MarketInfo(_symbol,MODE_STOPLEVEL);
   if(type==0)
     {
      if(sl_md!=0 && last_sl!=sl_md)
        {
         if(Bid>(sl_md+StopLevel*_point)) {}
         else
           {
            Print("Error sl(for BUY) modification, SL-price ("+DoubleToStr(sl_md,_digits)+") in invalid zone");
            return false;
           }
        }
      if(tp_md!=0 && last_tp!=tp_md)
        {
         if(Ask<(tp_md-StopLevel*_point)) {}
         else
           {
            Print("Error tp(for BUY) modification, TP-price ("+DoubleToStr(tp_md,_digits)+") in invalid zone");
            return false;
           }
        }
     }
   if(type==1)
     {
      if(sl_md!=0 && last_sl!=sl_md)
        {
         if(Ask<(sl_md-StopLevel*_point)) {}
         else
           {
            Print("Error sl(for SELL) modification, SL-price ("+DoubleToStr(sl_md,_digits)+") in invalid zone");
            return false;
           }
        }
      if(tp_md!=0 && last_tp!=tp_md)
        {
         if(Bid>(tp_md+StopLevel*_point)) {}
         else
           {
            Print("Error tp(for SELL) modification, TP-price ("+DoubleToStr(tp_md,_digits)+") in invalid zone");
            return false;
           }
        }
     }
//---
   bool rere=OrderModify(ticket,open,OrderOpenPrice(),tp_md,0,White);
   int err=GetLastError();


//====================================================================\\
// Open_position                                                      ||
//====================================================================//
bool CAllinSave::Open_position(int sym,double mode_tp)
  {
   ticket=0;
   color clr=clrBlue;
   double Price=0;
   sl_md=0;
   tp_md=mode_tp;
   if(sym==0)
     {
      Price=NormalizeDouble(Ask,_digits);
      clr=Blue;
     }
   if(sym==1)
     {
      Price=NormalizeDouble(Bid,_digits);
      clr=Red;
     }
//--



Мне необходимо, чтобы робот выставлял стоп-лосс на безубыток когда цена пошла в нашу сторону.

Также если мне необходимо, чтобы изначально у сделки появился стоп-лосс, нужно в Open_position(int sym,double mode_tp) через запятую добавить double sl_md и уже ниже задать цифровое значение?!

Но надо ли при этом менять что-то в блоке modtc? 


 Спасибо всем кто откликнется на помощь.

 
diamon1985:

Здравствуйте.

Подскажите, пожалуйста, необходима небольшая модернизация, но я не пойму как правильно изменить.

...

Код будет смотреться красиво, если его правильно вставить на форум: Правильно вставляем код на форуме

Данный код просто увеличивает  счётчик ордеров "orders[???]" в зависимости от типа ордера.

 
barabashkakvn:

Код будет смотреться красиво, если его правильно вставить на форум: Правильно вставляем код на форуме

Данный код просто увеличивает  счётчик ордеров "orders[???]" в зависимости от типа ордера.

Прошу прощение, сделал красиво.
 
Здравствуйте уважаемые! Кто может написать советник (или у кого есть такой):
-советник должен выставлять отложенные ордера по заданой цене (тоесть если сработал один отложенный ордер, он выставляет другой по вказаной цене)
-если после первого сработавшего ордера открылся другой отложенный ордер, он выставляет еще один отложенный ордер который равен первому и так до бессконечности?
Наведу пример(цены взяты с головы):

Идею взято с стратегии "замок": валютная пара EUR/USD
-открываю один ордер в любое время - можно перед выходом новостей (например buy по цене 1.3700) ,ставлю T/P 5 пунктов,если цена пошла в мою сторону,-хорошо. Если нет - открываю два ордера sell ниже 5 пунктов(1.3695).Ставлю T/P так чтобы перекрыл минус по BUY.
-если цена не дойшла до T/P по sell,тоесть развернулась-тогда ставлю еще 2 ордера по buy (1.3700), T/P ставлю так чтобы перекрыл минус по sell.
-если цена идет вверх(выше 1.3700)-мы имеем на один buy больше ордеров чем sell
-если цена идет вниз(ниже 1.3695-мы имеем на один sell больше чем buy.
нужен советник который открывает ордера по вказаной цене: 1.3700 buy и 1.3695 sell, а за T/P буду сам следить.
Спасибо за внимание....