Ошибки, баги, вопросы - страница 2445

 
fxsaber:

Нет, в opt попадает хэш именно ex5. По этой причине перекомпиляция сбрасывает кеш тестера.

Тогда разработчики не помогут, пишите свой анализатор кода.

 
fxsaber:

Нет, в opt попадает хэш именно ex5. По этой причине перекомпиляция сбрасывает кеш тестера.

Не совсем.

Не всякая перекомпиляция эксперта сбрасывает кеш тестера.

Если у эксперта есть зависимые компоненты: библиотеки, кастомные индикаторы и/или dll то к хешу эксперта подмешивается хеши компонентов.

Как считается хеш эксперта, где он хранится в эксперте - это один из технологических секретов.

Поэтому я сразу сказал Вам: "Нет"

 
fxsaber:

ну ведь, действительно:

  1. загоняем mql файл в uchar массив
  2. удаляем из него комментарии //... и  /* ... */
  3. удаляем все пробелы, табуляции,перевод строки, можно даже все скобки и кавычки 
  4. из оставшегося считаем хэш

В первом приближении уже будет работать вполне сносно.

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

 
Slava:

Как считается хеш эксперта, где он хранится в эксперте - это один из технологических секретов.

Поэтому я сразу сказал Вам: "Нет"

Дело в том, что не было просьбы давать MD5-хеш. Нужен любой хеш нативного кода. Например, сумма каждого третьего байта.

Если эта сумма отличается, то с огромное вероятностью, советник (логика - нативный код) изменился.


Т.е. ну совсем просто! Сейчас такого механизма нет, к сожалению.

 
Nikolai Semko:

Контролировать эти вещи это уже мега сложно. Все равно что написать свой линковщик.

Поэтому и завел речь о простом решении.

 

А вот по этой теме разработчики что-нибудь могут сказать?

https://smart-lab.ru/blog/535490.php

Черный вторник для одного трейдера в Открытии
Черный вторник для одного трейдера в Открытии
  • smart-lab.ru
Привет коллегам по цеху. Поднимите пожалуйста пост в топ, если не затруднит. Случилась одна неожиданная история, как говорится прилетело откуда не ждал. Сегодня ночью на NLMK-9.19 некто, пожелавший остаться неизвестным (на данный момент), слил или перелил 420000 рублей по четырем маркет сделкам 100,35,20,10 контрактов на счете в Открытии...
 
fxsaber:

Поэтому и завел речь о простом решении.

Ну тогда нужна грамотная аргументация для МQ.
Для чего это нужно? Как и в каких случаях это может расширить возможности  mql? А не только удовлетворение персонального каприза. 
Мне лично на данный момент не ясно зачем программе знать, что ее изменили. В каких задачах это может пригодиться? Если это для чего-то даже и нужно, то вполне годится вариант с получением хэша из mql-кода после удаления "лишнего". И это, действительно, займет не больше 20 строк кода.

Тем более,  даже если MQ пойдет на встречу и выдаст такой хэш для публичного использования, то он все равно изменение такого хэша не будет гарантией, что логика была изменена. Например при изменении последовательности чего-либо.

 

Случайно обновился - опять не работает - ошибка при компиляции:

#define MACRO1
#define MACRO2(x, y)    y
#define MACRO3          MACRO2(&, MACRO1)
class A {};
void f( A* ) { Print( 1 ); }
void f( A& ) { Print( 2 ); }
void OnStart()
{
        A a;
        f( MACRO3 a ); //Error: '&' - operand expected
}

А раньше (build 1961) все было нормально

 

И здесь тоже - сейчас (build 2025) ошибка:

#define MACRO1( x )
#define MACRO2          MACRO1( y ) void
#import "any.dll"
        MACRO2 f(); //Error: '(' - expressions are not allowed on a global scope
#import

А раньше (build 1961) - нормально было

 

помогите пжл решить проблемую. как сделать передачу нормальных символов вместо того что сейчас?


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