MetaTrader 5 Python用户组 - 如何在Metatrader中使用Python - 页 64

 
ckeiderling :

大家好。


我希望你不要介意一个英国人在这里。 在花了很多时间在网上搜索没有成功后,希望得到一些指导。

在从Maxiums文章中得到一些启发后,我正在使用MetaTrader5的Python库。 我注意到内存处理方面的一个问题。

当我使用mt5库制作一个数据框架时,所产生的数据框架按预期工作。 我在一个函数 中做到了这一点,该函数 收集了ticks,然后在输出操作过的df之前进行各种分析。

然而,如果我重新运行创建DataFrame的函数,我注意到内存只是不断地从上一个实例中累积。

我使用mt5.copy_ticks_range()和mt5.copy_rates_range()得到了同样的问题。 我必须重置内核,以便清除内存。

我得到了同样的问题,即使删除了所有的代码,除了创建数据框架的那一行。 比如说。

def vel (symbol, lookback, lookforward, start_date, end_date, quantile_size):

ticks = pd.DataFrame (mt5.copy_ticks_range (symbol, datetime (start_date.year, start_date.month, start_date.day), datetime (end_date.year, end_date.month, end_date.day), mt5.COPY_TICKS_ALL), columns = [ 'time', 'bid', 'ask', 'last', 'volume', 'time_msc', 'flags', 'volume_real'] )

如果我运行几次,每次的内存使用量就会上升27MB。

行 # Mem usage Increment Line Contents =========================================== ======= 126.3 MiB 126.3 MiB def vel (symbol, lookback, lookforward, start_date, end_date, quantile_size): 153.3 MiB 26.9 MiB ticks = pd.DataFrame (mt5.copy_ticks_range (symbol, datetime (start_date.year, start_date . month, start_date.day), .


行 # 内存使用量 递增行内容

如果你想得到调试方面的帮助,那么你就必须给出一个完整的MVCE。这个片断是不够的。

 
ckeiderling:

大家好。


我希望你不要介意一个英国人在这里。 在花了很多时间在网上搜索没有成功之后,我想寻求一些指导。

在从Maxiums的文章中得到一些启发后,我正在使用MetaTrader5的Python库。 我注意到一个内存处理的问题。

当我使用mt5库制作一个数据框架时,所产生的数据框架按预期工作。我在一个函数 中做到了这一点,该函数 收集了ticks,然后在输出操作过的df之前进行各种分析。

然而,如果我重新运行创建DataFrame的函数,我注意到内存只是不断地从上一个实例中累积。

我使用mt5.copy_ticks_range()和mt5.copy_rates_range()得到了同样的问题。我必须重置内核,以便清除内存。

我得到了同样的问题,即使删除了所有的代码,除了创建数据框架的那一行。比如说。

def vel (symbol, lookback, lookforward, start_date, end_date, quantile_size):

ticks = pd.DataFrame (mt5.copy_ticks_range (symbol, datetime (start_date.year, start_date.month, start_date.day), datetime (end_date.year, end_date.month, end_date.day), mt5.COPY_TICKS_ALL), columns = [ 'time', 'bid', 'ask', 'last', 'volume', 'time_msc', 'flags', 'volume_real'] )

如果我运行几次,每次的内存使用量就会上升27MB。

行 # 内存使用量增加 行内容 ================================================== 126.3 MiB 126.3 MiB def vel (symbol, lookback, lookforward, start_date, end_date, quantile_size): 153.3 MiB 26.9 MiB ticks = pd.DataFrame (mt5.copy_ticks_range (symbol, datetime (start_date.year, start_date.month, start_date.day), .


行 # 内存使用量 递增行内容

也许你可以尝试使用https://docs.python.org/3/library/gc.html

https://stackabuse.com/basics-of-memory-management-in-python/

 

大家好。
当试图通过MetaTrader5.Buy()/Sell() 下单时,开始得到这个错误。

order_open = mt5.Buy(symbol, volume)

File "C:\Python3.7.4\lib\site-packages\MetaTrader5\__init__.py", line 313, in Buy

如果r.retcode != TRADE_RETCODE_REQUOTE和r.retcode !=TRADE_RETCODE_PRICE_OFF

AttributeError: 'NoneType' 对象没有'retcode'属性


你能建议如何纠正它吗?

附加的文件:
 
AxxelTrader:

大家好。
当试图通过 MetaTrader5.Buy () / Sell () 下单时,开始出现这样的错误。

order_open = mt5.Buy(symbol, volume)

File "C:\Python3.7.4\lib\site-packages\MetaTrader5\__init__.py", line 313, in Buy

如果r.retcode != TRADE_RETCODE_REQUOTE和r.retcode != TRADE_RETCODE_PRICE_OFF。

AttributeError: 'NoneType' 对象没有'retcode'属性


你能告诉我如何修复它吗?

r = mt5.Buy(...)
if r is None:
    print(mt5.last_error())
else:
    if r.retcode ...
 

你使用的是哪种终端的构建?

你更新到测试版了吗?

 
MetaQuotes:

你使用的是哪种终端的构建?

你更新到测试版了吗?

我更新到最新的 - MetaTrader5软件包版本:5.0.31

在使用mt5.Buy()、mt5.Sell()mt5.order_send(request)时都会出现这种错误。

还写道,没有 "retcode "属性。

 
AxxelTrader:

我更新到最新的 - MetaTrader5软件包版本:5.0.31

在使用mt5.Buy()、mt5.Sell()mt5.order_send(request)函数时都会出现这个错误。

还写道,没有 "retcode "属性。

问题是关于终端版本。

 
Renat Fatkhullin:

该问题是关于终端的版本。

MT5版本:5.00 build 2361 08 mar 2020

 
AxxelTrader:

MT5版本: 5.00 build 2361 08 mar 2020

请升级到测试版本。

功能 仅在测试版本中提供。

 
Renat Fatkhullin:

请升级到测试版本。

功能 仅在测试版本中提供。

已升级到2432版本。
,但错误仍然存在...
在不同的经纪商上试过,甚至...

附加的文件: