Скачать MetaTrader 5
Авторизуйтесь или зарегистрируйтесь, чтобы добавить комментарий
Пользуйся функцией вставки контента из Кармана. Это удобно!
Lala
17
Lala 2013.12.16 19:26 

Привет всем,

Написан код для Трейлинга и Безубытка, но на тестах, местами появляется ошибка OrderModify ERROR 1.

Можно ли кто дать мудрый совет по этому поводу ?

int Trailing()
   {
int i;
err=GetLastError();
// без убыток
if (ExtBreakeven>0 && k>0)
for (i=1;i<=k;i++)
   {
   if (OrderN[i*2-1] > 0)
      if(OrderSelect(OrderN[i*2-1], SELECT_BY_TICKET)==true)
      {
         if ((ask-OrderOpenPrice())>NormalizeDouble(ExtBreakeven * precision, digit + 1) && OrderOpenPrice()>OrderStopLoss()) 
         {
            OrderModify(OrderTicket(),OrderOpenPrice(),OrderOpenPrice(),OrderTakeProfit(),0,0);
//            return(0);
         }
         err=GetLastError();
         if (err>1)
            {
            Print("Ошибка модификации СЛ в без убыток! OrderN[k]=",OrderN[i*2-1]," Error=",err);
            }
      }
   if (OrderN[i*2] > 0)
      if(OrderSelect(OrderN[i*2], SELECT_BY_TICKET)==true)
      {
         if ((OrderOpenPrice()-bid)>NormalizeDouble(ExtBreakeven * precision, digit + 1) && OrderOpenPrice()<OrderStopLoss()) 
         {
            OrderModify(OrderTicket(),OrderOpenPrice(),OrderOpenPrice(),OrderTakeProfit(),0,0);
//            return(0);
         }
         err=GetLastError();
         if (err>1)
            {
            Print("Ошибка модификации СЛ в без убыток! OrderN[k]=",OrderN[i*2]," Error=",err);
            }
      }
   }

   
// Трейлинг
if (ExtTrailingStop>0 && k>0)
for (i=1;i<=k;i++)
   {
   if (OrderN[i*2-1] > 0)
      if(OrderSelect(OrderN[i*2-1], SELECT_BY_TICKET)==true)
      {
         if ((ask-OrderOpenPrice())>NormalizeDouble(ExtTrailingStop * precision, digit + 1) && OrderStopLoss()<(ask-NormalizeDouble(ExtTrailingStop * precision, digit + 1))) 
         {
            OrderModify(OrderTicket(),OrderOpenPrice(),(ask-NormalizeDouble(ExtTrailingStop * precision, digit + 1)),OrderTakeProfit(),0,0);
//            return(0);
         }
         err=GetLastError();
         if (err>1)
            {
            Print("Ошибка модификации СЛ во время1 трейлинга! OrderN[k]=",OrderN[i*2-1]," Error=",err);
            }
      }
      else 
      {
      Print("Неудалось выделить ордер во время трейлинга  ",OrderN[i*2-1]);
      }

   if (OrderN[i*2] > 0)
      if(OrderSelect(OrderN[i*2], SELECT_BY_TICKET)==true)
      {
         if ((OrderOpenPrice()-bid)>NormalizeDouble(ExtTrailingStop * precision, digit + 1) && OrderStopLoss()>(bid+NormalizeDouble(ExtTrailingStop * precision, digit + 1))) 
         {
            OrderModify(OrderTicket(),OrderOpenPrice(),bid+NormalizeDouble(ExtTrailingStop * precision, digit + 1),OrderTakeProfit(),0,0);
//            return(0);
         }
         err=GetLastError();
         if (err>1)
            {
            Print("Ошибка модификации СЛ во время2 трейлинга! OrderN[k]=",OrderN[i*2]," Error=",err);
            }
      }
      else 
      {
      Print("Неудалось выделить ордер во время трейлинга  ",OrderN[i*2]);
      }

   }
   return(0);
   }
o_O
Модератор
23314
o_O 2013.12.16 19:34  
Lala:

Привет всем,

Написан код для Трейлинга и Безубытка, но на тестах, местами появляется ошибка OrderModify ERROR 1.


вы пытаетесь отмодифицировать на ту же цену.

это не ошибка, а предупреждение - НЕТ ИЗМЕНЕНИЙ

Lala
17
Lala 2013.12.16 19:52  
Ааа ясно, спасибо ! Теперь знаю в чем дело. А можно ли как то правильно обойти эту проблему ?
o_O
Модератор
23314
o_O 2013.12.16 20:39  
Lala:
Ааа ясно, спасибо ! Теперь знаю в чем дело. А можно ли как то правильно обойти эту проблему ?

конечно


перед модификацией проверьте равенство нормализованных стопов.

если не равны, то модифицируйте

Boris
3883
Boris 2013.12.16 20:44  
Lala:
Ааа ясно, спасибо ! Теперь знаю в чем дело. А можно ли как то правильно обойти эту проблему ?
Определите нужный вам шаг и прибавьте или убавьте стоплосс в зависимости от нужного вам направления! Подсказки в Доке и в Учебнике!
/
Авторизуйтесь или зарегистрируйтесь, чтобы добавить комментарий