Совместимость 4ки и 5ки. Быстрый переход - страница 4

 
o_O:

Я про это и говорю - перегрузка функции iCustom  + обвертка контроля в класс решает эту проблему.

мт4 код не надо будет переписывать. достаточно подключить mqh

iCustom является функцией с формальными параметрами, принимающая произвольное количество и произвольные типы аргументов. На уровне пользовательских функций в MQL, создать такой аналог невозможно. Вторая трудность - пересечение области видимости: iCustom в MetaTrader5 уже определена и нельзя так вот просто написать свою iCustom, хотя и можно создать iCustom, принимающую другой набор параметров.
 
o_O:

мт4 код не надо будет переписывать. достаточно подключить mqh

Вот именно об этом я и говорю. Должно же быть решение, я прям как чувствовал.

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

 
Vladimir Gribachev:

Вот именно об этом я и говорю. Должно же быть решение, я прям как чувствовал.

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

Решение можно сделать. Могу оформить в виде статьи. В начало старого кода потребуется добавить строку #include, а также чуть подправить вызов iCustom, если  он используется в советнике. Если решение нормальное, могу заняться.
 
o_O:
благодаря обвертке в виде класса - обращаться к индикаторам в стиле МТ4 можно.
При каждом обращении будет выполняться проверка на существование хэндла (загружен ли индикатор)?
 
Vasiliy Sokolov:
Решение можно сделать. Могу оформить в виде статьи. В начало старого кода потребуется добавить строку #include, а также чуть подправить вызов iCustom, если  он используется в советнике. Если решение нормальное, могу заняться.
Насчет "чуть поправить". В МТ4 индикатор гарантированно возвращает значение, а в МТ5 может быть ошибка копирования буфера, поэтому требуется проверка, следовательно требуется доработка алгоритма. К тому же, если в этой же функции будет загрузка индикатора...  
 
Vladimir Gribachev:

Вот именно об этом я и говорю. Должно же быть решение, я прям как чувствовал.

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

Активисты МТ4 с самого первого момента появления МТ5 сидели и ломали голову над этой задачей... годами.
 
Vasiliy Sokolov:
Решение можно сделать. Могу оформить в виде статьи. В начало старого кода потребуется добавить строку #include, а также чуть подправить вызов iCustom, если  он используется в советнике. Если решение нормальное, могу заняться.
Та было бы просто супер. Облегчили бы жизнь многим.
 
Vladimir Gribachev:
Та было бы просто супер.
Если дело в индикаторах - то их значительно меньше советников, и потом большинство похожи - можно обращаться к пятерочным...можно как-то мт4 индюки как-то просто подогнать к мт5...Googl языки уже переводит с десятками тысяч слов и правил...))
 
Dmitry Fedoseev:
При каждом обращении будет выполняться проверка на существование хэндла (загружен ли индикатор)?
Естественно. Замечу что iCustom в МТ4 делает точно такую же проверку "за кулисами", что бы избежать полной перезагрузки индикатора на каждом новом баре. Сама проверка является атомарной операцией типа if(m_handle != INVALID_HANDLE) и занимает пренебрежительно мало времени.
 
Dmitry Fedoseev:
Насчет "чуть поправить". В МТ4 индикатор гарантированно возвращает значение, а в МТ5 может быть ошибка копирования буфера, поэтому требуется проверка, следовательно требуется доработка алгоритма. К тому же, если в этой же функции будет загрузка индикатора...  
Переопределенная iCustom будет точно также гарантировано возвращать значение. При ошибке получения данных будет возвращаться EMPTY_VALUE.
Причина обращения: