c# и meta trader

 

Добрый день,

Я новенький,

Мне нужно чтобы моя программа на с# могла отправлять команды на открытие позиций по заданным инструментам в терминал meta trader4 или meta trader5, никакую информацию из терминала в  программу на c# передавать не требуется,

команды идут в одностороннем порядке, слышал что можно как-то через socket соединяться и взаимодействовать, буду рад если кто-то предоставит пример кода на C# такого соединения и отправки команды на открытие позиции через это соединение.

 
Правильно ли я понимаю что для отправки команд по сети нужно не только открыть порт, но должен быть и советник который будет слушать этот порт и выполнять поступающие команды? или советник не нужен?
 
ZEUS_EX:
Правильно ли я понимаю что для отправки команд по сети нужно не только открыть порт, но должен быть и советник который будет слушать этот порт и выполнять поступающие команды? или советник не нужен?
Правильно - советник или скрипт. А может даже и сервис.
 
ZEUS_EX:

Добрый день,

Я новенький,

Мне нужно чтобы моя программа на с# могла отправлять команды на открытие позиций по заданным инструментам в терминал meta trader4 или meta trader5, никакую информацию из терминала в  программу на c# передавать не требуется,

команды идут в одностороннем порядке, слышал что можно как-то через socket соединяться и взаимодействовать, буду рад если кто-то предоставит пример кода на C# такого соединения и отправки команды на открытие позиции через это соединение.

Проще всего организовать передачу команд и результатов их выполнения через сигнальные файлы в "песочнице" = каталог терминала\MQL4 или \MQL5. И Ваша программа на  c#, и советники на MQL4 и MQL5 умеют их читать и писать. И даже не мешать при этом работе сканирующих антивирусов, разрешив при открытии файлов совместное чтение. Признак изменения файла - изменение его возраста или длины. Примеры кода, думаю, писать не надо, они общеупотребительны.

 
я сам не пробовал, но читал тут что кто то реализоввывал стыковку C# с советником через статические методы - вот это действительно будет оптимальным вариантом (Dll на C# и статические методы для его стыковки) 
Так же я читал тут на форуме что кто то через Pipe передавал информацию в советник. А так же где то была статья (Избавляемся от балласта Dll или как то так называлась) где автор показывал способ стыковки робота написанного на Mql с любой программой практически через MemoryMapedFile. Поищите это по форуму, думаю раз у Вас есть программка (.exe) на C# - то это будет наиболее оптимальный вариант для Вас. А передача команд через файл - это по моему личному мнению - не надежный способ, да и громоздкий какой то)
 
ZEUS_EX:

Добрый день,

Я новенький,

Мне нужно чтобы моя программа на с# могла отправлять команды на открытие позиций по заданным инструментам в терминал meta trader4 или meta trader5, никакую информацию из терминала в  программу на c# передавать не требуется,

команды идут в одностороннем порядке, слышал что можно как-то через socket соединяться и взаимодействовать, буду рад если кто-то предоставит пример кода на C# такого соединения и отправки команды на открытие позиции через это соединение.

https://www.mql5.com/ru/articles/5563
Создание графических интерфейсов для экспертов и индикаторов на базе .Net Framework и C#
Создание графических интерфейсов для экспертов и индикаторов на базе .Net Framework и C#
  • www.mql5.com
С октября 2018 года MQL5 стал нативно поддерживать интеграцию с библиотеками Net Framwork. Нативная поддержка означает что типы, методы и классы, размещенные в библиотеке .Net теперь, доступны из MQL5 программы напрямую, без предварительной декларации вызывающих функций и их параметров, а также сложного приведения типов двух языков друг к...
 
Vladimir:

Проще всего организовать передачу команд и результатов их выполнения через сигнальные файлы в "песочнице" = каталог терминала\MQL4 или \MQL5. И Ваша программа на  c#, и советники на MQL4 и MQL5 умеют их читать и писать. И даже не мешать при этом работе сканирующих антивирусов, разрешив при открытии файлов совместное чтение. Признак изменения файла - изменение его возраста или длины. Примеры кода, думаю, писать не надо, они общеупотребительны.

Не несите бред. Даже если сделать через файлы, нужно как-то решать проблему многопоточного доступа к ресурсу-файлу (читатель-писатель), иначе дед-лок не избежен.

 

на уровне данных совместимость МТ5 и С# очень хорошая

я через массив double и int организовал связь тудымсюдым )))

при вызове dll в массивы я записываю инфу от терминала, а при возврате из dll - там инфа от C#

но у меня  dll используется

 
Igor Makanu:

на уровне данных совместимость МТ5 и С# очень хорошая

я через массив double и int организовал связь тудымсюдым )))

вызов dll в массивы записал инфу терминал, возврат из dll - там инфа от C#

У человека похоже уже есть сервер который отдает инфу через сокет. Ему нужно получить и использовать ее в терминале. Сейчас это можно делать напрямую. Просто стоит определиться что использовать эксперт или скрипт. И dll уже ни к чему тогда.

 
Konstantin Nikitin:

У человека похоже уже есть сервер который отдает инфу через сокет. Ему нужно получить и использовать ее в терминале. Сейчас это можно делать напрямую. Просто стоит определиться что использовать эксперт или скрипт. И dll уже ни к чему тогда.

тогда вопрос решен со 2-го поста топика

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