gpt4 book ai didi

python - ZeroMQ Connector 仍然成功发送数据但未能从 MT4 服务器获得响应

转载 作者:行者123 更新时间:2023-12-04 10:12:46 29 4
gpt4 key购买 nike

我正在关注有关如何将 python 与 MetaTrader Terminal 4 连接的 7 个视频教程,并且按照 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 RC8 version
  • 这是 zmq._get_response_() 的打印版本
    enter image description here
  • 这是我的 MQL4 代码参数
    enter image description here
  • 这里是MT4主动推送报价enter image description here的图片
  • 这是我在_monitor = True对象的初始化过程中尝试设置DWX_ZeroMQ_Connector时Console的图片。现在它甚至无法将交易发送到 MetaTrader 终端 4(终端端 DWX 代码服务服务器),当然仍然无法得到任何响应。
    enter image description here
  • 这是我尝试从 MT4 终端(服务器)获取响应时的终端日志和专家日志 examples 的副本。由于是周末,我不得不尝试比特币交易。

  • 终端日志
    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 + 遵守所有 DLL 依赖项 + 不要在 iPython 中使用 + 不要升级到 v2.0.2 ,所以宁可遵循它,直到作者发布稳定和健壮的版本。

    ( v2.0.2 is currently in beta-testing, please do not upgrade to v2.0.2 )
    ...
    5 ) This project and all accompanying source code should be run standalone (i.g. via a Python or IPython console, or batch process).

    6 )Please DO NOT run this code in Jupyter or IPython Notebooks.

    7 )The project's dependencies require MS VC++ Libraries. Without these installed, you are likely to run into "Resource Timeout" errors. The DLLs in the dependency projects (mql-zmq, libzmq, libsodium) require that you have the latest Visual C++ runtime (2015) libraries already installed.

    8 )This project has not been tested on emulated environments (e.g. WINE, VMWare, etc).

    9 )This project is intended for use solely in Windows 10 environments, at the present time.


    要回答这个问题,还可以发帖:
  • a 完整副本 的所有 print -ed 响应来自已启动的 _0x1045679104 _0x1045679104 _0x79104 _0679104
  • MetaTrader 终端日志的副本,其中建立了从 python 节点到 MetaTrader 终端节点的连接。
  • MetaTrader 终端 MQL4 代码参数的副本:

  • enter image description here
  • MetaTrader 终端活跃工作证明的副本 - 接收交易请求并推送报价更新:

  • enter link description here

    最好检查上面所有 Darwinex 发布的兼容性条件,并检查您是否遵守这些设置的规则。

    结语:“......未能得到 MT4 的回应......”,事实并非如此......
    问题(未收到 MT4. DWX_ZeroMQ_Connector() -es )是由于不了解游戏规则造成的,解决方案所需的步骤隐藏在 -3- 个不同的地方:
    1 ) API 发布者 Darwinex 可能已经在某处记录了这一点,但第一次尝试是尝试使用完全相同的 TCP 端口# 三次,但没有其他类似的晚期尝试崩溃获取已获取的资源(因为 v2.0.1 中的 ZeroMQ 相关代码(原样,因为我有机会查看)没有使用适当的自我保护设置,这些崩溃可能会因为卡住 PUSH 而阻止任何其他用例- 实例,有些可能会持续到 O/S 重新启动。
    2 ) 专家初始化 明确 在 3 个启动案例中的 2 个中被禁用,以便收到有关 MT4 的通知。 Context() -ed FxMarketEVENTs ( PUSH -(tick)-data ), 尊敬的用户 her/him/x/fluid/*-self
    3 ) 你错误地期望 v2.0.1-RC8 代码可以做一些事情,它在命令式代码设置中明确设置不做(同样,API 发布者, Darwinex _0x104567 可能已经在某处记录了这个弱点,在 MetaQuotes 的 MT4-Server 套件许可条件和配置约束允许的情况下,经纪商可以自由命名交易工具,这是您的重点,如果您不调整代码以满足您的经纪商实际 QUOTE 名称和第三次由于所有这些不匹配的情况)

    碰巧看到一个案例,有一天我们的经纪人突然改变了所有的名字,我告诉你一个 hell 般的经历,交易基础设施必须经历什么......愉快的经历,相比之下......
    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;

    关于python - ZeroMQ Connector 仍然成功发送数据但未能从 MT4 服务器获得响应,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/61241442/

    29 4 0
    Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
    广告合作:1813099741@qq.com 6ren.com