Подскажите, если не трудно. Что обозначают эти ошибки и как их можно исправить?

 
 
Игорь:

Как вы так сняли скриншот, что его не увеличить, еле разобрал

Везде ошибка модификации ордера

 
Игорь:

Эти ошибки обозначают что Ваш советник при попытке установить TP или SL не может завершить операцию удачно и выдаёт Вам в логи ошибку.

Чтобы исправить данную ошибку надо или видеть код советника или быть телепатом. Во втором случае Вам сюда.

 
Alexandr Saprykin:

Эти ошибки обозначают что Ваш советник при попытке установить TP или SL не может завершить операцию удачно и выдаёт Вам в логи ошибку.

Чтобы исправить данную ошибку надо или видеть код советника или быть телепатом. Во втором случае Вам сюда.

Ну, советник может быть написан и без ошибок, но в настройках уровни СЛ и ТП меньше уровня StopLevel

 

Ошибка 1 - это попытка изменить параметр на то же самое значение, которое этот параметр уже имеет.

Грубо говоря: у вас стоплосс уже установлен на цене 1.12345, но вы опять его пытаетесь модифицировать, отправляя в приказе на модификацию ту же самую цену: 1.12345. В ответ получаете ошибку 1.

 
Игорь:
Всем спасибо за ответ. Я извиняюсь конечно, что сразу не пояснил корень проблемы и не выложил код. Выше указанная картинка относится к советнику, который работает на основе индикатора DeMarker. Условия открытия и закрытия позиций происходят без тейкпрофита и стоплоса. Допустим, я открываю позицию на селл когда сигнал индикатора пересечёт 0.7 в низ, а закроется данная позиция при пересечении 0.3 в верх. При тесте данной системы я включал "авто торговлю".

Вот сам код( при компиляции которого ошибок не было).

Всем спасибо за ответ. Я извиняюсь конечно, что сразу не пояснил корень проблемы и не выложил код. Выше указанная картинка относится к советнику, который работает на основе индикатора DeMarker. Условия открытия и закрытия позиций происходят без тейкпрофита и стоплоса. Допустим, я открываю позицию на селл когда сигнал индикатора пересечёт 0.7 в низ, а закроется данная позиция при пересечении 0.3 в верх. При тесте данной системы я включал "авто торговлю".

Вот сам код(если понадобится файл, я его прикрепил выше, при компиляции которого ошибок не было).
И последние если можно, напишите можно ли в торговых автоматических системах работать без стопов (может я изначально выбрал неправильный путь). Заранее спасибо за помощь. 
//+------------------------------------------------------------------+
//|                                          Test advisor on 2MA.mq4 |
//|                        Copyright 2017, MetaQuotes Software Corp. |
//|                                         https:/goga342@yandex.ru |
//+------------------------------------------------------------------+
#property copyright "Copyright 2017, MetaQuotes Software Corp."
#property link      "https://www.mql5.com"
#property version   "1.00"
#property strict
//------------------параметры советника -------------------------------
extern double lots=0.01; //
extern int Magic=1111678111;
extern int Slippage=1;


//+------------------------------------------------------------------+
//| Expert initialization function                                   |
//+------------------------------------------------------------------+
int OnInit()
  {
   if(Digits==3 || Digits==5)//EURJPY 125.429, EURUSD 1.32164
   if(Digits==2 || Digits==4)// AUDJPY 87.75,  EURAUD 1,4271
        {
         Slippage*=10;
        }
   return(INIT_SUCCEEDED);
  }
//+------------------------------------------------------------------+
//| Expert tick function                                             |
//+------------------------------------------------------------------+
int start()
  {
   int ticket;
   
   double DM=iDeMarker(NULL,0,14,1);
  
                   
   //if(Bid>OrderOpenPrice()&& CountSell()==0 && DM==0.7)// открытие продаж
      if(CountSell()==0 && DM==0.8)// открытие продаж
     {
      ticket=OrderSend(Symbol(),OP_SELL,lots,Bid,Slippage,0,0,"советник",Magic,0,clrNONE);
      if(ticket>0)
        {
         if(OrderSelect(ticket,SELECT_BY_TICKET,MODE_TRADES)==true)
            if(!OrderModify(ticket,OrderOpenPrice(),0,0,0)==true)
               Print("Ошибка модификации ордера на продажу!");
        }
     }
//
   if(DM>0.2 && CountSell()>0)// закрытие продаж
     {
      for(int i=OrdersTotal()-1; i>=0; i--)
        {
         if(OrderSelect(i,SELECT_BY_POS,MODE_TRADES)==true)
           {
            if(OrderMagicNumber()==Magic && OrderType()==OP_BUY)
               if(!OrderClose(OrderTicket(),OrderLots(),Bid,Slippage,clrNONE))
                  Print("Ошибка открытия ордера на покупку !");
           }
        }
     }
//+------------------------------------------------------------------+
   if(CountBuy()==0 && DM<0.2)// открытие покупок
     {
      ticket=OrderSend(Symbol(),OP_BUY,lots,Ask,Slippage,0,0,"советник",Magic,0,clrNONE);
      if(ticket>0)
        {
         if(OrderSelect(ticket,SELECT_BY_TICKET))
            if(!OrderModify(ticket,OrderOpenPrice(),0,0,0)==true)
               Print("Ошибка модификации ордера на покупку!");
        }
     }
//
   if(CountBuy()>0 && DM>0.8)// закрытие покупок
     {
      for(int i=OrdersTotal()-1; i>=0; i--)
        {
         if(OrderSelect(i,SELECT_BY_POS,MODE_TRADES)==true)
           {
            if(OrderMagicNumber()==Magic && OrderType()==OP_SELL)
               if(!OrderClose(OrderTicket(),OrderLots(),Ask,Slippage,clrNONE))
                  Print("Ошибка открытия ордера на продажу!");
           }
        }
     }
   return(0);
  }
//+------------------------------------------------------------------+
int CountSell()//проверкна открытие ордеров на продажу
  {
   int count=0;

   for(int trade=OrdersTotal()-1; trade>=0; trade--)
     {
      if(OrderSelect(trade,SELECT_BY_POS,MODE_TRADES)==true)
        {
         if(OrderSymbol()==Symbol() && OrderMagicNumber()==Magic && OrderType()==OP_SELL)
           {
            if(OrderType()==OP_SELL)
               count++;
           }
        }
     }
   return(count);
  }
//+------------------------------------------------------------------+
int CountBuy()// проверкна открытие ордеров на покупку
  {
   int count=0;
   for(int trade=OrdersTotal()-1; trade>=0; trade--)
     {
      if(OrderSelect(trade,SELECT_BY_POS,MODE_TRADES)==true)
        {
         if(OrderSymbol()==Symbol() && OrderMagicNumber()==Magic && OrderType()==OP_BUY)
           {
            if(OrderType()==OP_BUY)
               count++;
           }
        }
     }
   return(count);
  }
//+------------------------------------------------------------------+










Открой новые возможности в MetaTrader 5 с сообществом и сервисами MQL5
Открой новые возможности в MetaTrader 5 с сообществом и сервисами MQL5
  • www.mql5.com
Учитесь создавать свои собственные технические индикаторы и торговых роботов по примерам в статьях, написанных для вас другими трейдерами. Поделитесь своим опытом в торговле и программировании с новичками алготрейдинга — напишите об этом статью и мы переведём её на 6 языков, да еще заплатим $200! Универсальный индикатор RSI для работы...
 
Игорь:
Всем спасибо за ответ. Я извиняюсь конечно, что сразу не пояснил корень проблемы и не выложил код. Выше указанная картинка относится к советнику, который работает на основе индикатора DeMarker. Условия открытия и закрытия позиций происходят без тейкпрофита и стоплоса. Допустим, я открываю позицию на селл когда сигнал индикатора пересечёт 0.7 в низ, а закроется данная позиция при пересечении 0.3 в верх. При тесте данной системы я включал "авто торговлю".

Вот сам код( при компиляции которого ошибок не было).

Вы для чего сразу после открытия позиции с нулевыми стопами и тейками, тут же вызываете модификацию ордера на удаление стопов и тейков (тоже нулевые значения) ? Вот и вся проблема: ордер имеет 0 для стоп и 0 для тейк, но вы вызываете модификацию стопа на 0 и тейка на 0. Зачем?

Вот вам и пишется в журнал ошибка 1 постоянно - попытка изменить параметр на то же самое значение.

Форум по трейдингу, автоматическим торговым системам и тестированию торговых стратегий

Подскажите, если не трудно. Что обозначают эти ошибки и как их можно исправить?

Artyom Trishkin, 2018.06.19 08:30

Ошибка 1 - это попытка изменить параметр на то же самое значение, которое этот параметр уже имеет.

Грубо говоря: у вас стоплосс уже установлен на цене 1.12345, но вы опять его пытаетесь модифицировать, отправляя в приказе на модификацию ту же самую цену: 1.12345. В ответ получаете ошибку 1.


 
Artyom Trishkin:

Вы для чего сразу после открытия позиции с нулевыми стопами и тейками, тут же вызываете модификацию ордера на удаление стопов и тейков (тоже нулевые значения) ? Вот и вся проблема: ордер имеет 0 для стоп и 0 для тейк, но вы вызываете модификацию стопа на 0 и тейка на 0. Зачем?

Вот вам и пишется в журнал ошибка 1 постоянно - попытка изменить параметр на то же самое значение.


Артем, мне иногда тебя прям жалко становится ))

 
Alexey Volchanskiy:

Артем, мне иногда тебя прям жалко становится ))

А что так? 
 
Artyom Trishkin:
А что так? 

да такое разжевывать..

ту один сегодня спрашивал, почему, когда я выключаю комп, советник перестает работать )) IQ = -150

 
Alexey Volchanskiy:

да такое разжевывать..

...

Ну я ж не стал разжёвывать, что у него в коде модификация с заковыристой логической проверкой (вероятно просто от того, что человек просто не понимает сам что он пишет)