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

 
Sivoraksha-ia :
Garip ama aynı zamanda boş bir masa gelir. Terminalin kendisinde, Hızlı'da olduğu gibi, yüklemelerin çalışması için herhangi bir şey açmanız gerekiyor mu?

İstenen çifti içeren herhangi bir çizelge (keneler için).

 
Merhaba,


Python API'sini kullanan order_send() isteğinden sonra döndürülen OrderSendResult yapısıyla ilgili bir sorunum var. Döndürülen alanlardan biri, aracının işlem hakkındaki yorumunu içermesi gereken "yorum"dur. Ancak bu alan, aracıyı olması gerektiği gibi döndürmek yerine, isteğe iletilen yorumu döndürür.


Hatayı yeniden oluşturmak için aşağıdakileri yapın:

1. Yorum oluşturacak bir sorgu oluşturun. "Yorum" sorgusunu sahte bir yorumla doldurun.

2. Python API'sinden order_send() komutunu kullanarak bir istek gönderin.

3. Döndürülen OrderSendResult nesnesinde "yorum" alanını kontrol edin.


'Yorum' alanına aynı yorum iletilecektir, ancak bu, aracı tarafından döndürülen ve MT5 Terminalinin 'Günlük' sekmesinde kontrol edilebilen yorum olmalıdır.

Bunu kimse onaylayabilir mi? Aracının yorumunu almanın bir yolu var mı?



Документация по MQL5: Торговые функции / OrderSend
Документация по MQL5: Торговые функции / OrderSend
  • www.mql5.com
OrderSend - Торговые функции - Справочник MQL5 - Справочник по языку алгоритмического/автоматического трейдинга для MetaTrader 5
 
Vladimir Perervenko :

Belgelere bir açıklama ekler misiniz?

Katma

  • market_book_add
  • market_book_get
  • market_book_release
  • Документация по MQL5: Интеграция / MetaTrader для Python / market_book_add
    Документация по MQL5: Интеграция / MetaTrader для Python / market_book_add
    • www.mql5.com
    market_book_add - MetaTrader для Python - Интеграция - Справочник MQL5 - Справочник по языку алгоритмического/автоматического трейдинга для MetaTrader 5
     

    Python'da işlemlerin sanal muhasebesini düzenlemek istiyorum. Bu, çeşitli ticaret stratejilerinin özelliklerini ayırt etmek için gereklidir. Kullanılmış komisyoncu - Açılış. Ağ yok. Alet üzerindeki pozisyon ortaktır, dur ve al pozisyon için ortaktır. Bunu bu şekilde yapmaya karar verdim - Durmadan ve almadan, biraz hacimle bazı stratejiler kullanarak piyasada bir anlaşma açıyorum. Bunun yerine, aynı hacimde stop ve limit emirleri koydum. Alınan siparişlerin biletleri tabloda ayrı olarak saklanır. Orders = mt5.orders_get(symbol=symb) yaptığım her belirli zaman diliminde, bilinen bekleyen biletlerin bir listesini alıyorum order.ticket.tolist()

    Daha sonra, fırsatlar tablomu gözden geçiriyorum ve alınan açık siparişler listesinde bir stop emri bileti veya limit emri bileti olup olmadığını öğreniyorum. Stop yoksa zararı durdur sanal olarak tetiklenir, limit yoksa kar al. Daha sonra bu işleme ait girdileri tablomdan silerim ve bu işlem için bekleyenleri de silerim. Ve bir şey dışında her şey yolunda gidiyor - bu işlemdeki sanal karı nasıl hesaplayacağımı bilmiyorum. Fotoğraf, satış stopunun 141430 fiyatına nasıl ayarlandığını gösteriyor, ancak gerçek hayatta kayma meydana geldi ve açılış fiyatı 141350. Tetiklenen bir gecikme için talepte bulunuyorum: Deals = mt5.history_orders_get(ticket=246525084) ( fotoğraftaki gibi, sistem yerleştirirken bu bileti hatırladı), ancak yanıt, siparişin yürütülmesi hakkında bilgi içermiyor, sadece yerleşimi hakkında bilgi içeriyor. Tarih, satış durdurma işleminin aslında 15215696 numaralı biletle yapılan anlaşma tarafından yapıldığını gösteriyor ve bu bilete talepte bulunarak istediğiniz fiyatı anlaşmadan çıkarabilirsiniz. Ama önce, bir şekilde anlaşmadan bu bileti bulmam gerekiyor. Bu fırsat biletini bekleyen bir emir (satış durdurma) bileti ile nasıl eşleştirilir?

     
    Benim sorunumda ilerledi. Kapatılan pozisyonların geçmişini talep ederek mt5. history_deals_get kapalı bekleyen bir bileti ve işlem fiyatını emirler arasında bulabilirsiniz. Bu, parametrelerde bir zaman aralığı belirtirsem işe yarar. Ayrıca sipariş biletinin kendisine aktarılmasıyla aynı işleve bir çağrı var - mt5. history_deals_get ( bilet=TICKET ) - ancak yanıt (-2, 'Terminal: Geçersiz parametreler'). Bu parametreye sahip bir işlev hiç çalışıyor mu?
     
    Sevgili geliştiriciler, bir önceki soruma yorum yapabilir misiniz? History_deals_get işlevi ( bilet=TICKET ) çalışmıyor. Yanıt her zaman (-2, 'Terminal: Geçersiz parametreler') şeklindedir. Aynı işlev ancak farklı bir parametreyle history_deals_get ( position=POSITION ) çalışıyor, ancak tam olarak sipariş biletine göre bir anlaşma bulmam gerekiyor.
     
    Araştırma yapmak için tarihe erişimi olan bir haber takvimi python api yapmak mümkün müdür?
     
    Sevgili, MOEX'te ticaret yapanlar var mı? Terminale bağlantı başlatılırken sunucuya yeniden bağlanıp sertifika için parola girmesini istemesiyle aynı sorunu yaşayan kim?
    Документация по MQL5: Интеграция / MetaTrader для Python / initialize
    Документация по MQL5: Интеграция / MetaTrader для Python / initialize
    • www.mql5.com
    initialize - MetaTrader для Python - Интеграция - Справочник MQL5 - Справочник по языку алгоритмического/автоматического трейдинга для MetaTrader 5
     

    order_send ve order_check döndürür Yok. Nereye bakacağımı bilmiyorum. Bana neyin yanlış olduğunu söyle. Rica ederim.

    kod

    import MetaTrader5 as mt
    
    if not mt.initialize(login= 12345 ):#
        print("initialize() failed")
        mt.shutdown()
    
    terminal_info=mt.terminal_info()
    if terminal_info!=None:
        print(f"terminal {'''connected''' if terminal_info.connected else '''disconnected'''}")
    print(" version : ",mt. version ())
    
    info = mt.symbol_info("Si- 6.21 ")
    print(f"Si- 6.21   {info.bid=}  {info.ask=}")
    
    request = {
        "action": mt. TRADE_ACTION_PENDING ,
        "symbol": "Si- 6.21 ",
        "volume": 1 ,
        "type": mt. ORDER_TYPE_BUY_LIMIT ,
        "price": 77300 ,
        "sl": 0 ,
        "tp": 0 ,
        "deviation": 0 ,
        "magic": 123 ,
        "comment": "test",
        "type_time": mt. ORDER_TIME_DAY ,
        "type_filling": mt. ORDER_FILLING_RETURN ,
    }
    
    check = mt.order_check(request)
    print("order check: ",check)
    
    ret = mt.order_send(request)
    print("order send: ", ret)
    if not ret is None:
        print(f" retcode:{ret.retcode}")
    

    Çözüm

    terminal connected
    version:  (500, 2875, '02 Apr 2021')
    Si-6.21  info.bid=77770.0  info.ask=77773.0
    order check:  None
    order send:  None
    
    Process finished with exit code 0


    Sorunu çözmek için yönetildi. İstekte hacim, fiyat, sl, tp alanları float türünde olmalıdır. İşte böyle çalışır

    request = {
        "action": mt. TRADE_ACTION_PENDING ,
        "symbol": "Si- 6.21 ",
        "volume": 1. ,
        "type": mt. ORDER_TYPE_BUY_LIMIT ,
        "price": 77300. ,
        "sl": 0. ,
        "tp": 0. ,
        "deviation": 0 ,
        "magic": 123 ,
        "comment": "test",
        "type_time": mt. ORDER_TIME_DAY ,
        "type_filling": mt. ORDER_FILLING_RETURN ,
    }
     

    Meslektaşlarım lütfen bana söyleyin:

    1. Python'da mt5'ten enstrümanlar için mevcut ticaret seansı aralıklarını nasıl çıkarabilir ve bunları periyodik olarak güncelleyebilirsiniz?

    2. Açık pozisyonlarda Takip Eden Durdurma talep etmek ve değiştirmek için bir yöntemin kütüphanede görünmesini beklemeli miyiz?