(Кроссплатформенность) Вопрос по компиляции файлов для обоих MT - страница 2

 
Vitalii Ananev:

Вы имеете в виду опцию выбора платформы в самом компиляторе? Такого не предусмотрено. Расширение файла указывает для какой платформы необходимо компилировать код. В mql (хоть и используется один и тот же компилятор) нет кроссплатформенности в классическом его понимание. Кроссплатформенность достигается путем подключения дополнительных библиотек реализующих такой функционал. 

Все понятно. Теперь задумался,стоит ли тогда заморачиваться с этой кроссплатформенностью? Если все придется менять расширение файла.

 
Pavel Verveyko:
всё равно приходится проверять код в каждой платформе.. бывают нюансы. отличия есть 4/5. 
простые примеры: есть функции которых нет в 4, различия в работе с данными индикаторов и таймсериями, направления массивов в разную сторону. и это только то что вспоминается..

Это все понятно,что придется все проверять!) Я спрашивал про то,как написать советник чтоб не менять расширение файла при установке его в тот,или иной терминал.

 
Monter10000:

Все понятно. Теперь задумался,стоит ли тогда заморачиваться с этой кроссплатформенностью? Если все придется менять расширение файла.

Ничего не нужно менять, создаёте заголовочные файлы mq4, mq5 вот такого формата

//+------------------------------------------------------------------+
//|                                                   **********.mq4 |
//|                                Alexey Valeev mail: alex-w-@bk.ru |
//|                            https://www.mql5.com/ru/users/PozitiF |
//+------------------------------------------------------------------+
#include "Settings.mqh"

#property description DESCRIPTION_L1
#property description DESCRIPTION_L2

#property copyright PROGRAM_COPYRIGHT
#property link      PROGRAM_LINK
#property version   PROGRAM_VERSION
#property strict
//===================== Подключаемые библиотеки ======================
#include "lib\\Main.mqh"
//+------------------------------------------------------------------+
Где  в файле Main.mqh основное тело программы.
 
В новом МТ5 нельзя компилировать MQL4 код, как раньше. А в МТ4 нельзя компилировать код MQL5. Поэтому, кроссплатформенный код отменяется.
 
Pavel Verveyko:
 и это только то что вспоминается..

StringConcatenate() - только вот правил библиотеку MQL4  для использования в 5-ке


по сабжу есть директивы прекомпилятора __MQL5__ и __MQL4__ 

оборачивайте несовместимые участки кода с помощью #ifdef

но поздновато спохватились, разработчики вот только в новом билде МТ5 отменили компиляцию проектов в МЕ5 под МТ4, теперь все равно придется 2 МЕ использовать, это уже не удобно, возможно это еще один из способов двигать переход пользователей на МТ5 )))

 
Monter10000:

Все понятно. Теперь задумался,стоит ли тогда заморачиваться с этой кроссплатформенностью? Если все придется менять расширение файла.

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

 
Alexey Valeev:

Ничего не нужно менять, создаёте заголовочные файлы mt4, mt5 вот такого формата

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

 
Vitalii Ananev:

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

Во как!! Тогда может легче вообще mt4 забросить,и писать чисто под mt5 ?)

 
Igor Makanu:

StringConcatenate() - только вот правил библиотеку MQL4  для использования в 5-ке


по сабжу есть директивы прекомпилятора __MQL5__ и __MQL4__ 

оборачивайте несовместимые участки кода с помощью #ifdef

но поздновато спохватились, разработчики вот только в новом билде МТ5 отменили компиляцию проектов в МЕ5 под МТ4, теперь все равно придется 2 МЕ использовать, это уже не удобно, возможно это еще один из способов двигать переход пользователей на МТ5 )))

Так почитав ответы форумчан, склоняюсь к тому,что нужно просто писать под mt5!))

 
Monter10000:

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

Не нужно копировать. У меня каталог где хранятся мои проекты расположен отдельно на диске, не в каталоге терминалов. Далее я софтиной Link Shell Extension создаю символические ссылки в папках терминалов. В итоге у меня в директориях MT4 и MT5 терминалов как бы оказывается одна и та же рабочая папка. Неимоверно удобно.
Документация по MQL5: Константы, перечисления и структуры / Состояние окружения / Состояние клиентского терминала
Документация по MQL5: Константы, перечисления и структуры / Состояние окружения / Состояние клиентского терминала
  • www.mql5.com
Идентификаторы для получения информации о клиентском терминале функциями TerminalInfoInteger() и TerminalInfoString(). В качестве параметра эти функции принимают значения из перечислений ENUM_TERMINAL_INFO_INTEGER и ENUM_TERMINAL_INFO_STRING соответственно. Знание этого параметра позволяет задавать размеры графических объектов таким образом...
Причина обращения: