如何从 MQL4 EA 流程(MetaTrader4 终端)运行 python 脚本?

问题描述 投票:0回答:1

我有一个简单的

test.py
脚本,我想从 MQL4 EA 运行它。

我该如何实现这个?

我尝试过使用

ShellExecute()
但这在我的情况下不起作用,因为我在 Linux 机器上运行 MetaTrader4 终端,因此无法调用基于 Windows 的
ShellExecute()
(即使使用
wine
)。

python algorithmic-trading mql4 metatrader4 forex
1个回答
0
投票

选项 0:使用
wine
-promise 来获得完整的 DLL 抽象

如果配置正确,

wine
项目应该提供完整的DLL抽象,因此合法的
ShellExecute()
应该提供一种启动葡萄酒封装的MetaTrader4终端的方法,从而启动此类预期进程。


选项1:使用分布式处理{ ZeroMQ |纳米消息}

考虑到此选项自 ZeroMQ v2.11 起就可行,Python 始终准备好与 MQL4 通信并按需启动/停止任何服务配置。这将是我的首选方式,因为工作流程并不孤立于“发射后不管”的导弹控制。


使用该架构多年用于 AI/ML 预测器预测引擎、远程键盘、异地集中式智能日志记录、流程健康/性能遥测服务集成(不仅使用 MQL4 代码执行单元)并保持满意的状态多年来选择这种先进的分布式架构方式。


Nota Bene: 值得注意的是,MQL4 Build 850 / 900 MetaTrader4 终端代码执行引擎修订版周围的某个地方已经为 DLL 包装器/原始 ZeroMQ v2.11 包装器造成了几十个严重问题,但有些问题适度的努力使 {MQL4|*} 发生了 New-

MQL4.56789
变化,不再是
string
(令人惊讶的是重新打扮过的 
string
 ),但在大多数高性能处理中互动是紧凑的,因此不应出现令人心碎的情况。

Python方面:

struct


MQL4 方面:

def main(): # setup ZeroMQ infrastructure and map all resources import zmq ... pass; mainloopSTAY = True # mainloop(): ----------------------------- while mainloopSTAY: try: # ----------------------- event-handling: pass; except: # ------------------------- EXC-handling: { continue } pass; finally: # dismantle ZeroMQ infrastructure and release all resources pass; print( "INF: main().finally: EXIT" ) # { break | if mainloopSTAY } #---------------------------------------------- pass; print( "INF: main().pre-return SECTION" ) if __name__ == '__main__': main() # EXECUTED only if this module-file was called to run from a command-line ( Ref. SECTION: import for def: )

    

© www.soinside.com 2019 - 2024. All rights reserved.