import MetaTrader5 as mt5
from contextlib import contextmanager
import re
@contextmanager
def metatrader_connection(**kw):
try:
if not mt5.initialize(**kw):
print("Failed to initialize python MT5")
raise Exception
yield
finally:
mt5.shutdown()
def symbols_get(function=None):
"""
No function passed in will result in all symbols returned to the caller.
If a callable function is passed in then the function is passed a SymbolInfo tuple for filtering
:param function: callback function to filter the symbols
"""
all_symbols_in_terminal_info = map(
mt5.symbol_info,
['EURUSD', 'USDJPY', 'GBPJPY', 'EURGBP'] # *example only* this would represent all symbols available to the terminal
)
if function is not None:
return filter(function, all_symbols_in_terminal_info)
return all_symbols_in_terminal_info
if __name__ == "__main__":
with metatrader_connection():
all_terminal_symbols = symbols_get()
jpy_symbols = symbols_get(lambda s: "JPY" in s.name)
jpy_symbols_using_re = symbols_get(lambda s: re.match(r'\w*JPY\w*', s.name))
visible_symbols = symbols_get(lambda s: s.visible)
selected_symbols = symbols_get(lambda s: s.select)
def my_criteria(symbol_info):
return 'USD' in symbol_info.name and symbol_info.session_deals > 0
usd_symbols_with_session_deals = symbols_get(my_criteria)
intiMA(
string symbol, // имя символаENUM_TIMEFRAMES period, // периодint ma_period, // период усредненияint ma_shift, // смещение индикатора по горизонталиENUM_MA_METHOD ma_method, // тип сглаживанияENUM_APPLIED_PRICE applied_price // тип цены или handle
);
在5.0.29中增加了 symbols_total(), symbols_get([group="EURUSD, "USDGBP", *RU*"]), 需要最新的测试版终端才能工作。
同时在所有函数orders_get(), positions_get(), history_orders_get(), history_deals_get()中增加了按组过滤 - group="EURUSD, USDGBP", *RU*"。
order_check(), order_send()方法将返回请求字段中执行的初始请求。
谢谢你。
你到底是什么意思?把一个数组从mql5复制到py再复制回来?
你至少应该仔细阅读我们正在谈论的内容。
而什么是必要的或不需要的,你不应该只为自己考虑。如果你不需要,别人也需要。
只是出于兴趣,你想从MT转移哪些数据集?
开发商已经说过几次,他们不会向MT转让任何东西。你必须使用其他功能才能做到这一点。
只是出于兴趣,你想从MT转移哪些数据集?
开发商已经说过几次,他们不会向MT转让任何东西。你必须使用其他功能才能做到这一点。
是的,任何,他们自己的 计算数组。
我专门建造合成物,而双向传输阵列的能力是非常缺乏的。
很明显,你可以使用PyAPI,但它又是与dll绑定的。
而使用PyAPI,那么就根本不需要这个集成库。
是的,任何,你自己的 计算数组。
我专门建造合成物,而双向转移阵列的能力是非常缺乏的。
很明显,你可以使用PyAPI,但它又是绑定在一个dll上。
而使用PyAPI,那么就根本不需要这个集成库。
不要以为我想说教。你根据终端的报价来计算合成物。将引号转入Python,并在Python中进行所有计算。
但你必须对阵列的反向转移做体操。最简单的方法是通过数据库。
或者用这个。在某个地方,有一个关于这个项目的小线程。或者这样。
在任何情况下,这种整合不会解决交易者的所有各种愿望。但它解决了两个主要和最重要的问题:获得快速报价和交易管理。
其余的都是自己的,有自己的基础设施。
祝好运
不要以为我想说教。你根据终端的报价来计算合成物。将引号转入Python,并在Python中进行所有计算。
但你必须对阵列的反向转移做体操。最简单的方法是通过数据库。
或者用这个。 在某个地方,有一个关于这个项目的小线程。或者这样。
在任何情况下,这种整合不会解决交易者的所有各种愿望。但它解决了两个基本且非常重要的问题。 快速报价和贸易管理。
其余的都是自己的,有自己的基础设施。
祝好运
这就是我所说的,不管是什么实现方式,通过dll或数据库、套接字甚至是文本文件等。
但是,这又是一个与图书馆无关的额外拐杖。
问题是,现在我们正在积极开发整合mt5库,所以最好从一开始就为用户提供所有必要的功能。
谢谢,我看到的这个例子,它是有效的。
我有点关于别的东西。
positions_get - 列表中的TradePosition将被返回给我。 原则上说,你可以扔进熊猫,而且工作得很好。
但一切并不局限于一只熊猫,如果你需要得到类似的东西。
你必须以某种方式构成,熊猫或为...莫名其妙地做了很多额外的身体运动。
有了_asdict()就变得更方便了,如果写的人不是MQL5程序,而是Pythonist ...或者是一个数据网络主义者,那么列表/数据就是
在Python的基本元素中,有很多是建立在列表/Dict上的数据传输。
图元的使用,太频繁了,而且很多,但只有当你需要严格控制在其中移动的 数据类型 时才会使用。
并挂起一个错误处理程序,如果没有正确使用或分配。 嗯,在某个地方...:)我可能是错的。
在分配你的变量时,你可以使用一个简单的列表理解来代替。
positions = [p._asdict() for p in mt5.positions_get()]
在分配你的变量时,你可以使用一个简单的列表理解来代替。
这并不改变其本质...这是一个额外的周期
先生们,下一个话题中的人正在问关于自由派的问题。
URL:https://www.mql5.com/en/forum/306742/page11#comment_15595095
你能给我们一些支持吗?
symbols_get函数应该返回一个名为tuples的SymbolInfo的生成器。调用symbols_get而不使用args,应返回终端中所有可用的符号。该函数应该接受一个回调,该回调将被传入一个SymbolInfo namedtuple,以使用过滤函数进行处理。这里有一些例子。
晚上好,请你给我建议,我知道这个连接器不能从连接的指标 中获取信息?
例子。
晚上好,请你给我建议,我知道这个连接器不能从连接的指标 中获取信息?
例子。
你需要它来做什么?你不能用Python计算吗?你让我吃惊。