Буквально, скопировал самый верхний файл, который включает остальные, заменил в нём только magic'и роботов (их там 6 штук), скомпилировал.
Поставил (ночью, когда нет торгов!) на два графика (оба H1) одного инструмента (GOLD-12.24) внутри одного MT5.
В 10 утра открываются торги - роботы из одного советника открывают позы в 10:11:10, из другого - в 10:11:32 (все роботы тестовые, позы на самом деле не открываются, только в логи пишутся).
Прикол в том, что есть ещё и третий советник, с тем же алгоритмом, но с немного переделанной структурой классов.И его роботы тоже открыли позы на GOLD-12.24, H1 в 10:11:10, с отличием в 2-3 мс (GetTickCount64() в логах) от роботов первого.
Не могу сообразить, в какую сторону и как именно копать.
крутая заявочка на арбитраж меж роботами ;)
а если серьезно, пробуйте в разных терминалах
Не могу сообразить, в какую сторону и как именно копать.
Буквально, скопировал самый верхний файл, который включает остальные, заменил в нём только magic'и роботов (их там 6 штук), скомпилировал.
Поставил (ночью, когда нет торгов!) на два графика (оба H1) одного инструмента (GOLD-12.24) внутри одного MT5.
В 10 утра открываются торги - роботы из одного советника открывают позы в 10:11:10, из другого - в 10:11:32 (все роботы тестовые, позы на самом деле не открываются, только в логи пишутся).
Прикол в том, что есть ещё и третий советник, с тем же алгоритмом, но с немного переделанной структурой классов.И его роботы тоже открыли позы на GOLD-12.24, H1 в 10:11:10, с отличием в 2-3 мс (GetTickCount64() в логах) от роботов первого.
Не могу сообразить, в какую сторону и как именно копать.
Возможно в включаемых файлах отсутствует защита от повторного включения.
Посмотри пример условной компиляции как это делается.
Возможно в включаемых файлах отсутствует защита от повторного включения.
Посмотри на примере плюсов как это делается.
Если бы у автора было взаимное включение двумя файлами друг друга, то код не скомпилировался бы.
Не могу представить себе ни одной ситуации, которая в достаточной степени обосновала бы необходимость 2х заголовочных файлов, которые включают друг друга.
Если бы у автора было взаимное включение двумя файлами друг друга, то код не скомпилировался бы.
Не могу представить себе ни одной ситуации, которая в достаточной степени обосновала бы необходимость 2х заголовочных файлов, которые включают друг друга.
#include <Trade\Trade.mqh> #include <Trade\Trade.mqh>
Как пример, компилируется без ошибок.
Я говорю о взаимном включении, пример которого обсуждался на видео. Когда Bar.mqh включает Foo.mqh, а Foo.mqh включает Bar.mqh. В таком случае должна быть ошибка компиляции типа "function already defined". Если ошибок компиляции нет, то компилятор смог обеспечить только единократное включение каждого файла в итоговый код.
Как пример, компилируется без ошибок.
Trade.mqh будет включен один раз, а не 2.
[edit]
Перечеркнутый текст - мое ошибочное утверждение.
Я говорю о взаимном включении, пример которого обсуждался на видео. Когда Bar.mqh включает Foo.mqh, а Foo.mqh включает Bar.mqh. В таком случае должна быть ошибка компиляции типа "function already defined". Если ошибок компиляции нет, то компилятор смог обеспечить только единократное включение каждого файла в итоговый код.
Вот в этом я совсем не уверен, что именно так.
В таком случае должна быть ошибка компиляции типа "function already defined"
Я ошибся, пардон. Только что проверил, ошибки компиляции нет ни для mql4, ни для mql5.
Я когда-то проводил тесты со взаимным вклоючением файлов и были ошибки компиляции. Либо MQ что-то поменяли, либо те ошибки были связанны с чем-то другим, я не помню точно, это давно было.

- Бесплатные приложения для трейдинга
- 8 000+ сигналов для копирования
- Экономические новости для анализа финансовых рынков
Вы принимаете политику сайта и условия использования
Буквально, скопировал самый верхний файл, который включает остальные, заменил в нём только magic'и роботов (их там 6 штук), скомпилировал.
Поставил (ночью, когда нет торгов!) на два графика (оба H1) одного инструмента (GOLD-12.24) внутри одного MT5.
В 10 утра открываются торги - роботы из одного советника открывают позы в 10:11:10, из другого - в 10:11:32 (все роботы тестовые, позы на самом деле не открываются, только в логи пишутся).
Прикол в том, что есть ещё и третий советник, с тем же алгоритмом, но с немного переделанной структурой классов.И его роботы тоже открыли позы на GOLD-12.24, H1 в 10:11:10, с отличием в 2-3 мс (GetTickCount64() в логах) от роботов первого.
Не могу сообразить, в какую сторону и как именно копать.