Перестали работать роботы на MT5 - страница 5

 

С терминалом вопрос решен. Робот перестал работать одновременно на разных ПК и разных брокерах. Стал разбираться и оказалось, что такой команды как "OpenBuy" вообще в MQL5 нет, только "Buy". Как это вообще пять лет работало.

Моя стезя технический анализ и в аналитической части скрипта (стратегии)  соображаю хорошо. А вот исполнительную просто взял с форума как шаблон очень давно и, похоже, что она примитивная и древняя. Но все прекрасно работало до вчерашнего дня. Придется модернизировать на правильный код.

//+------------------------------------------------------------------+

//| Open Buy position                                                    |

//+------------------------------------------------------------------+

void OpenBuy(double sl,double tp,double lots)

  {

   sl=m_symbol.NormalizePrice(sl);

   tp=m_symbol.NormalizePrice(tp);


   lots=ExLots;

   if(lots==0.0)

      return;

//

//--- check volume before OrderSend to avoid "not enough money" error (CTrade)

   double check_volume_lot=m_trade.CheckVolume(m_symbol.Name(),lots,m_symbol.Ask(),ORDER_TYPE_BUY);


   if(check_volume_lot!=0.0)

      if(check_volume_lot>=lots)

        {

         if(m_trade.Buy(lots,NULL,m_symbol.Ask(),sl,tp))

           {

            if(m_trade.ResultDeal()==0)

              {

               Print("Buy -> true. Result Retcode: ",m_trade.ResultRetcode(),

                     ", description of result: ",m_trade.ResultRetcodeDescription());


              }

            else

              {

               Print("Buy -> false. Result Retcode: ",m_trade.ResultRetcode(),

                     ", description of result: ",m_trade.ResultRetcodeDescription());

              }

           }

         else

           {

            Print("Buy -> true. Result Retcode: ",m_trade.ResultRetcode(),

                  ", description of result: ",m_trade.ResultRetcodeDescription());


           }

        }

  }

 
KENT3004 #:

С терминалом вопрос решен. Робот перестал работать одновременно на разных ПК и разных брокерах. Стал разбираться и оказалось, что такой команды как "OpenBuy" вообще в MQL5 нет, только "Buy". Как это вообще пять лет работало.

Моя стезя технический анализ и в аналитической части скрипта (стратегии)  соображаю хорошо. А вот исполнительную просто взял с форума как шаблон очень давно и, похоже, что она примитивная и древняя. Но все прекрасно работало до вчерашнего дня. Придется модернизировать на правильный код.

//+------------------------------------------------------------------+

//| Open Buy position                                                    |

//+------------------------------------------------------------------+

void OpenBuy(double sl,double tp,double lots)

  {

   sl=m_symbol.NormalizePrice(sl);

   tp=m_symbol.NormalizePrice(tp);


   lots=ExLots;

   if(lots==0.0)

      return;

//

//--- check volume before OrderSend to avoid "not enough money" error (CTrade)

   double check_volume_lot=m_trade.CheckVolume(m_symbol.Name(),lots,m_symbol.Ask(),ORDER_TYPE_BUY);


   if(check_volume_lot!=0.0)

      if(check_volume_lot>=lots)

        {

         if(m_trade.Buy(lots,NULL,m_symbol.Ask(),sl,tp))

           {

            if(m_trade.ResultDeal()==0)

              {

               Print("Buy -> true. Result Retcode: ",m_trade.ResultRetcode(),

                     ", description of result: ",m_trade.ResultRetcodeDescription());


              }

            else

              {

               Print("Buy -> false. Result Retcode: ",m_trade.ResultRetcode(),

                     ", description of result: ",m_trade.ResultRetcodeDescription());

              }

           }

         else

           {

            Print("Buy -> true. Result Retcode: ",m_trade.ResultRetcode(),

                  ", description of result: ",m_trade.ResultRetcodeDescription());


           }

        }

  }

Здесь //| Open Buy positio - это ваша (локальная) ф-ия... вот он здесь и пользуется баем: if(m_trade.Buy - все должно работать... Компилится без ошибок?

вот статья 10 года - посмотрите - там все расписано:


Как использовать торговые классы Стандартной библиотеки при написании советника
Как использовать торговые классы Стандартной библиотеки при написании советника
  • www.mql5.com
В статье рассказывается о том, как использовать основной функционал торговых классов Стандартной библиотеки при написании советников, в которых применяется открытие, закрытие и модификация позиции, проверка свободной маржи перед размещением торговых ордеров, размещение и удаление отложенных ордеров. Показано, как использовать торговые классы для получения свойств ордеров и сделок.
 
Никаких ошибок ни при компиляции ни в логинах нет. Попробую через "Alert" выловить на какой стадии обработки команды происходит "обрыв"
 
KENT3004 #:
Никаких ошибок ни при компиляции ни в логинах нет. Попробую через "Alert" выловить на какой стадии обработки команды происходит "обрыв"

Тогда еще раз, пробуйте тестить, см жуиналы и вкладки эксперты, логи см.
Там возможно пятизнак, надо дописать 0 к стопам и тейкам, т.е. домножить на 10.
Т.е посмотреть как себя ведет роьот в тестере на тех же значениях параметров, что и на реале...
 

Похоже проблема совсем в другом. В пятницу повысилась начальная маржа индекса RTS до 69000 руб. Для работы робота в тестере на истории банально не хватает средств (100000). В логах ошибки не возникает, т.к. нет ответа от сервера. В тестере такой контроль не предусмотрен. Окно "плечо" не помогает.

Теперь серьезный вопрос как обойти эту проблему на этом инструменте.

 
KENT3004 #:

Похоже проблема совсем в другом. В пятницу повысилась начальная маржа индекса RTS до 69000 руб. Для работы робота в тестере на истории банально не хватает средств (100000). В логах ошибки не возникает, т.к. нет ответа от сервера. В тестере такой контроль не предусмотрен. Окно "плечо" не помогает.

Теперь серьезный вопрос как обойти эту проблему на этом инструменте.




Сделай в тестере 1 000 000 старта. Я так и знал, что ф ии открытия тут не при чем.... ничего не менялось при обновлении  версий по этим ф иям.

Попробуй затестить на других более лайтовых инструментах, где меньше го.
 

"Сделай в тестере 1 000 000 старта."

Это как ? 

 
Вот тупой, оказывается вручную ввести можно.
 
KENT3004 #:
Вот тупой, оказывается вручную ввести можно.

Щас тестит? Открывает?
Рад, что помог.
 
Все хорошо, спасибо!!!
Причина обращения: