Сейчас языки стали очень близкими и в MQL4 перекочевало множество более эффективных функций из MQL5. Поэтому гораздо лучше начать писать на MQL5, а уже потом с мелкими переделками портировать на MQL4.
Если же писать на MQL4 с старом стиле с использованием устаревших/несовместимых функций, то потом переделка на MQL5 будет мучительной.
Как раз буквально на днях переписывал с MQL5 на MQL4 один проект, в котором есть эксперт и индикаторы. В эксперте в основном только торговые функции нужно было переписать. Основная структура осталась без изменений. В индикаторах тоже минимальные изменения. В общем, порадовал новый MQL4.
На мой взгляд, код надо писать сразу на оба терминала. С помощью директив #ifdef прекрасно пишутся переносимые библиотеки, которые легко встраиваются на как в MQ4 так и в MQ5 файлы. Получается, что в файлах самих индикаторов или советников - только короткие шаблоны, вызывающие нужные классы, а основная функциональность - вся в переносимой библиотеке, которая годится для обоих платформ.
Решение не просто некрасивое, а ужасное.
Сейчас языки стали очень близкими и в MQL4 перекочевало множество более эффективных функций из MQL5. Поэтому гораздо лучше начать писать на MQL5, а уже потом с мелкими переделками портировать на MQL4.
Если же писать на MQL4 с старом стиле с использованием устаревших/несовместимых функций, то потом переделка на MQL5 будет мучительной.