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

 

我们正在为Python准备MetaTrader 5模块。

R包 一样,我们目前在简单的函数上进行测试,从终端的运行副本中提取数据。

你如何能测试操作。

  1. https://www.python.org/downloads/windows/ 安装 Python 3.7.6 x64,其中包括 %PATH% 路径

  2. 交付matplotlib包以支持图形
    pip install matplotlib
  3. 运行MetaTrader5软件包的安装
    pip install MetaTrader5
    
  4. 你必须在你的电脑上安装MetaTrader 5 build 2007或更高版本。

  5. 运行测试脚本
    python metatrader5-test.py
  6. MetaTrader 5终端将在后台运行,数据将被提取,显示在控制台,并绘制图表



测试代码。

from datetime import datetime
from MetaTrader5 import *

MT5Initialize()
MT5WaitForTerminal()

print(MT5TerminalInfo())
print(MT5Version())

ticks1 = MT5CopyTicksFrom("EURAUD", datetime(2019,1,28,13), 10000, MT5_COPY_TICKS_ALL)
ticks2 = MT5CopyTicksRange("AUDUSD", datetime(2019,1,27,13), datetime(2019,1,28,13,1), MT5_COPY_TICKS_ALL)

rates1 = MT5CopyRatesFrom("EURUSD", MT5_TIMEFRAME_M1, datetime(2019,1,28,13), 1000)
rates2 = MT5CopyRatesFromPos("EURGBP", MT5_TIMEFRAME_M1, 0, 1000)
rates3 = MT5CopyRatesRange("EURCAD", MT5_TIMEFRAME_M1, datetime(2019,1,27,13), datetime(2019,1,28,13))

MT5Shutdown()

#DATA
print('ticks1(', len(ticks1), ')')
for val in ticks1[:10]: print(val)
print('ticks2(', len(ticks2), ')')
for val in ticks2[:10]: print(val)
print('rates1(', len(rates1), ')')
for val in rates1[:10]: print(val)
print('rates2(', len(rates2), ')')
for val in rates2[:10]: print(val)
print('rates3(', len(rates3), ')')
for val in rates3[:10]: print(val)

#PLOTTING
x_time = [x.time for x in rates2]
y_open = [y.open for y in rates2]
y_close = [y.close for y in rates2]

import matplotlib.pyplot as plt

plt.plot(x_time, y_open, 'g-')
plt.plot(x_time, y_close, 'r-')

plt.show()


我们将在以后添加更多的功能,并将该包放在公共的Python包库中,这样它就可以开箱即用地安装。

Python Releases for Windows
Python Releases for Windows
  • www.python.org
The official home of the Python Programming Language
附加的文件:
 

一个快速绘制相关矩阵的例子。

from MetaTrader5 import *
from datetime import date
import pandas as pd 
import matplotlib.pyplot as plt 

# Initializing MT5 connection 
MT5Initialize()
MT5WaitForTerminal()

print(MT5TerminalInfo())
print(MT5Version())

# Create currency watchlist for which correlation matrix is to be plotted
sym = ['EURUSD','GBPUSD','USDJPY','USDCHF','AUDUSD','GBPJPY']

# Copying data to dataframe
d = pd.DataFrame()
for i in sym:
     rates = MT5CopyRatesFromPos(i, MT5_TIMEFRAME_M1, 0, 1000)
     d[i] = [y.close for y in rates]

# Deinitializing MT5 connection
MT5Shutdown()

# Compute Percentage Change
rets = d.pct_change()

# Compute Correlation
corr = rets.corr()

# Plot correlation matrix
plt.figure(figsize=(10, 10))
plt.imshow(corr, cmap='RdYlGn', interpolation='none', aspect='auto')
plt.colorbar()
plt.xticks(range(len(corr)), corr.columns, rotation='vertical')
plt.yticks(range(len(corr)), corr.columns);
plt.suptitle('FOREX Correlations Heat Map', fontsize=15, fontweight='bold')
plt.show()


附加的文件:
 

当一个历史请求来自Python时,相应的hst和tkc是否在终端生成?


我想了解如何能够同时处理一千种符号(AMPGlobalUSA-Demo),对每一种符号都要加载一百兆字节的刻度。

 
如果有人知道,请告诉我如何用Python从历史数据快速创建一个类似的MT5图表。也就是说,是互动的,而不是静态的图片。
 
fxsaber:
如果有人知道,请告诉我如何在Python中根据历史数据快速创建一个类似于MT5的图表。也就是说,是互动的,而不是静态的图片。

https://plot.ly/~pari/67/stock-chart-for-netflix-inc/#//

https://plot.ly/python/candlestick-charts/

plot.ly一般情况下

 
Maxim Dmitrievsky:

https://plot.ly/~pari/67/stock-chart-for-netflix-inc/#//

https://plot.ly/python/candlestick-charts/

plot.ly一般来说。

我在Python方面完全是个零。我希望得到一个激励的推动,这表明MT5-Python的简单性和实用性。会有这样一个连接的例子,请分享代码。

它看起来非常酷。希望能看到MT5的工作代码。
 
fxsaber:

我在Python方面完全是个零。希望得到一个激励的推动,看到MT5-Python的简单性和实用性。会有这样一个连接的例子,请分享代码。

我主要是为了MO,几乎没有设想过什么。现代MO的东西要自然重写是不现实的,只能用现成的。也就是说,对我来说,明显的动机是这样的。

 
fxsaber:

它看起来非常酷。我希望看到MT5的工作代码。

可以稍后进行编码......事实上,在链接中已经有现成的例子。

 
有时我需要以一种或多或少方便的形式快速查看点位,为此我使用ZoomPrice指标。但在链接上,可视化的效果要好得多。如果从MT5转移到Python非常容易,并得到一个很酷的tick图表--这对很多人来说不是一个坏的动机。
 
fxsaber:
有时我需要快速查看或多或少方便的刻度线,我为此使用ZoomPrice指标。但可视化在链接上要好得多。如果从MT5转移到Python非常简单,并得到一个很酷的ticks图表--这对很多人来说不是一个坏的动机。

目前,任何信息(除报价外)都可以通过实时插座发送/返回。唯一的限制是,它们还不能在测试器中工作。

 
Maxim Dmitrievsky:

目前,任何信息(除报价外)都可以通过实时插座发送/返回。唯一的限制是,它在测试器中还不能工作。

不幸的是,没有源代码,这个功能对我来说只是空话。很我不知道,自学的开始可能应该是一些实用的东西,可以马上就能转起来。

原因: