我要一位专家顾问通过电报信息打开一个交易扳机。
我成功地建立了一个Hello应用程序,使用MQ4作为服务器,Python/Telegram-bot作为客户端。当电报机收到一条消息时,他会向MQ4发送一个请求,并在不执行交易的情况下得到一个简单的响应。
在下面运行代码。
# Hello World client in Python
# Connects REQ socket to tcp://localhost:5555
import zmq
context = zmq.Context()
# Socket to talk to server
print("Connecting to trading server…")
socket = context.socket(zmq.REQ)
socket.connect("tcp://localhost:5555")
print("Connecting to trading server succeed")
#################################################################################
# Use your own values from my.telegram.org
api_id = ######
api_hash = '#####'
bot_token = '#####'
#################################################################################
from telethon import TelegramClient, events
client = TelegramClient('anon', api_id, api_hash)
@client.on(events.NewMessage)
async def my_event_handler(event):
if "Ascending" in event.raw_text:
if "AUDUSD" in event.raw_text:
await event.reply("AUDUSD sell")
# Do 1 request, waiting for a response
for request in range(1):
print("Telegram: AUDUSD sell execution requested %s …" % request)
socket.send(b"AUDUSD Sell execute")
#Send 2 variables (Ordertype // Symbol)
# Get the reply. -> Not neccesary for final application
# Apülication just needs to send 2 Varianles to MQ4 and trigger the open_order()
message = socket.recv()
print("Received reply %s [ %s ]" % (request, message))
client.start()
client.run_until_disconnected()
// Hello World server in MQ4
#include <Zmq/Zmq.mqh>
//+------------------------------------------------------------------+
void OnTick()
{
Context context("helloworld");
Socket socket(context,ZMQ_REP);
socket.bind("tcp://*:5555");
while(!IsStopped())
{
ZmqMsg request;
// Wait for next request from client
// MetaTrader note: this will block the script thread
// and if you try to terminate this script, MetaTrader
// will hang (and crash if you force closing it)
socket.recv(request);
Print("Receive: AUDUSD Sell execute");
Sleep(1000);
ZmqMsg reply("Trade was executed");
// Send reply back to client
socket.send(reply);
Print("Feedback: Trade was executed");
}
}
//+------------------------------------------------------------------+
现在,我想将两个变量从Python发送到MQ4。1.订单类型:买卖2.符号:欧元美元、澳元美元、.
如果消息包含“上升”-如果消息包含“降序”,则发送"Buy“
发送"AUDUSD“如果消息包含"AUDUSD",.
为此,我从Darwinex找到了一个库,并希望将它(消息的解释,以数组的形式发送值)与我已经在运行的电报-bot结合起来。
为了进行测试,我想自己尝试一下Darwinex的示例代码。
我找到了代码v2.0.1:
Python:RC8.py
MQ4:(注意:这个库代码可能在最终的应用程序中取代上面的全部MQ4代码。) RC8.mq4
当我在不改变的情况下复制代码时,在Python中会出现一个错误:
NameError:未定义名称“_zmq”
运行后:_zmq._DWX_ZeroMQ_Connector() -在Spyder的内核中。
我能做些什么来纠正这个错误?
在最后一个状态下,我希望在同一个Windows 2012 R2上运行Python和。
如果我从服务器运行powershell中的.py文件,还是应该在run端托管该文件,这就足够了吗?
我希望在我的VPS或Webside主机服务器上运行整个系统/examplecode,并为进一步的编码操作提供一个测试环境,但目前我无法使Python中的库代码正常运行。
此外,MT4也避免了当前代码的崩溃,但是如果我将我的应用程序与库代码示例结合起来,则应该进行修复。
(用WIN 10在本地PC上运行一切)。
发布于 2019-11-21 20:04:16
要解决这个问题,您需要这样做:
from DWX_ZeroMQ_Connector_v2_0_1_RC8 import DWX_ZeroMQ_Connector
_zmq = DWX_ZeroMQ_Connector()
(酌情调整连接器的版本)。应该能解决这个问题。
https://stackoverflow.com/questions/57732595
复制相似问题