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

 
Дмитрий Прокопьев :

Sabitler de değişti mi?

Çıkışta:

Evet, MT5_ öneki sabitlerden kaldırıldı, işte bir kullanım örneği:

from datetime import datetime
import MetaTrader5 as mt5

mt5.initialize()
mt5.wait()

print(mt5.terminal_info())
print(mt5. version ())

ticks1 = mt5.copy_ticks_from("EURAUD", datetime ( 2020 , 1 , 28 , 13 ), 10000 , mt5. COPY_TICKS_ALL )
ticks2 = mt5.copy_ticks_range("AUDUSD", datetime ( 2020 , 1 , 27 , 13 ), datetime ( 2020 , 1 , 28 , 13 , 1 ), mt5. COPY_TICKS_ALL )

rates1 = mt5.copy_rates_from("EURUSD", mt5.TIMEFRAME_M1, datetime ( 2020 , 1 , 28 , 13 ), 1000 )
rates2 = mt5.copy_rates_from_pos("EURGBP", mt5.TIMEFRAME_M1, 0 , 1000 )
rates3 = mt5.copy_rates_range("EURCAD", mt5.TIMEFRAME_M1, datetime ( 2020 , 1 , 27 , 13 ), datetime ( 2020 , 1 , 28 , 13 ))

mt5.shutdown()

print('ticks1(', len(ticks1), ')')
print('ticks2(', len(ticks2), ')')
print('rates1(', len(rates1), ')')
print('rates2(', len(rates2), ')')
print('rates3(', len(rates3), ')')

import matplotlib.pyplot as plt

plt.plot(rates2['time'], rates2['low'], 'g-')
plt.plot(rates2['time'], rates2['high'], 'r-')

plt.show()

daha karmaşık bir örnek - geçmişi olmayan iki hareketli ortalamaya sahip bir EA:

import MetaTrader5 as mt5
import time

mt5.initialize()
mt5.wait()

info = mt5.terminal_info()
if info.trade_allowed == False:
    print( "Auto-trading disabled in Terminal, enable it" )
    quit()

symbol = "EURUSD" # currency
lot = 0.01 ;       # buy lot
interval = 5        # price requesting interval in sec
long_len = 11      # long moving average length
short_len = 7      # short moving average length
long_ma = []       # long ma list
short_ma = []     # short ma list
ticket = 0          # ticket for sell

mt5.symbol_select(symbol)

# wait some time
time.sleep( 1 )

print( "\nPreparing..." )
for i in range(long_len):
    p = mt5.symbol_info_tick(symbol)
    print(p.bid, '/' ,p.ask)
    avg = (p.ask + p.bid) / 2

    long_ma.append(avg)
     if i >= long_len - short_len:
        short_ma.append(avg)
    time.sleep(interval)

print( "\nWorking..." )
while True:
    p = mt5.symbol_info_tick(symbol)
    print(p.bid, '/' ,p.ask)
    avg = (p.ask + p.bid) / 2
    
     # short values
    prev_short = sum(short_ma) / short_len
    short_ma.pop( 0 )
    short_ma.append(avg)
     short = sum(short_ma) / short_len
    
     # long values
    prev_long = sum(long_ma) / long_len
    long_ma.pop( 0 )
    long_ma.append(avg)
     long = sum(long_ma) / long_len

     # buy signal
     if prev_short < prev_long and short > long :
        print( "BUY: ([-1]:" ,prev_short, "/" ,prev_long, ", [0]:" , short , "/" , long , ")" )
        r = mt5.Buy(symbol, lot)
         if r.retcode != mt5. TRADE_RETCODE_DONE :
            print( "Buy failed: " , r)
         else :
            ticket = r.order
    elif prev_short > prev_long and short < long and ticket> 0 :
        print( "CLOSE: ([-1]:" ,prev_short, "/" ,prev_long, ", [0]:" , short , "/" , long , ")" )
        r = mt5.Sell(symbol, lot, ticket=ticket)
         if r.retcode != mt5. TRADE_RETCODE_DONE :
            print( "Sell failed: " , r)
         else :
            ticket = 0
           
    time.sleep(interval)

mt5.shutdown()
 
Almaz :

Evet, MT5_ öneki sabitlerden kaldırıldı, işte bir kullanım örneği:

daha karmaşık bir örnek - geçmişi olmayan iki hareketli ortalamaya sahip bir EA:

Teşekkür ederim.

Evrim ya iyidir. Geliştiricilere bir soru - pin çizgisi için bir yol haritası var mı?

Hangi yenilikler beklenebilir, ne beklenmez?

 
Belgeleri güncellemek istiyorum, evet
 

Test sunucusu (MetaQuotes-Beta sunucusu, adres 78.140.180.203:443), yeni özelliklere sahip terminal 2323'ün beta sürümüne sahiptir. Herkese açık beta yarın yayınlanacak.

Ayrıca Python için MetaTrader 5.0.20'nin yeni bir sürümünü (pip install --upgrade metatrader5), hesaplar arasında geçiş yapmak için yeni bir sözdizimi ile yayınladık:

import MetaTrader5 as mt5

mt5.initialize(timeout= 10000 )
mt5.initialize(login= 25035662 , password= "oxeb7lpb" , server= "MetaQuotes-Demo" )
mt5.login( 25035662 )
mt5.login( 25035662 , timeout= 10000 )
mt5.login( 25035662 , "oxeb7lpb" )
mt5.login( 25035662 , password= "oxeb7lpb" )
mt5.login( 25035662 , password= "oxeb7lpb" , server= "MetaQuotes-Demo" )

Artık hem tam hem de kısa biçimde, başlatma sırasında yetkilendirmeyi doğrudan belirtebilirsiniz.

Bekleme işlevi kullanımdan kaldırıldı ve şimdi bekleme ile tam başlatma döngüsü, bekleme süresini milisaniye olarak da ayarlayabileceğiniz doğrudan başlatma sırasında gerçekleştirilir.

Python kitaplığının, taşınabilir modda (/taşınabilir anahtar) kurulmuş olsa bile, terminalin en son aktif kopyasını bulması zaten garantilidir.


Python programları zaten doğrudan navigatörde gösterilmektedir:


Bu Cuma yayınlandığında, normal MQL5 komut dosyaları olarak tam olarak başlatılabilirler ve çizelgelere bağlanacaklar.


Gelecekte, okuma modunda python kitaplığına tüm (özel dahil) göstergelere erişim ekleyeceğiz. Bu, python'da çalışmayı daha üretken hale getirecektir. Ama bu henüz bir öncelik değil, çok sonra yapacağız.

 
Renat Fatkhullin :

Ayrıca Python için MetaTrader 5.0.20'nin yeni bir sürümünü (pip install --upgrade metatrader5), hesaplar arasında geçiş yapmak için yeni bir sözdizimi ile yayınladık.

MQL5'ten daha fazla olasılık var.

 

Paralel olarak, editörün yeteneklerini genişletiyoruz ve bir sonraki sürümde (bir sonraki Cuma günü değil) C++ programlarını derlemek için Clang/LLVM ve Microsoft Visual Studio'yu tam olarak kullanma yeteneği olacak:


Belki de C#'ı dahil edeceğiz.


SQLite veritabanlarının tam kullanımı için birçok çalışma yapılmıştır: SQLite: MQL5'te SQL veritabanlarıyla yerel çalışma

Bu, farklı sistemler arasında ve terminal içinde büyük miktarda veriyi rahatça çalıştırmanıza ve değiş tokuş etmenize olanak tanır.

 
fxsaber :

MQL5'ten daha fazla olasılık var.

başarır mıyız?

 
Renat Fatkhullin :

Paralel olarak, bir sonraki sürümde editörün yeteneklerini genişletiyoruz (bir sonraki Cuma günü değil)
C++ programlarını derlemek için Clang/LLVM ve Microsoft Visual Studio'yu tam olarak kullanma yeteneği olacaktır:

.lib dosyalarını projelere bağlamak için
bağlayıcı eklenecek mi?

 
Roman :

.lib dosyalarını projelere bağlamak için
bağlayıcı eklenecek mi?

Projeler içinde çeşitli hedef seçenekleri belirleyebilirsiniz:



DLL/EXE dosyaları özel tanımlama ayarlarına, kitaplıklara ve derleyici için ek seçeneklere sahiptir:

Bağlayıcı, Clang veya Visual Studio tarafından otomatik olarak kullanılır. Bunu açıkça belirtmenize gerek yoktur.

 
fxsaber :

MQL5'ten daha fazla olasılık var.

Sonuç olarak MetaTrader 5 platformu daha fazla özelliğe sahiptir.

Kendi başına, herhangi bir dil, onu verilerle besleyen ve işlemlerin yürütülmesini sağlayan bir bilgi ve ticaret platformu (bir platform bir terminal değil, bir altyapıya ve bir ekosisteme sahip tüm sunucular kompleksidir) olmadan işe yaramaz.

Amacımız, farklı tüketici segmentlerini kapsayan, algoritmik ticaret için geniş bir araç yelpazesine sahip eksiksiz bir platform sağlamaktır.

Python, makine öğreniminde net bir kazanan ve araştırma yapmak için çok verimli bir dildir. Test cihazına sürülemese bile, doğrudan entegrasyon modunda da iyidir.


Bu arada, diğer Python kitaplıklarından farklı olarak (genellikle alından yazılır ve kötü optimize edilir), büyük grafik verilerinin geri dönüşünü büyük ölçüde optimize ettik. Bu, bellekten verimli bir şekilde yararlanabileceğiniz ve hızlı bir şekilde derin bir geçmiş alabileceğiniz anlamına gelir.