MetaTrader 5 Python User Group - como usar o Python no Metatrader

 

Estamos a preparar o módulo MetaTrader 5 para Python.

Como com o pacote R, estamos testando funções simples para extrair dados de uma cópia em execução do terminal, por enquanto.

Como você pode testar a operação:

  1. Instale o Python 3.7.6 x64 de https://www.python.org/downloads/windows/ com o caminho %PATH% incluído

  2. Entregue o pacote matplotlib para suporte gráfico
    pip install matplotlib
  3. Execute a instalação do pacote MetaTrader5
    pip install MetaTrader5
    
  4. Você deve ter o MetaTrader 5 build 2007 ou posterior instalado no seu PC.

  5. Execute o roteiro de teste
    python metatrader5-test.py
  6. O terminal MetaTrader 5 será executado em segundo plano, os dados serão extraídos, mostrados no console e um gráfico será desenhado.



Código de teste:

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()


Nós adicionaremos mais funcionalidades mais tarde e colocaremos o pacote em um repositório público de pacotes Python, para que ele possa ser instalado out-of-the-box.

Python Releases for Windows
Python Releases for Windows
  • www.python.org
The official home of the Python Programming Language
Arquivos anexados:
 

Um exemplo de um desenho rápido de uma matriz de correlação:

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()


Arquivos anexados:
 

Quando um pedido de história vem de Python, o hst e tkc correspondentes são gerados em Terminal?


Gostaria de compreender como é possível trabalhar com mil símbolos simultaneamente(AMPGlobalUSA-Demo), para cada um dos quais são carregados cem megabytes de carraças.

 
Se alguém souber, mostre-me como criar rapidamente um gráfico MT5 semelhante a partir de dados históricos em Python. Isto é, interactivo, não uma imagem estática.
 
fxsaber:
Se alguém souber, mostre-me como criar rapidamente um gráfico semblante de MT5 a partir de dados históricos em Python. Isto é, interactivo, não uma imagem estática.

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

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

plot.ly em geral

 
Maxim Dmitrievsky:

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

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

plot.ly em geral.

Eu sou um zero completo em Python. Gostaria de obter um empurrão motivacional que mostrasse a simplicidade e usabilidade do MT5-Python. Haverá um exemplo de tal ligação, por favor partilhe o código.

Parece muito fixe. Gostaria de ver um código de trabalho para o MT5.
 
fxsaber:

Eu sou um zero completo em Python. Gostaria de receber um empurrão motivacional que visse a simplicidade e a usabilidade do MT5-Python. Haverá um exemplo de tal ligação, por favor partilhe o código.

Sou maioritariamente a favor do MO, quase nunca visualizo nada. O material MO moderno é irrealista para reescrever naturalmente, só usar material pronto a usar. Isto é, a motivação óbvia para mim é esta.

 
fxsaber:

Parece muito fixe. Gostaria de ver um código de trabalho para o MT5.

pode ser codificado mais tarde... na verdade, há exemplos prontos nos links

 
Por vezes preciso de uma visão rápida dos carrapatos de uma forma mais ou menos conveniente, para isso utilizo o indicador ZoomPrice. Mas a visualização é muito mais fixe nos links. Se é muito fácil transferir do MT5 para Python e obter uma tabela de carrapatos fixe - isso não é uma má motivação para muitas pessoas.
 
fxsaber:
Por vezes preciso de ver rapidamente os carrapatos de forma mais ou menos prática, para isso utilizo o indicador ZoomPrice. Mas a visualização é muito melhor nos links. Se é muito simples transferir do MT5 para Python e obter uma tabela de carrapatos fixe - isso não é uma má motivação para muitas pessoas.

Neste momento, qualquer informação (que não sejam citações) pode ser enviada/retornada através de tomadas em tempo real. A única limitação é que eles ainda não trabalham no testador.

 
Maxim Dmitrievsky:

Neste momento, qualquer informação (que não sejam citações) pode ser enviada/retornada através de tomadas em tempo real. A única limitação é que ainda não funciona no testador.

Infelizmente, sem códigos-fonte, esta característica para mim são apenas palavras. Muito não sei, e o início do auto-estudo deveria provavelmente ser algo prático para começar, que pode ser girado de imediato.

Razão: