Неужели с МТ5 всё так плохо?

 

Суть такая. Заказал советник для MT5. Программер не смог его сделать, так как говорит, что причина в багах терминала и он ничего не может поделать. Интересует ваше мнение. Неужели такой советник для парного трейдинга нельзя сделать в МТ5?

ТЗ советника:

Нужен советник для парного трейдинга для MT5. Суть в заключении двух разнонаправленных сделок на двух инструментах при соблюдении определенных условий, о которых подробнее ниже.

В работе будут использоваться два торговых инструмента.

Для советника понадобится доработанный индикатор spread_of_symbols (со скользящей средней).

Условия для совершения сделок.

Покупка спреда:

График спреда находится ниже скользящей на определенную величину, указываемую в настройках советника
К примеру, указана величина раздвижки равная 60. Соответственно, если цена скользящей минус цена спреда равняется или больше 60, то советник совершает сделки. На первом графике одновременно покупаем, а на втором продаем.

Продажа спреда:

График спреда выше скользящей на указанную в параметрах величину раздвижки. На первом графике продаем, на втором покупаем.

Закрытие:

1. При касании или пересечении спреда со скользящей пара сделок одновременно закрывается.

2. Если убыток по паре достиг величины, указанной в параметрах советника, то сделки закрываются и следующие должны совершаться только после касания спреда скользящей и соблюдении вышеперечисленных условий на вход.

Параметры, которые должны быть в советнике:

Symbol1
Symbol2
mass_of_symbol1
mass_of_symbol2
SMA
Lot1
Lot2
Величина раздвижки
Размер убытка, при котором советник должен закрыть пару сделок.

Пример сделки. Устанавливаем раздвижку 140.

Файлы:
 
Alex:

Суть такая. Заказал советник для MT5. Программер не смог его сделать, так как говорит, что причина в багах терминала и он ничего не может поделать. Интересует ваше мнение. Неужели такой советник для парного трейдинга нельзя сделать в МТ5?

ТЗ советника:

Нужен советник для парного трейдинга для MT5. Суть в заключении двух разнонаправленных сделок на двух инструментах при соблюдении определенных условий, о которых подробнее ниже.

В работе будут использоваться два торговых инструмента.

Для советника понадобится доработанный индикатор spread_of_symbols (со скользящей средней).

Условия для совершения сделок.

Покупка спреда:

График спреда находится ниже скользящей на определенную величину, указываемую в настройках советника
К примеру, указана величина раздвижки равная 60. Соответственно, если цена скользящей минус цена спреда равняется или больше 60, то советник совершает сделки. На первом графике одновременно покупаем, а на втором продаем.

Продажа спреда:

График спреда выше скользящей на указанную в параметрах величину раздвижки. На первом графике продаем, на втором покупаем.

Закрытие:

1. При касании или пересечении спреда со скользящей пара сделок одновременно закрывается.

2. Если убыток по паре достиг величины, указанной в параметрах советника, то сделки закрываются и следующие должны совершаться только после касания спреда скользящей и соблюдении вышеперечисленных условий на вход.

Параметры, которые должны быть в советнике:

Symbol1
Symbol2
mass_of_symbol1
mass_of_symbol2
SMA
Lot1
Lot2
Величина раздвижки
Размер убытка, при котором советник должен закрыть пару сделок.

Пример сделки. Устанавливаем раздвижку 140.

реализовывал парную торговлю на двух разных тикерах, есть один момент, в одной копии терминала МТ5, на бирже можно торговать только одну выбранную секцию - фондовая, срочная или валютная, с последней не уверен т.к. ее не торговал ни разу

если это для форекс-кухонь то вообще нет ни каких ограничений и проблем

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

 
Konstantin:

реализовывал парную торговлю на двух разных тикерах, есть один момент, в одной копии терминала МТ5, на бирже можно торговать только одну выбранную секцию - фондовая, срочная или валютная, с последней не уверен т.к. ее не торговал ни разу

если это для форекс-кухонь то вообще нет ни каких ограничений и проблем

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


Мне нужно для срочного рынка. Но программер в любом случае писал мне робота, проверяя его работу на форексе. Говорит, что МТ5 имеет баги, а советник написан правильно. Используемый индикатор спреда показывает нормальные данные, а в советнике он показывает ерунду. Как я понимаю, есть проблемы с синхронизацией по времени свечей на двух инструментах. Что-то не верю я, что нельзя написать рабочий советник для такой простой стратегии.
 
Alex:

Мне нужно для срочного рынка. Но программер в любом случае писал мне робота, проверяя его работу на форексе. Говорит, что МТ5 имеет баги, а советник написан правильно. Используемый индикатор спреда показывает нормальные данные, а в советнике он показывает ерунду. Как я понимаю, есть проблемы с синхронизацией по времени свечей на двух инструментах. Что-то не верю я, что нельзя написать рабочий советник для такой простой стратегии.


Для начала нужно в корне менять индикатор. Ведь этот индикатор делает чудовищные пересчёты на всю доступную историю:

   if(prev_calculated<rates_total)
     {
      for(i=0;i<rates_total;i++)
        {
         CopyRates(symbol1,0,time[i],1,rates1);
         CopyRates(symbol2,0,time[i],1,rates2);
         ind1[i]=mass_of_symbol1*rates1[0].close-mass_of_symbol2*rates2[0].close;
        }
     }

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


А этот расчёт на каждом тике:

   for(i=0;i<Bars(Symbol(),Period())-maperiod;i++)
   {
      double sum=0;
      for(int k=0;k<maperiod;k++)
         sum=sum+ind1[i+k];
      sma[i]=sum/maperiod;
   }

- это тест не стойкость термопасты на процессоре? Если баров 10 000 000 (десять миллионов) - и на каждом тике лупить от бара "0" (самый правый бар на графике) до 10 000 000 (десять миллионов) минус период машки - термопаста на процессоре точно потечёт. Или ОЗУ не хватит. Или компьютер хватит "Кондратий".

 
Alex:

Мне нужно для срочного рынка. Но программер в любом случае писал мне робота, проверяя его работу на форексе. Говорит, что МТ5 имеет баги, а советник написан правильно. Используемый индикатор спреда показывает нормальные данные, а в советнике он показывает ерунду. Как я понимаю, есть проблемы с синхронизацией по времени свечей на двух инструментах. Что-то не верю я, что нельзя написать рабочий советник для такой простой стратегии.
еще раз - нет ни каких проблем в МТ5, реализовывал парную торговлю коинтеграции где расчет для получения сигнала сам по себе ресурсоемкий, плюс ко всему нужно было обсчитывать порядка 702 пар тикеров в момент времени, МТ5 с этой проблемой справляется прекрасно, замерял скорость расчета на чистом С++, она не сильно отличается, а синхронизацией по времени баров так вообще нет ни каких проблем, как вариант ищите другого программиста ))
 
Vladimir Karputov:


Для начала нужно в корне менять индикатор. Ведь этот индикатор делает чудовищные пересчёты на всю доступную историю:

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


А этот расчёт на каждом тике:

- это тест не стойкость термопасты на процессоре? Если баров 10 000 000 (десять миллионов) - и на каждом тике лупить от бара "0" (самый правый бар на графике) до 10 000 000 (десять миллионов) минус период машки - термопаста на процессоре точно потечёт. Или ОЗУ не хватит. Или компьютер хватит "Кондратий".

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

Спасибо за ответы и некоторые идеи. Это поможет точнее составить ТЗ для заказа. 

Сам я недавно начал учить MQL5. Надеюсь освою. ))

Еще пара вопросов:

1. Сколько может стоить разработка такого советника?

2. Работаю через брокера "Открытие". Он в MT5 в период клиринга закрывает и открывает сделку. Этот момент как-то нужно учитывать при написании советника?

 
Alex:

Мне нужно для срочного рынка. Но программер в любом случае писал мне робота, проверяя его работу на форексе. Говорит, что МТ5 имеет баги, а советник написан правильно. Используемый индикатор спреда показывает нормальные данные, а в советнике он показывает ерунду. Как я понимаю, есть проблемы с синхронизацией по времени свечей на двух инструментах. Что-то не верю я, что нельзя написать рабочий советник для такой простой стратегии.
А в чем баги-то, конкретнее можно выяснить ?
 
George Merts:
А в чем баги-то, конкретнее можно выяснить ?

Он написал индикатор спреда и советник с использованием этого индикатора. В результате он показывает всякую ерунду, открывает сделки где попало. 
Файлы:
Pair.mq5  9 kb
Spread.mq5  4 kb
 
George Merts:
А в чем баги-то, конкретнее можно выяснить ?


Потом я сам нашел индикатор спреда, который нормально работает и попросил снова попробовать сделать советник. Индикатор называется spread_of_symbols (только в него добавлена скользящая).

Тогда программер сказал "Увы ошибки терминала никуда не делись. Я сделал индикатор ризницы спреда и скользящей. Он показывает всякую ерунду. Поэтому советник не получиться. Вот индикатор и скриншот."

Файлы:
 
Alex:

Он написал индикатор спреда и советник с использованием этого индикатора. В результате он показывает всякую ерунду, открывает сделки где попало. 

Я не увидел там "багов МТ5". Сильно не проверял, выше Владимир вам верно отметил недостатки индикатора, но, на первый взгляд, индикатор должен с горем пополам работать.

Если советник на его основе не работает - значит, проблема, скорее всего, в том, что индикатор неправильно используется. Порядок использования индикаторов в МТ4 и МТ5 заметно разный, понятно, что если пытаться пользоваться индикатором МТ5 так, как привык к МТ4 - появятся "баги МТ5".  Но программисту следовало бы изучить, как работают индикаторы МТ5.

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

Вам же - рекомендую обратиться во Фриланс. МТ5 - активно развивается, и программер, который не хочет его осваивать - не имеет перспектив.

Причина обращения: