Библиотеки: MT4Orders

 

MT4Orders:

Параллельное использование ордерных систем MetaTrader 4 и MetaTrader 5. Данная библиотека позволяет работать с ордерами в MQL5 (MT5-hedge) точно так же, как в MQL4.

Автор: fxsaber

 
Что-то невероятное  - спасибо большое...лучше всего в наверно в МТ5-хедж использовать... да, мало трейдеров еще в мт5...))
 
Видя немалое количество Ордерных Языковых Систем (NinjaTrader, TradingStation, MetaStock, WealthLab, Dukascopy JForex, FXCM ForexConnect, LMAX API, IB TWS, MT4/5 и т.д.), пришел к однозначному для себя выводу: эталон ОЯС - MT4. Это самая удобная ОЯС, шедевр!

Если кому-то надо написать советник под другую ОЯС, рекомендую не наступать на грабли и сразу начать писать подобный переходник на MT4-ОЯС. Лучше в начале потратить время, но потом с лихвой окупить его при написании, отладке и тестировании советников.

Из политкорректности продолжу говорить только о Metatrader. Кто-то скажет, что надо просто привыкнуть к MT5-ОЯС. Здесь невозможно не согласиться. Привыкнуть можно ко всему. Говоря про удобство ОЯС, имелось в виду несколько иное.

Когда в руки попадается MQ4-советник, то довольно легко понять по коду, что и где он делает. Внести изменения. Помочь человеку, если он спрашивает по коду и т.п. Так, например, обстоят дела практически с любым советником из кодобазы. И причина не в том, что почти все они написаны в процедурном стиле (ООП MQ4-советники, кстати, осознаются легче).

Когда же берете MQ5-советник (см. небогатую кодобазу), то понимание его частей торговых алгоритмов требует более серьезного умственного напряжения. Я бы даже сказал, ощущается дискомфорт. И именно с ОЯС. Понимание всегда приходит, но требуется затратить гораздо больше времени и сил.

Безусловно, если читать/править/дописывать исключительно свой код, то практически никаких существенных различий между MT4 и MT5-ОЯС ощущаться не будет: написали свою универсальную библиотеку и делов. Но это только для себя любимого. Стоит столкнуться с чужим кодом - холодный душ обеспечен. И стандартная библиотека от разработчиков, к сожалению, не помогает выйти из дискомфортной зоны.

Из-за этого крайне сложно конструктивно обсуждать/дорабатывать совместно торговую идею на MQL5, как это давно практикуется в различных трейдерских сообществах на MQL4. И желание переходить на MT5 в этой связи не блещет мотивацией.

Хочется верить, что данная работа, как дополнение к MT5-Hedge, позволит, наконец, хорошим торговым идеям тестироваться (и обсуждаться) в сильном MT5-тестере и  значительно уменьшит разговоры про различия между MT4 и MT5. Позволит вернуть лидерство трейдерской составляющей советников в обсуждениях над техническо-программистской.

В защиту MT5-ОЯС хочется сказать, что эта ОЯС дает гораздо больше возможностей, чем MT4. Особенно это касается биржевого трейдинга. Но и на FOREX можно, например, через MT5-ОЯС получить немаловажную статистику качества исполнения отложенных ордеров. Поэтому золотой серединой удобства/возможностей является параллельное использование обеих ОЯС. Что и позволяет делать данная работа.

Сейчас сравнить MT-тестеры разных поколений очень просто -  один и тот же код (MQL4) будет запускаться на обоих. Не трудно будет заметить, что MT5-тестер обладает меньшей производительностью в одиночных прогонах. Лимитные ордера и TP-уровни в MT5-тестере исполняются с нереально высоким положительным проскальзыванием. Отсутствует возможность тестирования на своей истории и кое-что еще (местами существенное). Но это, хочется верить, временные недоразумения. Есть и масса плюсов в виде Облака, встроенных реальных тиков, мультивалютности и некоторых других. И если Облако и реальные тики еще возможно эмулировать в старом тестере, то мультивалютность - однозначное преимущество нового.

В примере к описанию представлена, в частности, давно известная в определенных кругах тиковая торговая идея - Lucky (в первозданном виде). И если из-за неточности MT5-тестера с лимитными ордерами (build 1368) дать однозначную оценку этой системе нельзя даже в режиме "Каждый тик на основе реальных тиков". То простая по коду (благодаря MT4-ОЯС) мультивалютная идея в виде MQ4-советника Spreader (см. пример) обретает новую жизнь в MT5-тестере.

Многие старые идеи, которые раньше было тяжело/нельзя проверить в MT4-тестере, сейчас без труда возможно реанимировать и продуктивно исследовать почти в оригинальном исполнении.
Тестирование стратегий - Алгоритмический трейдинг, торговые роботы - Справка по MetaTrader 5
Тестирование стратегий - Алгоритмический трейдинг, торговые роботы - Справка по MetaTrader 5
  • www.metatrader5.com
Тестер стратегий позволяет тестировать и оптимизировать торговые стратегии ( советники ) перед началом использования их в реальной торговле. При...
 
Сергей Криушин:
Что-то невероятное  - спасибо большое...лучше всего в наверно в МТ5-хедж использовать... да, мало трейдеров еще в мт5...))
Вероятно, это для написания систем, которые будут компилироваться в четверке и пятерке без изменений. 
 
С историей же не работает. Так-что, чудесного не много.
 
Dmitry Fedoseev:
С историей же не работает. Так-что, чудесного не много.
С благодарностью приму подробности от Вас. Без них воспроизвести "не работу" не могу.
 
fxsaber:

В защиту MT5-ОЯС хочется сказать, что эта ОЯС дает гораздо больше возможностей, чем MT4. Особенно это касается биржевого трейдинга. Но и на FOREX можно, например, через MT5-ОЯС получить немаловажную статистику качества исполнения отложенных ордеров.

https://www.mql5.com/ru/code/16134

SlipPage
SlipPage
  • 2016.08.25
  • fxsaber
  • www.mql5.com
Расчет проскальзываний совершенных сделок в валюте счета.
 
fxsaber:
С благодарностью приму подробности от Вас. Без них воспроизвести "не работу" не могу.
А как вы "пытались" ее "воспроизводить"?
 
Dmitry Fedoseev:
А как вы "пытались" ее "воспроизводить"?

Запускал множество MT4-скриптов/советников и анализировал корректность их работы.

Также создавал свои тесты по ходу написания библиотеки.

 
fxsaber:

Запускал множество MT4-скриптов/советников и анализировал корректность их работы.

Также создавал свои тесты по ходу написания библиотеки.

Какие же были тесты касающиеся работы с историей?
 

Кое какие рудименты по работе с историей обнаруживаются:

   static int MT4OrdersHistoryTotal(void)
     {
      int Res=0;

      if(::HistorySelect(0,::TimeCurrent()))
        {
         const int TotalDeals=::HistoryDealsTotal();

         for(int i=0; i<TotalDeals; i++)
            if(MT4ORDERS::IsMT4Deal(::HistoryDealGetTicket(i)))
               Res++;

         const int TotalOrders=::HistoryOrdersTotal();

         for(int i=0; i<TotalOrders; i++)
            if(MT4ORDERS::IsMT4Order(::HistoryOrderGetTicket(i)))
               Res++;
        }

      return(Res);
     }

При каждом вызове OrdersHistoryTotal() выполняется пробежка трусцой по всей истории счета с кучей проверок.

Выделение в истории по индексу то же с пробежкой по всей истории.

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