MetaTrader 5 Python Kullanıcı Grubu - Metatrader'da Python nasıl kullanılır

 

Python için MetaTrader 5 modülü hazırlıyoruz.

R paketinde olduğu gibi, şu anda terminalin çalışan bir kopyasından veri çıkarmak için basit işlevleri test ediyoruz.

Çalışmayı nasıl test edebilirsiniz:

  1. https://www.python.org/downloads/windows/ adresinden Python 3.7.6 x64'ü %PATH% yoluna dahil ederek yükleyin

  2. Çizim desteği için matplotlib paketini teslim edin
    pip install matplotlib
  3. MetaTrader5 paketinin kurulumunu çalıştırın
    pip install MetaTrader5
    
  4. Bilgisayarda MetaTrader 5 build 2007 veya üstü olmalıdır

  5. Test komut dosyasını çalıştır
    python metatrader5-test.py
  6. MetaTrader 5 terminali arka planda başlayacak, veriler çıkarılacak, konsolda gösterilecek ve bir grafik çizilecektir.



Test kodu:

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


Daha sonra daha fazla özellik ekleyeceğiz ve paketi normal şekilde kurulabilmesi için genel Python paket deposuna yerleştireceğiz.

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

Korelasyon matrisinin hızlı çizimine bir örnek:

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


Dosyalar:
 

Python'dan bir geçmiş talebi geldiğinde, Terminal'de karşılık gelen hst ve tkc formları var mı?


Bin sembolle ( AMPGlobalUSA-Demo ) aynı anda çalışmanın nasıl mümkün olduğunu anlamak istiyorum, her biri için yüz megabaytlık keneler yüklenir.

 
Bilen varsa bana Python'daki geçmiş verilerden bir tür MT5 grafiğinin nasıl hızlı bir şekilde oluşturulacağını göster. Onlar. etkileşimli, statik resim değil.
 
fxsaber :
Bilen varsa bana Python'daki geçmiş verilerden bir tür MT5 grafiğinin nasıl hızlı bir şekilde oluşturulacağını göster. Onlar. etkileşimli, statik resim değil.

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

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

ya genel olarak plot.ly

 
Maxim Dmitrievsky :

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

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

ya genel olarak plot.ly

Python'da mutlak sıfırım. MT5-Python'un sadeliğini ve rahatlığını gösteren motivasyonel bir baskı almak istiyorum. Böyle bir bağlantının bir örneği olacak, kodu paylaşın.

Çok havalı görünüyor. MT5 için çalışma kodunu görmek istiyorum.
 
fxsaber :

Python'da mutlak sıfırım. MT5-Python'un sadeliğini ve rahatlığını gösteren motivasyonel bir baskı almak istiyorum. Böyle bir bağlantının bir örneği olacak, kodu paylaşın.

Ben MO için çoğunlukla, neredeyse hiçbir şeyi görselleştirmem. Modern MOSH şeylerini doğal olarak yeniden yazmak gerçekçi değildir, yalnızca bitmiş olanı kullanın. Onlar. Benim için bariz motivasyon bu.

 
fxsaber :

Çok havalı görünüyor. MT5 için çalışma kodunu görmek istiyorum.

daha sonra kodlamak mümkün olacak..aslında linklerde hazır örnekler var

 
Bazen hızlı kenelere az çok uygun bir şekilde bakmanız gerekir, bunun için ZoomPrice göstergesini kullanıyorum. Ancak bağlantılara göre, görselleştirme büyük ölçüde daha soğuktur. MT5'ten Python'a geçmek ve harika bir tik grafiği elde etmek çok kolaysa, bu artık birçokları için zayıf bir motivasyon değil.
 
fxsaber :
Bazen hızlı kenelere az çok uygun bir şekilde bakmanız gerekir, bunun için ZoomPrice göstergesini kullanıyorum. Ancak bağlantılara göre, görselleştirme büyük ölçüde daha soğuktur. MT5'ten Python'a geçmek ve harika bir tik grafiği elde etmek çok kolaysa, bu artık birçokları için zayıf bir motivasyon değil.

Şu anda gerçek zamanlı soketler aracılığıyla herhangi bir bilgiyi (tırnak işaretleri hariç) gönderebilir/iade edebilirsiniz. Tek sınırlama, henüz test cihazında çalışmıyor olmalarıdır.

 
Maxim Dmitrievsky :

Şu anda gerçek zamanlı soketler aracılığıyla herhangi bir bilgiyi (tırnak işaretleri hariç) gönderebilir/iade edebilirsiniz. Tek sınırlama, henüz test cihazında çalışmıyor olmalarıdır.

Ne yazık ki, kaynak kodları olmadan bu özellik benim için sadece kelimeler olarak kalıyor. Çok fazla bir şey bilmiyorum, ancak kendi kendine çalışmanın başlangıcı, muhtemelen, hemen değiştirebileceğiniz pratik bir şeyle başlamalıdır.

Neden: