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 빌드 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가 터미널에서 형성됩니까?


각각 100메가바이트의 틱이 로드되는 천 개의 기호( AMPGlobalUSA-Demo )로 동시에 작업할 수 있는 방법을 이해하고 싶습니다.

 
아는 사람이 있다면 파이썬의 과거 데이터에서 일종의 MT5 차트를 빠르게 만드는 방법을 알려주세요. 저것들. 정적인 그림이 아닌 대화형.
 
fxsaber :
아는 사람이 있다면 파이썬의 과거 데이터에서 일종의 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

파이썬에서 나는 절대 0입니다. MT5-Python의 단순함과 편리함을 보여주는 동기 부여를 받고 싶습니다. 그러한 연결의 예가있을 것입니다. 코드를 공유하십시오.

아주 멋져 보입니다. MT5의 작업 코드를 보고 싶습니다.
 
fxsaber :

파이썬에서 나는 절대 0입니다. MT5-Python의 단순함과 편리함을 보여주는 동기 부여를 받고 싶습니다. 그러한 연결의 예가있을 것입니다. 코드를 공유하십시오.

나는 주로 MO를 위해 거의 아무것도 시각화하지 않습니다. 현대의 MOSH를 자연스럽게 다시 작성하고 완성된 것만 사용하는 것은 비현실적입니다. 저것들. 나를 위해 이것의 명백한 동기.

 
fxsaber :

아주 멋져 보입니다. MT5의 작업 코드를 보고 싶습니다.

나중에 코딩하는 것이 가능합니다 .. 사실, 링크에 기성품 예제가 있습니다

 
때로는 다소 편리한 방식으로 빠른 틱을 확인해야 하는 경우가 있습니다. 이를 위해 저는 ZoomPrice 표시기를 사용합니다. 그러나 링크에 따르면 시각화는 훨씬 더 시원합니다. MT5에서 Python으로 전송하고 멋진 틱 차트를 얻는 것이 매우 쉽다면 이것은 더 이상 많은 사람들에게 약한 동기가 아닙니다.
 
fxsaber :
때로는 다소 편리한 방식으로 빠른 틱을 확인해야 하는 경우가 있습니다. 이를 위해 저는 ZoomPrice 표시기를 사용합니다. 그러나 링크에 따르면 시각화는 훨씬 더 시원합니다. MT5에서 Python으로 전송하고 멋진 틱 차트를 얻는 것이 매우 쉽다면 이것은 더 이상 많은 사람들에게 약한 동기가 아닙니다.

현재 실시간 소켓을 통해 모든 정보(따옴표 제외)를 전송/반환할 수 있습니다. 유일한 제한 사항은 아직 테스터에서 작동하지 않는다는 것입니다.

 
Maxim Dmitrievsky :

현재 실시간 소켓을 통해 모든 정보(따옴표 제외)를 전송/반환할 수 있습니다. 유일한 제한 사항은 아직 테스터에서 작동하지 않는다는 것입니다.

불행히도 소스 코드가 없으면 이 기능은 나에게 그저 단어로 남습니다. 많이 알지는 못하지만 독학의 시작은 아마도 즉시 비틀 수 있는 실용적인 것부터 시작해야 할 것입니다.