Sonsuza kadar harika ve korkunç MT4 (veya bir geçiş stratejisinin nasıl doğru bir şekilde geliştirileceği) - sayfa 15

 
fxsaber :

Hayır, alım satım faaliyetinin son kaydı ikinci kayıttadır.

Ve burada her şey düzen açısından doğru:

 2021.05 . 05 10 : 32 : 35.896 Trades   '160122203' : market buy 0.01 EURUSD placed for execution
2021.05 . 05 10 : 32 : 35.931 Trades   '160122203' : order # 2249869869 buy 0.01 / 0.01 EURUSD at market done in 81.962 ms
2021.05 . 05 10 : 32 : 35.931 Trades   '160122203' : deal # 2240398230 buy 0.01 EURUSD at 1.19876 done (based on order # 2249869869 )
2021.05 . 05 10 : 32 : 35.931 Trades   '160122203' : market sell 0.01 EURUSD, close # 2249869868 buy 0.01 EURUSD 1.19876
2021.05 . 05 10 : 32 : 35.978 Trades   '160122203' : accepted market sell 0.01 EURUSD, close # 2249869868 buy 0.01 EURUSD 1.19876
2021.05 . 05 10 : 32 : 35.978 Trades   '160122203' : market sell 0.01 EURUSD, close # 2249869868 buy 0.01 EURUSD 1.19876 placed for execution
2021.05 . 05 10 : 32 : 36.009 Trades   '160122203' : order # 2249869870 sell 0.01 / 0.01 EURUSD at market done in 77.026 ms
2021.05 . 05 10 : 32 : 36.009 Trades   '160122203' : deal # 2240398231 sell 0.01 EURUSD at 1.19876 done (based on order # 2249869870 )
2021.05 . 05 10 : 32 : 36.009 Scripts script Test (EURUSD,M1) removed

Burada baskısız seçeneğe geri döndüm ve tamamlandıktan sonra yine bir pozisyon kaldı. Alım satım işlemleri gerçekleştirdikten sonra bir tür duraklamanın sürdürülmesi gerektiği ortaya çıktı. Kahretsin, o hala bir koltuk değneği.

 
Ihor Herasko :

Peki, toplamı kim güncelleyecek? ))

ancak açık bir pozisyon olduğunda, komut dosyası onu kapatır ve başka hiçbir şey yapmaz

anlık görüntü2

\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\

pozisyon açmaya çalışsam bile script anında kapatıyor

 
fxsaber :

IsSynchronized() yazmayı başardı. Kod ağır. Nasıl yayınlayacağıma henüz karar vermedim.

Bu nasıl? Bulunmuş gibi, ama sanki değil mi? Ve çözümün özü veya ilkesi nedir?

 
SanAlex :

ancak açık bir pozisyon olduğunda, komut dosyası onu kapatır ve başka hiçbir şey yapmaz

Tüm sunucular iki pozisyonun açılışını oynamaz. Sizin durumunuzda, bildirilen hata üçüncü bir taraftan kendini gösterir (bir taraf - iki konum, ikincisi - bir).

 
Ihor Herasko :

Ve burada her şey düzen açısından doğru:

Ticaret, otomatik ticaret sistemleri ve ticaret stratejilerinin test edilmesi hakkında forum

Sonsuza kadar harika ve korkunç MT4 (veya bir geçiş stratejisinin nasıl doğru bir şekilde geliştirileceği)

Ihor Herasko , 2021.05.05 09:35

Ve burada her şey düzen açısından doğru:

 2021.05 . 05 10 : 32 : 35.896 Trades   '160122203' : market buy 0.01 EURUSD placed for execution
2021.05 . 05 10 : 32 : 35.931 Trades   '160122203' : order # 2249869869 buy 0.01 / 0.01 EURUSD at market done in 81.962 ms
2021.05 . 05 10 : 32 : 35.931 Trades   '160122203' : deal # 2240398230 buy 0.01 EURUSD at 1.19876 done (based on order # 2249869869 )
2021.05 . 05 10 : 32 : 35.931 Trades   '160122203' : market sell 0.01 EURUSD, close # 2249869868 buy 0.01 EURUSD 1.19876
2021.05 . 05 10 : 32 : 35.978 Trades   '160122203' : accepted market sell 0.01 EURUSD, close # 2249869868 buy 0.01 EURUSD 1.19876
2021.05 . 05 10 : 32 : 35.978 Trades   '160122203' : market sell 0.01 EURUSD, close # 2249869868 buy 0.01 EURUSD 1.19876 placed for execution
2021.05 . 05 10 : 32 : 36.009 Trades   '160122203' : order # 2249869870 sell 0.01 / 0.01 EURUSD at market done in 77.026 ms
2021.05 . 05 10 : 32 : 36.009 Trades   '160122203' : deal # 2240398231 sell 0.01 EURUSD at 1.19876 done (based on order # 2249869870 )
2021.05 . 05 10 : 32 : 36.009 Scripts script Test (EURUSD,M1) removed

Vurgulanan çizgiler sırayı onaylar.

PositionsTotal = 1 - kapatmak için bir emir gönderir.

  • Bundan sonra, PositionsTotal = 2 ve p.1'den gelen sipariş kapatılır.
  • Kapatma, komut dosyası yürütmesinin tamamlanmasından sonra gerçekleşir. Baskı önbelleği biraz bozuluyor.

     
    Dmitry Fedoseev :

    Bu nasıl? Bulunmuş gibi, ama sanki değil mi?

    Eller henüz uzanmadı. gün içinde yayınlayacağım.

    Ve çözümün özü veya ilkesi nedir?

    Ticaret geçmişinin mevcut ticaret ortamına uygunluğunun bir analizi vardır. Frensiz.

    Ayrıca Result.order'ı da kontrol eder.

    Sonuç olarak, kullanım aşağıdaki gibidir: IsSync() false döndürdü - Terminal'deki ticaret ortamı çarpık, aksi takdirde her zamanki gibi davranabilirsiniz.

     
    MT geliştiricileri geleneksel olarak sessizdir. Şerif, Kızılderililerin sorunlarıyla ilgilenmiyor.
     
    Ihor Herasko :

    Baskılar eklendi. Şimdi beklendiği gibi iki pozisyon kaldı:

    Sonuç:

    Trade.ResultRetcodeDescription() ekleyin

    
    #include <Trade\Trade.mqh>
    
    void OnStart ()
    {
      CTrade Trade;
      
       while (! IsStopped () && ( PositionsTotal () <= 1 )) // Закончим, когда появится более одной позиции.
         if ( PositionsTotal () == 1 )
        {
          Trade.PositionClose( PositionGetTicket ( 0 )); // Если есть позиция - закрываем.
           Print ( "Закрытие, т. к. PositionsTotal() равно 1" );
        }
         else if (! OrdersTotal ())
        {
           printf ( "Перед открытием. PositionsTotal: %d, OrdersTotal: %d" , PositionsTotal (), OrdersTotal ());
          Trade.Buy( 0.01 ); // Если нет позиции и ордера - открываем позицию.
            Print (Trade.ResultRetcodeDescription());
           printf ( "После открытия. PositionsTotal: %d, OrdersTotal: %d" , PositionsTotal (), OrdersTotal ());
        }
        
       Print ( "Выход. PostionsTotal: " , PositionsTotal ());
    }

    Ayrıca ResultDeal / ResultOrder / ResultComment ve Order. Belirtmek, bildirmek

    Mutlaka bir cevap olacaktır.

    Belirtmek, bildirmek
    Документация по MQL5: Стандартная библиотека / Торговые классы / CTrade / ResultOrder
    Документация по MQL5: Стандартная библиотека / Торговые классы / CTrade / ResultOrder
    • www.mql5.com
    ResultOrder - CTrade - Торговые классы - Стандартная библиотека - Справочник MQL5 - Справочник по языку алгоритмического/автоматического трейдинга для MetaTrader 5
     
    Rashid Umarov :

    Trade.ResultRetcodeDescription() ekleyin

    Ayrıca ResultDeal / ResultOrder / ResultComment ve Order. Belirtmek, bildirmek

    Mutlaka bir cevap olacaktır.

    Belirtmek, bildirmek

    Yapılmış:

     #define PRINT(A) Print ( #A + " = " + ( string )(A))
    
    #include <Trade\Trade.mqh>
    
    void OnStart ()
    {
      CTrade Trade;
      
       while (! IsStopped () && ( PositionsTotal () <= 1 )) // Закончим, когда появится более одной позиции.
         if ( PositionsTotal () == 1 )
        {
          Trade.PositionClose( PositionGetTicket ( 0 )); // Если есть позиция - закрываем.
           Print ( "Закрытие, т. к. PositionsTotal() равно 1" );
        }
         else if (! OrdersTotal ())
        {
           printf ( "Перед открытием. PositionsTotal: %d, OrdersTotal: %d" , PositionsTotal (), OrdersTotal ());
          Trade.Buy( 0.01 ); // Если нет позиции и ордера - открываем позицию.
          PRINT(Trade.ResultRetcodeDescription());
          PRINT(Trade.ResultDeal());
          PRINT(Trade.ResultOrder());
          PRINT(Trade.ResultComment());
           printf ( "После открытия. PositionsTotal: %d, OrdersTotal: %d" , PositionsTotal (), OrdersTotal ());
        }
        
       Print ( "Выход. PostionsTotal: " , PositionsTotal ());
    }

    Sonuç:

     2021.05 . 05 11 : 36 : 14.566 Test (EURUSD,M1)        Перед открытием. PositionsTotal : 0 , OrdersTotal : 0
    2021.05 . 05 11 : 36 : 14.646 Test (EURUSD,M1)        Trade.ResultRetcodeDescription() = done at 0.00000
    2021.05 . 05 11 : 36 : 14.646 Test (EURUSD,M1)        Trade.ResultDeal() = 0
    2021.05 . 05 11 : 36 : 14.646 Test (EURUSD,M1)        Trade.ResultOrder() = 2249874645
    2021.05 . 05 11 : 36 : 14.646 Test (EURUSD,M1)        Trade.ResultComment() = Request executed
    2021.05 . 05 11 : 36 : 14.646 Test (EURUSD,M1)        После открытия. PositionsTotal : 2 , OrdersTotal : 1
    2021.05 . 05 11 : 36 : 14.646 Test (EURUSD,M1)        Выход. PostionsTotal: 2
    
     
    Rashid Umarov :

    Trade.ResultRetcodeDescription() ekleyin

    ResultDeal / ResultOrder / ResultComment ve Order'ın yanı sıra. Belirtmek, bildirmek

    Mutlaka bir cevap olacaktır

    Belirtmek, bildirmek

    Bu kesinlikle böyle değil, tk. Bir pozisyon açmak için piyasa emri gönderme koşulu, PositionsTotal == OrdersTotal == 0'dır.