суббота, 15 июня 2013 г.

Не компилируется корректный MQL4 код? Советник, индикатор, скрипт, библиотека?

не компилируется

Возможно, есть простое решение.

Вероятно, дело в 500 билде терминала MetaTrader 4, который выпустила в релиз компания MetaQuotes. Этот билд, наверное, самый скандальный за последние несколько лет.
Полный (почти) список обновлений можно посмотреть в официальной ветке объявления билда на форуме MQL4 -- http://forum.mql4.com/ru/55511
Про то, что из-за довольно масштабных изменений появились новые баги, говорить не будем. Про то, что торговля мышкой оказалась недоделанной и ущербной без возможности отменить, тоже.

Однако, как оказалось, есть еще изменения, отсутствующие в списке.

Во-первых, перестали (некоторые частично) работать многие МТ4 сервисы, например у одного из самых популярных сервисов мониторинга -- Myfxbook -- перестала обновляться информация у счетов с autoupdate типом обновления. Частично перестал работать известный сервис ZuluTrade, а также Tradency, Tradeo и ряд других компаний. По заявлениям компании MetaQuotes, эти компании использовали для работы некоторых своих инструментов взломанный сетевой протокол общения терминала с серверной частью, чем напрямую нарушали пользовательское соглашение использования терминала. В 500 билде были приняты меры по пресечению работы таких сервисов.

Во-вторых, 500 билд откатить нельзя, т.к. обновление версий в терминале стало принудительным, замечу, без уведомления пользователей. Можно разве что шаманить с системой автоапдейта терминала.

В-третьих, введено подобие защиты против декомпилированного кода. Честно говоря, решение очень неоднозначное и по полезности, и по эффективности. Большинство пострадавших -- новички и трейдеры-непрограммисты, значительная часть которых понятия не имеет про декомпиляторы. В то же время сами декомпиляторы практически не страдают. Масштаб трагедии будет еще больше, если вспомнить, что декомпилированный код присутствует даже в официальной базе кодов на официальном форуме в виде как частей, так и цельных кодов.
И совсем плохо, если ваш стиль именования переменных похож на стиль декомпилятора. Признаки: венгерская нотация, присутствие подчеркиваний в именах, наличие чисел.
Если ваш стиль имеет вышеперечисленные признаки, вы легко можете стать невинной жертвой борьбы компании MetaQuotes с пиратами.
К счастью, алгоритм довольно туп, поэтому победить проблему можно очень просто. Для этого надо всего лишь избавиться от подчеркиваний, например, заменить их на любую латинскую букву. Делается это за несколько секунд для любого файла в MetaEditor через диалог автозамены.

И это еще один камень в огород создателей сего непонятного алгоритма обнаружения "декомпилированного" кода, ибо он
1. Не работает, как надо, ибо кроме собственно декомпиля причисляет к оному дополнительно огромное количество кода.
2. Легко обходится, поэтому абсолютно не доставит проблем тем, кто постоянно работает с декомпилированным кодом.
3. Заточен под конкретный стиль именования, поэтому изменение стиля в декомпиляторах сведет в негатив тот мизерный положительный эффект, который эта самая защита приносит.

Надеюсь, разработчики одумаются и уберут эту защиту в следующих билдах.

3 комментария:

  1. Здравствуйте! Сталкнулся с этой проблемой(( Не могли бы на примере показать,как это делается? --Делается это за несколько секунд для любого файла в MetaEditor через диалог автозамены----

    ОтветитьУдалить
    Ответы
    1. Если не можете сделать это самостоятельно, найдите программиста, который согласится починить код.
      На самом деле, есть еще константы языка, типа OP_BUY, OP_SELL, их надо исключить при замене.

      Удалить
  2. Например:В MetaEditor ставите курсор в начало, выбираете Edit затем Replace, в первом поле вводите знак подчеркивания во втором допустим апостров или тильду.Нажимаете Replace All.Произойдет замена,затем опять в первом поле вводите
    свой знак на который вы заменили подчеркивание,а во второе опять подчеркивание,
    снова Replace All.По возможности убрать все ссылки на декомпиляцию типа /*
    Generated by EX4-TO-MQ4 decompiler V4.0.224.1 []
    Website: http://purebeam.biz
    E-mail : purebeam@gmail.com
    */,компилируете, должно работать.

    ОтветитьУдалить