我一直在关注7个关于如何将python与MetaTrader Terminal 4接口的视频教程,并且按照本video中的说明在iPython内核上运行它们没有问题
毫无问题,我的意思是交易被轻松地发送到服务器,客户端(我的笔记本电脑)在每个操作执行后都收到了正确的响应。当我调用zmq._get_response_()
时,我可以访问服务器响应
当我想在程序中编译DWX_ZeroMQ_Connector
类时,问题就开始出现了。所以我从一个简单的程序开始,就像这样:
def main():
zmq = DWX_ZeroMQ_Connector()
my_trade = { '_action': 'OPEN',
'_type': 0,
'_symbol': 'USOIL',
'_price': 0.0,
'_SL': 0,
'_TP': 0,
'_comment': 'dwx-zeromq',
'_lots': 0.01,
'_magic': 123456,
'_ticket': 0
}
#
zmq._DWX_MTX_NEW_TRADE_(_order=my_trade)
#
reply = zmq._get_response_()
all_trade = zmq._DWX_MTX_GET_ALL_OPEN_TRADES_()
#
print( "reply" + str( reply ) )
print( "----------------------" )
print( "alltrade" + str( all_trade ) )
main()
奇怪的是,这个脚本仍然成功地发送了订单,但没有提示任何回复,因为回复结果为空。我为此挣扎了一周
一些补充资料:
我发现只有在使用时才收到响应的问题 Anaconda提示执行编译后的文件,但我收到了正确的 iPython内核上的响应,所以我认为它不可能是我的 依赖关系。两者都在本地主机上运行
我克隆的github页面是最新的v2.0.1 RC8version
下面是我在DWX_ZeroMQ_Connector
对象的初始化过程中试图设置_monitor = True
时控制台的一张图片。现在它甚至无法将交易发送到MetaTrader终端4(终端端DWX代码服务服务器),当然仍然无法获得任何回复。
这是当我试图从MT4终端(服务器)获取响应时,终端日志和专家日志的副本。由于是周末,我不得不尝试比特币交易
终端日志
0 16:33:17.600 MetaTrader build 1260 started (Exness Ltd.)
0 16:33:17.600 Windows 10 Pro x64, IE 11, UAC, 4 x Intel Core i7-5500U @ 2.40GHz, Memory: 4899 / 8103 Mb, Disk: 73 / 99 Gb, GMT+7
0 16:33:17.600 Data Folder: C:\Users\Admin\AppData\Roaming\MetaQuotes\Terminal\F5C18A2156882613427FB4ACF0892997
2 16:33:20.664 Expert DWX_ZeroMQ_Server_v2.0.1_RC8 USOIL,H1: loaded successfully
2 16:33:20.767 Expert DWX_ZeroMQ_Server_v2.0.1_RC8 GBPJPY,H1: loaded successfully
0 16:33:22.258 '36006969': login on Exness-Trial4 through DC00 (ping: 235.09 ms)
0 16:33:24.299 '36006969': login datacenter on Exness-Trial4 through DC00 (ping: 235.09 ms)
0 16:33:24.933 '36006969': previous successful authorization performed from 171.255.70.226
2 16:33:31.235 Expert DWX_ZeroMQ_Server_v2.0.1_RC8 GBPJPY,H1: removed
2 16:33:31.247 Expert DWX_ZeroMQ_Server_v2.0.1_RC8 GBPJPY,H1: loaded successfully
0 16:33:42.019 '36006969': order buy market 0.01 BTCUSD sl: 0.00 tp: 0.00
0 16:33:42.514 Trades: use hosting service to speed up the execution - 0.33 ms via 'MQL5 Amsterdam 01 (MQL5.community)' instead of 235.09 ms
0 16:33:42.514 '36006969': order was opened : #2991084 buy 0.01 BTCUSD at 7110.21 sl: 0.00 tp: 0.00
2 16:35:11.850 Expert DWX_ZeroMQ_Server_v2.0.1_RC8 USOIL,H1: removed
2 16:35:11.866 Expert DWX_ZeroMQ_Server_v2.0.1_RC8 GBPJPY,H1: removed
0 16:35:12.081 MetaTrader build 1260 stopped
专家日志:
0 16:33:20.269 Expert DWX_ZeroMQ_Server_v2.0.1_RC8 EURUSDm,H1: loaded successfully
0 16:33:20.270 DWX_ZeroMQ_Server_v2.0.1_RC8 EURUSDm,H1 inputs: PROJECT_NAME=DWX_ZeroMQ_MT4_Server; ZEROMQ_PROTOCOL=tcp; HOSTNAME=*; PUSH_PORT=32768; PULL_PORT=32769; PUB_PORT=32770; MILLISECOND_TIMER=1; t0=--- Trading Parameters ---; MagicNumber=123456; MaximumOrders=1; MaximumLotSize=0.01; MaximumSlippage=3; DMA_MODE=true; t1=--- ZeroMQ Configuration ---; Publish_MarketData=false;
0 16:33:20.664 Expert DWX_ZeroMQ_Server_v2.0.1_RC8 USOIL,H1: loaded successfully
0 16:33:20.664 DWX_ZeroMQ_Server_v2.0.1_RC8 USOIL,H1 inputs: PROJECT_NAME=DWX_ZeroMQ_MT4_Server; ZEROMQ_PROTOCOL=tcp; HOSTNAME=*; PUSH_PORT=32768; PULL_PORT=32769; PUB_PORT=32770; MILLISECOND_TIMER=1; t0=--- Trading Parameters ---; MagicNumber=123456; MaximumOrders=1; MaximumLotSize=0.01; MaximumSlippage=3; DMA_MODE=true; t1=--- ZeroMQ Configuration ---; Publish_MarketData=false;
00 16:33:20.767 Expert DWX_ZeroMQ_Server_v2.0.1_RC8 GBPJPY,H1: loaded successfully
0 16:33:20.767 DWX_ZeroMQ_Server_v2.0.1_RC8 GBPJPY,H1 inputs: PROJECT_NAME=DWX_ZeroMQ_MT4_Server; ZEROMQ_PROTOCOL=tcp; HOSTNAME=*; PUSH_PORT=32768; PULL_PORT=32769; PUB_PORT=32770; MILLISECOND_TIMER=1; t0=--- Trading Parameters ---; MagicNumber=123456; MaximumOrders=1; MaximumLotSize=0.01; MaximumSlippage=3; DMA_MODE=true; t1=--- ZeroMQ Configuration ---; Publish_MarketData=true;
按原样提供的
DWX_ZeroMQ_Connector()
源代码在自保护通信节点免受死锁方面存在一些ZeroMQ缺陷,并且缺少一些技巧来实现专业级的软件健壮性然而,最严重的警告是显式语句Win10 only+遵守所有DLL依赖项+不要在iPython+中使用不要升级到v2.0.2,所以请遵循它,直到作者发布稳定而健壮的版本
为了回答这个问题,还可以发布以下内容:
最好检查以上所有Darwinex发布的兼容性条件,并检查您是否符合这些规则
结语:“…未能从MT4获得响应…”,情况并非如此
问题(未接收MT4.
PUSH
-es)是由于不了解游戏规则造成的,工作解决方案所需的步骤隐藏在-3-不同的地方:1)API发行商Darwinex可能已经在某个地方记录了这一点,但第一个问题是尝试使用同一个TCP端口三次,这没有其他机会,只能使任何晚些时候获取已获取资源的尝试(如v2.0.1中与ZeroMQ相关的代码)崩溃(正如我有机会回顾的那样)没有使用正确的自我保护设置,这些崩溃可能会阻止任何其他用例,因为冻结了
Context()
-实例,有些甚至可能持续到O/S重新启动2)专家初始化在3个发布案例中的2个案例中被明确禁用,由尊敬的用户her/him/x/fluid/*-self通知MT4.{}-ed FxMarketEVENTs({} -(勾选)-数据)
3)如果您错误地期望v2.0.1-RC8代码可以执行某些操作,那么它在命令式代码设置中被显式设置为不执行(同样,API发行商,Darwinex,可能在某个地方记录了这一弱点,但如果经纪人可以在MetaQuotes的MT4服务器套件许可证条件和配置约束允许的范围内自由命名交易工具,那么如果您不调整代码以满足经纪人的实际要求,这就是您的首要问题。)由于所有这些不匹配的情况,第三次出现姓名和头条新闻)
相关问题 更多 >
编程相关推荐