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

 
Almaz :

Symbols_total(), symbol_get([group="EURUSD, "USDGBP", *RU*"]) 5.0.29'da eklendi), çalışması için Terminal'in en son beta sürümünü yüklemeniz gerekir.

Ayrıca tüm fonksiyonlarda order_get(), position_get(), history_orders_get(), history_deals_get(), gruba göre filtreleme yeteneği eklendi - group="EURUSD, "USDGBP", *RU*".
Yanıttaki order_check(), order_send() yöntemleri, istek alanındaki orijinal yürütme isteğini döndürür.

Teşekkür ederim.

 
Roman :

Ne demek istiyorsun? Diziyi mql5'ten py'ye ve geriye kopyalıyor musunuz?
En azından ne hakkında olduğunu dikkatlice okudun.
Ve gerekli olan ya da olmayan, sadece kendiniz için düşünmenize gerek yok. Senin ihtiyacın yoksa, başkalarının ihtiyacı var.

İlgi alanı dışında, MT'den hangi veri dizilerini aktarmak istiyorsunuz?

MT'ye geçiş, geliştiriciler zaten birkaç kez söylediler, hiçbir şey olmayacak. Bunu yapmak için diğer seçenekleri kullanmanız gerekir.

 
Vladimir Perervenko :

İlgi alanı dışında, MT'den hangi veri dizilerini aktarmak istiyorsunuz?

MT'ye geçiş, geliştiriciler zaten birkaç kez söylediler, hiçbir şey olmayacak. Bunu yapmak için diğer seçenekleri kullanmanız gerekir.

Evet, herhangi biri, hesaplanmış dizileri.
Sadece sentetikler yapıyorum ve dizileri her iki yönde de geçirme yeteneği çok eksik.
PyAPI'yi kullanabileceğiniz açıktır, ancak bu yine bir dll'ye bağlanmadır.
Ve PyAPI kullanarak, bu entegrasyon kitaplığına hiç gerek yok.

 
Roman :

Evet, herhangi biri, hesaplanmış dizileri.
Sadece sentetikler yapıyorum ve dizileri her iki yönde de geçirme yeteneği çok eksik.
PyAPI'yi kullanabileceğiniz açıktır, ancak bu yine bir dll'ye bağlanmadır.
Ve PyAPI kullanarak, bu entegrasyon kitaplığına hiç gerek yok.

Öğretmek istediğimi sanmayın. Sentetikleri terminalden alınan alıntılara göre sayarsınız. Python'daki alıntıları sıfırlayın ve içindeki tüm hesaplamaları yapın.

Ancak dizilerin ters aktarımı ile jimnastik yapmanız gerekecek. En kolay yol veritabanından geçer.

Veya bunu kullanın. Bir yerde bu proje ile küçük bir şube vardı. Ya da bu .

Hiç kimse için bu entegrasyon, tüccarların tüm isteklerini çözmeyecektir. Ancak iki ana ve bence en önemli görevi çözüyor: hızlı fiyat teklifi almak ve işlemleri yönetmek.

Geri kalan her şey kendi altyapısı ile bağımsızdır.

İyi şanlar

khramkov/MQL5-JSON-API
khramkov/MQL5-JSON-API
  • khramkov
  • github.com
<a href="#metaquotes-mql5
 
Vladimir Perervenko :

Öğretmek istediğimi sanmayın. Sentetikleri terminalden alınan alıntılara göre sayarsınız. Python'daki alıntıları sıfırlayın ve içindeki tüm hesaplamaları yapın.

Ancak dizilerin ters aktarımı ile jimnastik yapmanız gerekecek. En kolay yol veritabanından geçer.

Veya bunu kullanın. Bir yerde bu proje ile küçük bir şube vardı. Ya da bu .

Hiç kimse için bu entegrasyon, tüccarların tüm isteklerini çözmeyecektir. Ancak iki ana ve bence en önemli görevi çözüyor: hızlı fiyat teklifi almak ve işlemleri yönetmek.

Geri kalan her şey kendi altyapısı ile bağımsızdır.

İyi şanlar

Hangi uygulama olursa olsun, dll veya veritabanı, soketler veya en azından metin dosyaları vb.
Ancak bu yine kütüphaneyle ilgili olmayan ek bir koltuk değneğidir.
Mesele şu ki, mt5 entegrasyon kitaplığı şu anda aktif olarak geliştiriliyor, bu nedenle başlangıçta kullanıcılar için gerekli özelliklerin içine yerleştirilmesi arzu edilir.

 
Dmitry Prokopyev :

Teşekkürler, bu örneği gördüm, işe yarıyor.

Ben biraz başka bir şey hakkındayım.


position_get - TradePosition listesi bana iade edilecek. Prensip olarak, pandaları fırlatabilir ve iyi çalışabilirsiniz.

Ancak her şey bir panda ile sınırlı değildir ve aşağıdaki gibi bir şeye ihtiyacınız varsa:

bir şekilde beste yapmalısınız, pandalar ya da ... bir şekilde çok fazla vücut hareketi için.

_asdict() ile çok daha kullanışlı hale geldi, eğer yazan kişi bir MQL5 prog değil, diyelim ki bir pitonist ... veya bir datasynetist ise, o zaman list / dict

Python'un temel öğeleri, birçoğunun liste/dikt üzerine bir veri aktarımı oluşturmasıdır.

Tuple'lar çok sık ve çok kullanılır, ancak yalnızca içinde hareket eden veri türlerini sıkı bir şekilde kontrol etmeniz gerekiyorsa.

ve ayrıca düzgün kullanılmamış veya atanmamışsa bir hata işleyicisi asın. Eh, bir yerde ... :) Yanılıyor olabilirim.

Bunun yerine değişkeninizi atarken basit bir liste kavrayışı kullanabilirsiniz.

positions = [p._asdict() for p in mt5.positions_get()]
 
nicholi shen :

Bunun yerine değişkeninizi atarken basit bir liste kavrayışı kullanabilirsiniz.

bu özü değiştirmez ... bu ek bir döngüdür

 

Beyler, bir sonraki şubede çocuklar ikisinden biri hakkında sorular soruyorlar:

URL: https://www.mql5.com/en/forum/306742/page11#comment_15595095

destek verecek misiniz?


Symbols_get işlevi, tuples adlı bir SymbolInfo oluşturucusu döndürmelidir. args olmadan symbol_get'e yapılan bir çağrı, uçbirimde bulunan tüm sembolleri döndürmelidir. İşlev, filtre işlevi kullanılarak işlenecek bir SymbolInfo adlı kümede geçirilecek bir geri arama almalıdır. İşte bazı örnekler.

import MetaTrader5 as mt5
from contextlib import contextmanager
import re


@contextmanager
def metatrader_connection(**kw):
    try:
         if not mt5.initialize(**kw):
            print("Failed to initialize python MT5")
            raise Exception
        yield
    finally:
        mt5.shutdown()


def symbols_get(function=None):
    """
    No function passed in will result in all symbols returned to the caller.
    If a callable function is passed in then the function is passed a SymbolInfo tuple for filtering
    :param function: callback function to filter the symbols
    """
    all_symbols_in_terminal_info = map(
        mt5.symbol_info,
        ['EURUSD', 'USDJPY', 'GBPJPY', 'EURGBP'] # *example only* this would represent all symbols available to the terminal
    )
     if function is not None:
         return filter(function, all_symbols_in_terminal_info)
     return all_symbols_in_terminal_info


if __name__ == "__main__":
    with metatrader_connection():
        all_terminal_symbols = symbols_get()
        jpy_symbols = symbols_get(lambda s: "JPY" in s.name)
        jpy_symbols_using_re = symbols_get(lambda s: re.match(r'\w*JPY\w*', s.name))
        visible_symbols = symbols_get(lambda s: s.visible)
        selected_symbols = symbols_get(lambda s: s.select)


        def my_criteria(symbol_info):
             return 'USD' in symbol_info.name and symbol_info.session_deals > 0


        usd_symbols_with_session_deals = symbols_get(my_criteria)
 

İyi akşamlar, lütfen söyleyin, anladığım kadarıyla, bu konektör bağlı göstergelerden bilgi alamıyor mu?

Misal:

 int    iMA (
   string               symbol,        // имя символа
   ENUM_TIMEFRAMES       period,        // период
   int                  ma_period,    // период усреднения
   int                  ma_shift,     // смещение индикатора по горизонтали
   ENUM_MA_METHOD        ma_method,    // тип сглаживания
   ENUM_APPLIED_PRICE    applied_price  // тип цены или handle
   );
 
9805244 :

İyi akşamlar, lütfen söyleyin, anladığım kadarıyla, bu konektör bağlı göstergelerden bilgi alamıyor mu?

Misal:

Bu neden senin için? Python'da hesaplayamaz mısın? Sürpriz.