Скачать MetaTrader 5

Как реализовать взаимодествие между двумя терминалами

Авторизуйтесь или зарегистрируйтесь, чтобы добавить комментарий
Денис
278
Денис  

Есть некая последовательность сделок советника:


В целом МО>0 (пока), но гораздо более интересные результаты получаются, если дождавшись одного лося на демо, пропускать на другом терминале 2 следующие сделки. Интересует чисто теоретически, как это можно реализовать, желательно без .dll.

Файлы:
Alexey Volchanskiy
17144
Alexey Volchanskiy  
sanctus:

Есть некая последовательность сделок советника:


В целом МО>0 (пока), но гораздо более интересные результаты получаются, если дождавшись одного лося на демо, пропускать на другом терминале 2 следующие сделки. Интересует чисто теоретически, как это можно реализовать, желательно без .dll.

А чем так пугает ДЛЛ? Я бы сделал ДЛЛ, в ней открывать memory mapped file и писать туда команды пропуска, как в обычный массив.

Если без ДЛЛ, то в принципе, можно попробовать добавить функцию CreateMutex в WinUser32.mqh и взводить мьютекс, если надо пропускать сделки, а на другом терминале смотреть, есть ли мбютекс или нет.

Можно сообщения посылать через PostMessage и принимать через PeekMessage

---------------------------------------

Бесплатный семинар по цифровой обработке сигналов для трейдеров

Rustamzhan Salidzhanov
7689
Rustamzhan Salidzhanov  
Харош совать рекламу
Mikhail Dovbakh
4434
Mikhail Dovbakh  
xrust:
Харош совать рекламу

не увидел рекламы... Просто сцылко.

Инфо полезно для ищуших.

Если нет нужды знать - не нужно хаять!

;)

Evgeniy Trofimov
2373
Evgeniy Trofimov  

Можно взаимодействовать так: https://www.mql5.com/ru/code/9477

А можно вести параллельно виртуальные торги, воспользовавшись разработками, которые исследованы в статье: https://www.mql5.com/ru/articles/1578

Денис
278
Денис  
Спасибо, последний вариант самый интересный.
Vadim Zhunko
5226
Vadim Zhunko  
Вот ещё библиотека.
Alexey Volchanskiy
17144
Alexey Volchanskiy  
sanctus:
Спасибо, последний вариант самый интересный.
Это точно, оптимизация должна проводится на лету, у меня так и сделано, только на C#. Слишком быстро сейчас меняется рынок.
Alexey Volchanskiy
17144
Alexey Volchanskiy  
Zhunko:
Вот ещё библиотека.

Я почитал, что там память отжирается. Небольшой коммент.

Тут дело в том, что если вы выделяете под file mapping например 500 Мб памяти, то она выделяется в вирт. памяти по мере необходимости блоками по 4 Кб, а не сразу все 500 Мб. Может это вы и имели в виду, говоря, что память отжирается? То есть вы запросили 500 Мб и начали заполнять ее чем-то, например как массив. В Диспетчере задач будет видно, что потребление памяти программой растет скачками по 4 Кб.

Дело в том, что винда всегда затирает выделяемую память нулями, это делается для того, чтобы процесс не мог прочитать незатертые данные, которые могли остаться от другого процесса. Так что диспетчеру памяти Windows выгоднее выделять виртуалку по мере реальной необходимости, тем более, что все равно эти 500 Мб наверняка будут реально физически фрагментированы на много кусочков в ОЗУ.

Кстати, попробуйте на обычном С++ создать обычный массив 500 Мб (int arr[500*1024*1024/4]) и начать заполнять его, вы увидите ту же картину, память реально выделяется по мере заполнения массива кусками по 4 Кб.

То же и под .NET

Авторизуйтесь или зарегистрируйтесь, чтобы добавить комментарий