Обсуждение статьи "Соединение MetaTrader 5 и Python: получение и отправка данных" - страница 11
Вы упускаете торговые возможности:
- Бесплатные приложения для трейдинга
- 8 000+ сигналов для копирования
- Экономические новости для анализа финансовых рынков
Регистрация
Вход
Вы принимаете политику сайта и условия использования
Если у вас нет учетной записи, зарегистрируйтесь
Спасибо за эту статью.
Просто интересно, зачем нам нужно постоянно вызывать socket=SocketCreate() и SocketClose() в OnTick()?
Кажется немного неэффективным повторять эти действия.
Не держит ли это сокет открытым/активным? Или, скорее, возможно ли держать сокет открытым/активным?
привет! я тоже сокет поднимал. У меня возникла проблема - я пишу индикатор в пайтоне. Он берет данные с мт5 много и сколько угодно а вот вернуть данные в мт5 это уже не так легко. На сокете получается только строку передавать до 100 гдето небольших стрингов а мне нужно больше. Какие есть решения еще кроме сокета? и кроме веб/инет реквестов обмена данными между Python->MT5? не хочется поднимать MySQL бд для этого. Речь идет о передаче из пайтона в мт5 около 40 валютных пар с историей в 1000 показаний пересчитанных и дальнейшее построение линий индикатора в МТ5... хочу уйти полностью от расчетов в мт5 так как пайтон это делает гораздо быстрее. Так вот хотелось бы видеть все линии индикатора а не только последнего бара переданных строкой раз в секунду.
Использование multiprocessing.shared_memory в Python и WinAPI в MQL5 позволяет читать данные напрямую из памяти.Может кто-то чет посоветует дельное?
TCP/IP Socket - там все равно МТ5 будет получать одну стринг и в нее не влезет 30 000 данных... ограничения одной стринг переменной даже в jason формате это до 100 стрингов. Толку с такого Socket ?
Получается для больших данных один выход - Python-->MySQL-->MT5
Еще вот такая идея пришла :
кроме веб/инет реквестов обмена данными между Python->MT5? не хочется поднимать MySQL бд
"поднимите SQLite" - в MT5 он встроен, в питоне тоже очевидно присутствует..
по сокету сообщаете то что нужно оперативно (сигналы, оповещения и прочее), а большие данные выкладываете в SQLite. То есть в питоне всё что надо сложил в базу и свистнул в сокет "обновление данных". А в MQL по свистку перечитать базу
саму базу можно держать на рам-диске
"поднимите SQLite" - в MT5 он встроен, в питоне тоже очевидно присутствует..
по сокету сообщаете то что нужно оперативно (сигналы, оповещения и прочее), а большие данные выкладываете в SQLite. То есть в питоне всё что надо сложил в базу и свистнул в сокет "обновление данных". А в MQL по свистку перечитать базу
саму базу можно держать на рам-диске
я вас понял, спасибо за ответ... ну я так и думал
MetaTrader 5 использует свой язык программирования MQL5, который работает в изолированном процессе. Это не позволяет напрямую взаимодействовать с общей памятью операционной системы, как это могут делать другие приложения, использующие низкоуровневые API.
Оболочка в оболочке.... да че там говорить 20 лет как не могут под мак нативную версию закодить...
я вас понял, спасибо за ответ... ну я так и думал
MetaTrader 5 использует свой язык программирования MQL5, который работает в изолированном процессе. Это не позволяет напрямую взаимодействовать с общей памятью операционной системы, как это могут делать другие приложения, использующие низкоуровневые API.
Оболочка в оболочке.... да че там говорить 20 лет как не могут под мак нативную версию закодить...
никто не запрещает использовать DLL - а там что хочешь то и делай.
Можно впрямую память шарить ( быстрее наверное уже никак :-) ).
Или эффективные промежуточные решения, а-ля in-memory key-value db.
Только в большинстве случаёв тормоза и bottle-neck на стороне Питона