Обсуждение статьи "Библиотека для простого и быстрого создания программ для MetaTrader (Часть X): Совместимость с MQL4 - События открытия позиции и активации отложенных ордеров"

 

Опубликована статья Библиотека для простого и быстрого создания программ для MetaTrader (Часть X): Совместимость с MQL4 - События открытия позиции и активации отложенных ордеров:

В предыдущих статьях мы начали создавать большую кроссплатформенную библиотеку, целью которой является упростить написания программ для платформы MetaTrader 5 и MetaTrader 4. В девятой части начали дорабатывать классы библиотеки для работы в MQL4. В данной статье продолжим доработку библиотеки с целью полной её совместимости с MQL4.

Тестирование

Проверим внесённые изменения. Скомпилируем советник TestDoEasyPart10.mq4, запустим его в тестере, откроем-закроем позиции, установим отложенные ордера и дождёмся активации одного из них, а также проверим выставление стоп-уровней и работу тралов (модификация позиций и отложенных ордеров). Все события, которые библиотека уже "видит" для MQL4, будут отображены в журнале тестера:


Если внимательно понаблюдать за журналом тестера, то видно, что закрытие позиций библиотека ещё не видит. Но при срабатывании отложенного ордера BuyLimit #3 в журнале видим запись о том, что активирован отложенный ордер [BuyLimit #3], породив позицию Buy #3 — события активации отложенных ордеров теперь библиотека видит, и к тому же знает от какого ордера произошла позиция. Так же можно заметить незначительное упущение в функции модификации — цвет значка модифицированного трейлингом отложенного ордера BuyStop #1 меняется на красный. Но все события модификации ордеров и позиций библиотека видит.

Автор: Artyom Trishkin

 

В MT4 есть баг удаляющий всё, включая HIDDEN объекты (чего имхо быть не должно) нажатием клавиши ← Backspace

Т. о. зажав ← Backspace можно легко удалить весь ваш интерфейс.

В общем в вашем MT4 коде не хватает реакции на удаление элементов управления для их воссоздания.

 
Andrey Voytenko:

В MT4 есть баг удаляющий всё, включая HIDDEN объекты (чего имхо быть не должно) нажатием клавиши ← Backspace

Т. о. зажав ← Backspace можно легко удалить весь ваш интерфейс.

В общем в вашем MT4 коде не хватает реакции на удаление элементов управления для их воссоздания.

Это не элементы управления. Это тестовые кнопочки. Графическая оболочка библиотеки будет. Позже. Спасибо за предупреждение.
 

Trade.mqh делали рабочим для MT4.

Готовые советники из Мастера MQL5 работают в MetaTrader 4
Готовые советники из Мастера MQL5 работают в MetaTrader 4
  • www.mql5.com
Клиентские терминалы MetaTrader 4 и MetaTrader 5 предоставляют своим пользователям возможность легко создавать прототипы программ на языке MQL с помощью встроенного Мастера (MQL Wizard). Мастера обоих версий терминалов очень похожи, но все же имеют одно важное отличие. В Мастере MetaTrader 5 есть пункт генерации готовых советников, а в...
 
Предлагаю сделать 
#ifdef __MQL5__
  #define __MQL5_NEW__
#else // __MQL5__
  #define __MQL4_NEW__
#endif // __MQL5__
в самом начале библы. И все условия переделать на New-вариант. Тогда будет возможность запустить в MT5 mt4-вариант библиотеки, а в MT4 - mt5-вариант библиотеки.
 
fxsaber:
Предлагаю сделать в самом начале библы. И все условия переделать на New-вариант. Тогда будет возможность запустить в MT5 mt4-вариант библиотеки, а в MT4 - mt5-вариант библиотеки.
Так вариант-то библиотеки и так один
 
Artyom Trishkin:
Так вариант-то библиотеки и так один

Хотелось бы, чтобы можно было MT4-логику библиотеки запустить в MT5.

 
fxsaber:

Хотелось бы, чтобы можно было MT4-логику библиотеки запустить в MT5.

Не понял предложения по причине, что логика одинакова для обеих платформ. Реализация чуть различается.
 
Artyom Trishkin:
Не понял предложения по причине, что логика одинакова для обеих платформ. Реализация чуть различается.

Перед Вашей библиотекой подключаю MT4Orders. И хочу, чтобы в Вашей библиотеке был задействован MT4-вариант.

Есть два варианта решения этого

  1. Делаю замену __MQLX__ во всех исходниках Вашей библиотеки. Т.е. меняю саму библу, пусть и полуавтоматом.
  2. Вы создаете макросы, как показал выше. Тогда для включения MT4-логики в MT5 не требуется менять ничего в Вашей библиотеке.


Думаю, Вам самим будет интересно сравнить Вашу библиотеку исключительно в MT5, но в двух режимах логики.


ЗЫ Еще хочу иметь возможность запускать Вашу библиотеку в Virtual. Для этого нужно иметь доступ к MT4-style части библы.

 
fxsaber:

Перед Вашей библиотекой подключаю MT4Orders. И хочу, чтобы в Вашей библиотеке был задействован MT4-вариант.

Есть два варианта решения этого

  1. Делаю замену __MQLX__ во всех исходниках Вашей библиотеки. Т.е. меняю саму библу, пусть и полуавтоматом.
  2. Вы создаете макросы, как показал выше. Тогда для включения MT4-логики в MT5 не требуется менять ничего в Вашей библиотеке.


Думаю, Вам самим будет интересно сравнить Вашу библиотеку исключительно в MT5, но в двух режимах логики.


ЗЫ Еще хочу иметь возможность запускать Вашу библиотеку в Virtual. Для этого нужно иметь доступ к MT4-style части библы.

Можно сиё обсудить. Но в личке. А пока библиотека будет развиваться в том же ключе - одна логика для обеих платформ. Библиотека задумывалась как самостоятельная единица - одна на обе платформы. С одной и той же логикой, не противоречащей ни MQL4-style, ни MQL5-style - всё общее.

ЗЫ. Так и не понял, что имеется в виду под MQL4-style частью библиотеки. Там нет разделения же. Покажите место в библиотеке, о котором говорится.

 
Artyom Trishkin:

Можно сиё обсудить. Но в личке. А пока библиотека будет развиваться в том же ключе - одна логика для обеих платформ. Библиотека задумывалась как самостоятельная единица - одна на обе платформы. С одной и той же логикой, не противоречащей ни MQL4-style, ни MQL5-style - всё общее.

В ЛС отправил вариант Вашей библиотеки, которая работает в MT5 через Вами прописанную MT4-style-логику.

ЗЫ. Так и не понял, что имеется в виду под MQL4-style частью библиотеки. Там нет разделения же. Покажите место в библиотеке, о котором говорится.

Дело в том, что у кроссплатформенных библиотек вероятность работоспособности MQL4-style-части библиотеки гораздо выше, чем MQL5-style. Поэтому при использовании кроссплафторменных библиотек предпочитаю использовать в MT5 их MQL4-style-логику. Так надежней гораздо в MT5 получается.


Думаю, что в MT5 Ваша MQL5-style логика потребует еще долгого выявления багов, а MQL4-style если и будет иметь баги, то минимальное количество и не критические.

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