我正在尝试使用 Metatrader 库来提取市场数据并构建算法。开始使用这个库的第一行代码不起作用
import MetaTrader5 as mt5
mt5.initialize()
Run Code Online (Sandbox Code Playgroud)
这些代码行始终返回False的输出,这意味着 mt5 尚未初始化,我还没有在其他地方看到此问题得到解决,因此我非常感谢一些帮助。
我在一家金融科技公司工作,该公司使用 C# 实现的 Meta Trader Manager Api 开发交易系统,我们有自己的流程,隐藏 Meta Trader 依赖项,并通过 tcp 客户端向我们拥有的其他系统公开服务器到客户端和客户端到服务器的操作套接字类。
我们正在考虑切换到 grpc,但我主要担心的是,我在 grpc 中没有看到服务器到客户端通知的简单实现。
我看到的唯一解决方案是解决 grpc长寿命客户端到服务器流的问题,您需要使用锁或无限循环使服务器中的调用保持活动状态,并将客户端的写入流保存在服务器端,并在通知事件被触发。
另外,在客户端,我发现我需要为每个通知的事件处理程序创建一个无限循环,以及为后续通知调用 ResponseStream.MoveNext() 。
在我看来,要么 grpc 不是为这种用途而构建的,要么是我遗漏了一些东西。
我想从Metatrader中我自己导入的DLL调用MQL4或MQL5函数.
可能吗?
我试图通过 Python 平掉 MT5 中的现有仓位,但 MT5 总是声称“不支持的填充模式”。
我尝试了所有可能的填充模式,但总是得到相同的结果。同样,如果我省略请求中的填充模式。我还尝试从符号信息中获取填充模式并在请求中使用它 - 但没有成功。这种情况发生在真实账户上。
这是我的函数,它采用现有仓位并发送该仓位的平仓请求:
async def ClosePosition(position):
if (position.type == mt5.POSITION_TYPE_BUY):
order_type = mt5.ORDER_TYPE_SELL
price = mt5.symbol_info_tick(position.symbol).bid
else:
order_type = mt5.ORDER_TYPE_BUY
price = mt5.symbol_info_tick(position.symbol).ask
request = {
"action": mt5.TRADE_ACTION_DEAL,
"symbol": position.symbol,
"volume": position.volume,
"type": order_type,
"position": position.ticket,
"price": price,
"deviation": 10,
"magic": 0,
"comment": "Closed by Python",
"type_time": mt5.ORDER_TIME_GTC,
"type_filling": mt5.ORDER_FILLING_RETURN
}
result = mt5.order_send(request)
Run Code Online (Sandbox Code Playgroud)
杂志上是这样说的:
Trades '#######': failed market buy 0.01 CHFJPY, close #109459760 sell 0.01 CHFJPY 116.807 [Unsupported filling mode]
任何帮助是极大的赞赏。
我尝试在 Ubuntu 17.04(64 位)上安装 Metatrader 5。我被卡住了,需要有人帮我解决这个问题。我已经安装了 wine-2.0.1,这是目前最新的稳定版本,它是 64 位的。最后,在成功安装 Metatrader 5 后,在启动应用程序时会出现一个错误窗口:terminal64.exe,带有消息:
已发现调试器在您的系统中运行。
请从内存中卸载它并重新启动您的程序。
在 wiki.winehq.org 上,我发现需要安装 2 个不同版本的 wine:32 位和 64 位。我尝试做所有事情: https://wiki.winehq.org/Building_Biarch_Wine_On_Ubuntu ,但在“Build 64-bit Wine”阶段,对于:make clean,我得到:
make: *** 没有使目标“干净”的规则。停止。
有没有办法在 Ubuntu 17.04 上真正安装 mt5?
我是新人,正在尝试为 MT5 构建一个 python 机器人。我尝试通过 python 发送 MT5 交易,但它总是返回“None”。
我已经输入了所有必需的信息,是否是因为小数点错误?
import os
from datetime import datetime
import MetaTrader5 as mt5
import requests
import datetime as dt # for dealing with times
import numpy as np
import json
import pandas as pd
import pytz
ea_magic_number = 9986989 # if you want to give every bot a unique identifier
def open_trade(action, symbol, lot, sl_points, tp_points, deviation):
'''https://www.mql5.com/en/docs/integration/python_metatrader5/mt5ordersend_py
'''
# prepare the buy request structure
symbol_info = mt5.symbol_info(symbol)
if action == 'buy':
trade_type …
Run Code Online (Sandbox Code Playgroud) 我想在我的专家顾问 (EA) 中访问各种斐波那契水平,例如 23.6%、38.2%、50%、61.8% 和 100%。我如何在我的 EA 中定义这些,以便交易者可以通过输入选择它们?
我试过这个
input double Fibo=23.6;
Run Code Online (Sandbox Code Playgroud)
然而,这是常见的方法吗?是否可以将它们设置为预定义的?
感谢您的帮助!
我在使用 MQL5 修改正在运行的交易的止损时遇到了麻烦。选择订单对我来说很有效。但是如果我尝试访问变量(例如OrderTicket()
& OrderOpenPrice()
),它总是返回 0.00000:
2017.06.01 00:06:32.114 2016.04.08 00:00:00 failed modify buy 0.00 sl: 0.00000, tp: 0.00000 -> sl: 1.41594, tp: 0.00000 [Invalid request]
Run Code Online (Sandbox Code Playgroud)
这是我的止损修改无效:
void modifyStops() {
int total = OrdersTotal(); // total number of placed pending orders
Print( total + " Orders on the line!!!" );
//--- Over all placed pending orders
for ( int i = 0; i < total; i++ )
{ bool isOrderSelected = OrderSelect( i, SELECT_BY_POS, MODE_TRADES );
if ( isOrderSelected …
Run Code Online (Sandbox Code Playgroud) 我正在尝试通过 MT5-python API 将订单从 python 脚本发送到我的 MT5 终端。
我可以开仓,但如何通过 Python mt5-API 平仓?
我打开一张买票,如下所示:
import MetaTrader5 as mt5
lot = 0.1
request = {
"action": mt5.TRADE_ACTION_DEAL,
"symbol": symbol,
"volume": lot,
"type": mt5.ORDER_TYPE_BUY,
"price": price,
.....
"type_time": mt5.ORDER_TIME_GTC,
"type_filling": mt5.ORDER_FILLING_RETURN,
}
enter copoint = mt5.symbol_info(symbol).point
Run Code Online (Sandbox Code Playgroud)
但是发送“关闭”的命令和形式是什么?
查找更多信息: https://www.mql5.com/en/docs/integration/python_metatrader5
非常感谢!
几个月前,我们开发了一堆使用Metatrader 5库 (5.0.34) 的 Python 脚本。
自从客户端更新 5.00(该库需要正在运行的客户端)以来,以前工作的 login() 函数似乎已损坏:
SEVERE LOGIN FAIL error code: (-2, 'Terminal: Invalid params')
Run Code Online (Sandbox Code Playgroud)
以前调用的mt5.initialize(login,password,server)
函数似乎仍然有效,它不会引发任何异常。当前客户端版本是 5.00 build 3033。客户端本身正在运行
metatrader5 ×10
python ×5
mql5 ×4
metatrader4 ×3
mql4 ×2
algorithm ×1
c# ×1
dll ×1
grpc ×1
mt4 ×1
ubuntu-17.04 ×1