получать котировки из mt4 в свою программу - страница 2

 
AdeoS:

Требуется получать котировки в свою программу из mt4 по запросу, какие методы реализации можете предложить, желательно с рабочими примерами.

Например по запросу из своей программы требуется получить информацию по последним 10 свечам(open, close) H1 Eurusd.

MT4 в основном будет использоваться как источник котировок, если знаете другое ПО или веб сервис для получения котировок с API, прошу поделится.

Лучше всего разработать для МТ4 скрипт, работающий в цикле на каком-либо графике.

Этот скрипт через свою маленькую DLL-программку создает невидимое окно(Windows).

Дальнейший обмен вашей программы с упомянутым скриптом будет осуществляться через сообщения очереди сообщений

данного окна(Windows ).

Получим такую схему обмена:

Скрипт<-->DLL<-->Очередь сообщений окна<-->ваша программа.

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

Рабочие примеры привести не могу, давно это было.

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

Кстати, вот здесь на форуме пример, упрощающий жизнь - окно можно создать прямо в MQL4-программе с помощью импорта штатной MS Windows - user32.dll.

Вот ссылка на эту ветку - https://www.mql5.com/ru/forum/132050, т.е. свою DLL даже и писать не надо, а просто использовать те функции по работе

с очередью сообщений окна, которые предоставляет user32.dll.

 
more:

Лучше всего разработать для МТ4 скрипт, работающий в цикле на каком-либо графике.

Этот скрипт через свою маленькую DLL-программку создает невидимое окно(Windows).

Дальнейший обмен вашей программы с упомянутым скриптом будет осуществляться через сообщения очереди сообщений

данного окна(Windows ).

Получим такую схему обмена:

Скрипт<-->DLL<-->Очередь сообщений окна<-->ваша программа.

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

Рабочие примеры привести не могу, давно это было.

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

Кстати, вот здесь на форуме пример, упрощающий жизнь - окно можно создать прямо в MQL4-программе с помощью импорта штатной MS Windows - user32.dll.

Вот ссылка на эту ветку - https://www.mql5.com/ru/forum/132050, т.е. свою DLL даже и писать не надо, а просто использовать те функции по работе

с очередью сообщений окна, которые предоставляет user32.dll.


спасибо конечно за идею и ссылки, но я нашел более элегантное решение посредством глобальных переменных Windows, даже можно реализовать свой DDE с любым периодом обновления, реализовать связь советника со своим софтом и при этом не нужно писать DLL.

Импортируете DLL в советник и дальше используете эти функции, по названию функций думаю понятно что они делают

#import "kernel32.dll"
   string GlobalFindAtomA   (string lpString); 
   int    GlobalGetAtomNameA(int nAtom, string lpBuffer, int nSize);
   int    GlobalAddAtomA    (string lpString); 
   int    GlobalDeleteAtom (int nAtom);
#import
В своей программе просто считываем эти переменные, конечно не забываем их удалять после прочтения, а то они так и будут висеть в памяти Windows.
 
AdeoS:


спасибо конечно за идею и ссылки, но я нашел более элегантное решение посредством глобальных переменных Windows, даже можно реализовать свой DDE с любым периодом обновления, реализовать связь советника со своим софтом и при этом не нужно писать DLL.

Импортируете DLL в советник и дальше используете эти функции, по названию функций думаю понятно что они делают

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



Хорошо конечно, но как-то не интересно. Можно было бы в каждом из взаимодействующих приложений

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

обработчиками сообщений.

Нашел про атомы в MSDN, чтобы иметь под рукой сделаю ссылку: http://msdn.microsoft.com/en-us/library/ms649053%28VS.85%29.aspx

 

Следует определится, как по мне, кто будет генерить поток событий - скрипт, эксперт или индюк.

Промелькнуло сообщение о систематической потере тиков в индюке. ГИП об этом говорил, и исчез...

Сам знаю, что зацыкленный скрипт вместо Sleep(1) делает его на 14-15 милисекунд дольше.

Ловите, что осталось - называется.

Ладно для истории чепуха (имхо), но ведь рэквоты становятся понятны.

Поезд ушел.

;)

 
more:

Хорошо конечно, но как-то не интересно. Можно было бы в каждом из взаимодействующих приложений

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

обработчиками сообщений.

Нашел про атомы в MSDN, чтобы иметь под рукой сделаю ссылку: http://msdn.microsoft.com/en-us/library/ms649053%28VS.85%29.aspx


через атомы реализуется в пару строчек, функционал больше и не нужно.


Sorento:

Следует определится, как по мне, кто будет генерить поток событий - скрипт, эксперт или индюк.

Промелькнуло сообщение о систематической потере тиков в индюке. ГИП об этом говорил, и исчез...

Сам знаю, что зацыкленный скрипт вместо Sleep(1) делает его на 14-15 милисекунд дольше.

Ловите, что осталось - называется.

Ладно для истории чепуха (имхо), но ведь рэквоты становятся понятны.

Поезд ушел.

;)

Для моего приложения "свежесть" тиков не столь критична, торговать по этим данным не собираюсь :)
 
AdeoS:

Для моего приложения "свежесть" тиков не столь критична, торговать по этим данным не собираюсь :)


типа - просто "зарисоваться"?

Лучче Ринатовского DDЕ нет ничего у МТ.

Жаль в пятёре этого штатного средства уже нет.

Потому - ждите диагноз:

"КРИВОРУКОСТЬ усугублённая непониманием проблем потоковой многозадочности..."

;)

 
Sorento:

типа - просто "зарисоваться"?

Лучче Ринатовского DDЕ нет ничего у МТ.

Жаль в пятёре этого штатного средства уже нет.

Потому - ждите диагноз:

"КРИВОРУКОСТЬ без понимания проблем потоковой многозадочности..."

;)


я уже отвечал почему DDE мне не подходит, он выдает только последнюю цену, а тут по запросу я могу получить цены по нескольким барам
 
AdeoS:

я уже отвечал почему DDE мне не подходит, он выдает только последнюю цену, а тут по запросу я могу получить цены по нескольким барам

Удачи с барами!

А то наш нервный тик точно вам ни к чему.

;)

Только в барах уже не котиры, а пыль истории...

Менять тему топика? или как?

 

Sorento:


Renat по поводу вашего любимого DDE :)


Renat 2010.10.06 00:05 2010.10.06 00:05:56 #

Изумительно примитивный механизм межпроцессорного взаимодействия из времен Windows 3.1 уже нет никаких сил тащить дальше.

Никакого желания нет портить свой код и тянуть за собой страшненную DDE библиотеку, которая фактически сохранилась исключительно для работы с Экселем. У нас гораздо более мощные возможности в языке MQL5.


https://www.mql5.com/ru/forum/2254/page1#comment_27510

 
AdeoS:


Renat по поводу вашего любимого DDE :)


Renat 2010.10.06 00:05 2010.10.06 00:05:56 #

Изумительно примитивный механизм межпроцессорного взаимодействия из времен Windows 3.1 уже нет никаких сил тащить дальше.

Никакого желания нет портить свой код и тянуть за собой страшненную DDE библиотеку, которая фактически сохранилась исключительно для работы с Экселем. У нас гораздо более мощные возможности в языке MQL5.


https://www.mql5.com/ru/forum/2254/page1#comment_27510

кто бы спорил.

"old tick..."

Ничего личного - бизнес.