Обмен данными советником и внешней программой.

 

Есть программа на C#, которая берет котировки из терминала, анализирует их, формирует сигналы для торговли.

Теперь задача срастить ее с МТ для автоматической торговли.

1. Для тестирования стратегии планируется записать все сообщения программы о выставлении, закрытии, отмене, изменении ордеров в файл.  Предполагается, что при тесте советник будет читать из файла и работать с ордерами по поступлению нового бара (его эмуляции при тесте).

 2. Для непосредственно торговли хочу организовать обмен между советником (или скриптом) МТ и программой. Делать это через файл не хочется. Хочется как-то через сообщения или память посылать команды из программы в МТ, и от него получать ответ об исполнении, и идентификатор ордера. Чтобы по идентификатору дальше давать команды советнику по работе с этим ордером.

 

С mql до этого не работал. Если по 1-му варианту мне относительно понятно (хотя буду рад услышать советы)... То по 2-му пока ничего не понятно. Даже не уверен, возможно ли это в принципе.

Поиск по форуму особо не помог.

Прошу помощи. Заранее признателен откликнувшимся. 

 
А почему не DLL? 
 

1. Сделать запись в виртуальный файл (маппинг). Советник будет от туда читать. Быстро и диск не будет дёргать.

2. Вместо EXE скомпилировать DLL. Данные гонять через интерфейсные функции.

3. Остальное это вариации на эти 2 темы.

 
AKC:

Есть программа на C#, которая берет котировки из терминала, анализирует их, формирует сигналы для торговли.

Теперь задача срастить ее с МТ для автоматической торговли.

В МТ5 запросто, есть даже готовые примеры. См. Связь с MetaTrader 5 через именованные каналы без применения DLL

Разработчики обещали сделать пайпы и для МТ4, но неизвестно когда это будет реализовано.

 
Zhunko:

1. Сделать запись в виртуальный файл (маппинг). Советник будет от туда читать. Быстро и диск не будет дёргать.

2. Вместо EXE скомпилировать DLL. Данные гонять через интерфейсные функции.

3. Остальное это вариации на эти 2 темы.


2. В программе есть и DLL. Можно одну сделать для обмена данными. Если не трудно, намекните про интерфейсные функции. Давно я не брал в руки шашки. А сейчас жизнь заставляет.

1. Про виртуальный файл можно чуть подробнее. Извините за такие вопросы. Если что - то, конечно воспользуюсь поиском.

Спасибо за ответ. Не ожидал такой оперативности :) 

 
tara:
А почему не DLL? 


В поиске по этому форуму нашел мнение, что DLL - не самый оптимальный вариант. Но не понял - почему.

Видел попытки сделать общение через Atom или Thrad. Но это были посты 2006-го года. И я не понял, реализовал ли кто-то на практике такой вариант.

Находил намеки и на обмен через ячейки памяти. Но тоже не понял... Как реализовать, и будет ли работать.

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

Я пне знаю, можно ли прогонять через сообщения большую информацию (несколько слов). И реально ли так отправлять сообщения в МТ советнику.

 
Reshetov:

В МТ5 запросто, есть даже готовые примеры. См. Связь с MetaTrader 5 через именованные каналы без применения DLL

Разработчики обещали сделать пайпы и для МТ4, но неизвестно когда это будет реализовано.


Спасибо, МТ 5 на очереди. Посмотрю примеры.

Но пока задача - связать с МТ4. 

 
AKC:


2. В программе есть и DLL. Можно одну сделать для обмена данными. Если не трудно, намекните про интерфейсные функции. Давно я не брал в руки шашки. А сейчас жизнь заставляет.

1. Про виртуальный файл можно чуть подробнее. Извините за такие вопросы. Если что - то, конечно воспользуюсь поиском.

Спасибо за ответ. Не ожидал такой оперативности :) 

2. Так это и есть экспортные функции DLL. Через них производить общение между библиотекой и экспертом.

1. Это на английском статья MSDN. В инете есть на русском. Есть готовые решения для MQL4

 
AKC:


В поиске по этому форуму нашел мнение, что DLL - не самый оптимальный вариант. Но не понял - почему.

Видел попытки сделать общение через Atom или Thrad. Но это были посты 2006-го года. И я не понял, реализовал ли кто-то на практике такой вариант.

Находил намеки и на обмен через ячейки памяти. Но тоже не понял... Как реализовать, и будет ли работать.

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

Я пне знаю, можно ли прогонять через сообщения большую информацию (несколько слов). И реально ли так отправлять сообщения в МТ советнику.


С точки зрения покупателя - не лучший, ну а для разработчика - библиотека динамического вызова - самое то:) 
 
tara:

С точки зрения покупателя - не лучший, ну а для разработчика - библиотека динамического вызова - самое то:) 

А почему с точки зрения покупателя - не лучший?
 
Zhunko:

2. Так это и есть экспортные функции DLL. Через них производить общение между библиотекой и экспертом.

1. Это на английском статья MSDN. В инете есть на русском. Есть готовые решения для MQL4


2. Так нужно не только между экспертом и библиотекой, но двухсторонний обмен между программой и экспертом. Или я что-то не допонял?

1. Спасибо, почитаю. 

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