Обмен данными между советниками - страница 2

 
Ihor Herasko:

В 2011-ом году работало. Потом не проверял. По идее, с тех пор ничего кардинально не должно было измениться. Эмулировать нажатие нужно в окне чарта, не символа. Возможно, в этом загвоздка.

я и сейчас проверил, не видит сообщений именно от окон чарта

интересный способ обмена, но все равно нужно подтверждение обработки события ловить

ладно , в принципе мне хватает обмена с dll на C# через массивы

 
Ihor Herasko:

Если же нужно из DLL обратиться, то на чарте советника эмулируется нажатие клавиши. Тогда код обработчика будет такой:

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

Спасибо! С отправкой WM_KEYDOWN все в порядке, работает железно. Хотелось бы конечно EventChartCustom организовать из вне... видимо не судьба.

 
Igor Makanu:

в МТ5 такой код будет работать? проверяли?

Работает, проверил.

 
Igor Makanu:

я и сейчас проверил, не видит сообщений именно от окон чарта

В каком смысле: "от окон чарта"? Задача ведь передать информацию из DLL в советник. Чтобы это сделать, нужно дать знать советнику о необходимости обращения к DLL. Кодами эмулируемых клавиш передается указание на то, какую именно функцию DLL нужно вызвать. Ну а далее - дело техники. То есть не DLL ловит сообщения от советника, а наоборот. Непосредственная же передача информации осуществляется через функции DLL.

интересный способ обмена, но все равно нужно подтверждение обработки события ловить

Обращение от советника к DLL и является подтверждением получения сообщения.

 
Ihor Herasko:

В каком смысле: "от окон чарта"? Задача ведь передать информацию из DLL в советник. Чтобы это сделать, нужно дать знать советнику о необходимости обращения к DLL. Кодами эмулируемых клавиш передается указание на то, какую именно функцию DLL нужно вызвать. Ну а далее - дело техники. То есть не DLL ловит сообщения от советника, а наоборот. Непосредственная же передача информации осуществляется через функции DLL.

Обращение от советника к DLL и является подтверждением получения сообщения.


Sergey Zhilinskiy:

Работает, проверил.

ОК, спасибо, буду иметь ввиду такой способ обмена, потом проверю

 
Мне проще всего было сделать обмен через memlib. Короткий код, обмен происходит быстро через общий кусок оперативной памяти. Кода мало и не грузит процессор.