Lütfen bu gizemi çözmeme yardım edin!!

 

Başarılı bir önceki satırdan sonra programın neden satırları atladığını ve bu satırlardaki talimatları görmezden geldiğini anlayamıyorum.

Aşağıdaki koda bakarsanız, Strategy Tester'da başarıyla gerçekleştirilen bir Satış işlemi olduğunu ancak Satış işleminin hiçbir zaman Journal'a kaydedilmediğini ve OrderSend'den sonraki kod satırlarının da yok sayıldığını ve ayrıca yok sayıldığını göreceksiniz. Dergisi'nde kaydedildi.

Ne oluyor?

(Birçok satırdan birinden görülebileceği gibi verilerle ilgili bazı sorunlarım var: 2012.12.31 11:21:27 TestGenerator: unmatched data error (ses sınırı 2430, 2012.11.05 06:00 aşıldı))

İşte bahsettiğim kod parçası:

 if (IsTradeContextBusy()) Sleep ( 10 );
      SellTicket = OrderSend ( Symbol (),OP_SELL,LotSize,SellPrice,UseSlippage,SellStopLoss,SellTakeProfit, "CCITrendReversal" ,MagicNumber, 0 ,Red);
         Print ( "SellTicket is " ,SellTicket);  
           if (SellTicket >= 0 ) 
           {
             PlaySound ( "news.wav" );
             SellTime = OrderOpenTime();
             SellSignal = false ;
           }
           Print ( "SellSignal2 is " , SellSignal);
 
ernest02 :

Başarılı bir önceki satırdan sonra programın neden satırları atladığını ve bu satırlardaki talimatları görmezden geldiğini anlayamıyorum.

Aşağıdaki koda bakarsanız, Strategy Tester'da başarıyla gerçekleştirilen bir Satış işlemi olduğunu ancak Satış işleminin hiçbir zaman Journal'a kaydedilmediğini ve OrderSend'den sonraki kod satırlarının da yok sayıldığını ve ayrıca yok sayıldığını göreceksiniz. Dergisi'nde kaydedildi.

Ne oluyor?

Sat işe yaramadı. . . OrderSend(), OrderModify(), OrderClose(), vb. gibi herhangi bir OrderXxxx() işlevi başarısız olduğunda hatayı yazdırmak için kod ekleyin. . . daha fazla bilgi için: İşlev dönüş değerleri nelerdir? Onları nasıl kullanırım?
 

ernest02,

Belki bu işinize yarar?

 Print ( "Error description" , GetLastError ());

Teşekkür ederim.

 

Teşekkürler arkadaşlar....ama...

Tester stratejisi birkaç Satış işlemini gösteriyor - - ve işlemde bir hata olması durumunda bir hata rutinim var (aşağıda gösterilen kod), ancak rapor edilen herhangi bir hata yok.


   // Error handling
             if (SellTicket == - 1 )
               {
                ErrorCode = GetLastError ();
                ErrDesc = ErrorDescription(ErrorCode);

                ErrAlert = StringConcatenate ( "Open Sell Order - Error " ,ErrorCode, ": " ,ErrDesc);
                 Alert (ErrAlert);

                ErrLog = StringConcatenate ( "Ask: " ,Ask, " Lots: " ,LotSize, " Price: " ,SellPrice, " Stop: " ,SellStopLoss, " Profit: " ,SellTakeProfit);
                 Print (ErrLog);
               }
 
ernest02 :

Teşekkürler arkadaşlar....ama...

Tester stratejisi birkaç Satış işlemini gösteriyor - - ve işlemde bir hata olması durumunda bir hata rutinim var (aşağıda gösterilen kod), ancak rapor edilen herhangi bir hata yok.

SellTicket çift mi yoksa int mi? Gönderdiğiniz 2 bitlik kodu, aradaki tüm kod bitleriyle birlikte gösterebilir misiniz lütfen. . .
 

SellTicket bir Tamsayıdır.

İşte kodun daha fazlası:

 if (SellSignal == true && CCIReal < (CCILevel - SellLevel) && TotalSellOrders <= MaxTrans && SellTrans == true )

      {
       Print ( "CCI is " ,CCIReal);
       
       for (Count = OrdersTotal ()- 1 ; Count >= 0 ; Count--)
                     if ( OrderSelect (Count, SELECT_BY_POS)
                    && OrderType() == OP_BUY
                    && OrderMagicNumber() == MagicNumber)
                    
                    {
                     int BuyOrder = OrderTicket();
                    
                     while (IsTradeContextBusy()) Sleep ( 10 );
                
                     bool Closed = OrderClose(BuyOrder, OrderLots(), Bid, UseSlippage, Blue);
                                            
                             // Error handling
                   if (Closed == false )
                     {
                        ErrorCode = GetLastError ();
                         string ErrDesc = ErrorDescription(ErrorCode);

                         string ErrAlert = StringConcatenate ( " Close Buy Order Error - Error " ,ErrorCode, ": " ,ErrDesc, " Bid is " , Bid, " SellTakeProfit is " , SellTakeProfit);
                         Alert (ErrAlert);

                         string ErrLog = StringConcatenate ( "OrderTicket: " ,OrderTicket());
                         Print (ErrLog);
                        
                     }
                      
                            }
                       
      
      RefreshRates();
      
      SellPrice = Bid;
      
       if (TrailingStopFunc == false )
      
         
         SellStopLoss = Bid + (StopLoss * UsePoint);
         else SellStopLoss = 0 ;
           
      
      SellTakeProfit = Bid - (TakeProfit * UsePoint);
      
       if (IsTradeContextBusy()) Sleep ( 10 );
      SellTicket = OrderSend ( Symbol (),OP_SELL,LotSize,SellPrice,UseSlippage,SellStopLoss,SellTakeProfit, "CCITrendReversal" ,MagicNumber, 0 ,Red);
         Print ( "SellTicket is " ,SellTicket);  
           if (SellTicket >= 0 ) 
           {
             PlaySound ( "news.wav" );
             SellTime = OrderOpenTime();
             SellSignal = false ;
           }
           Print ( "SellSignal2 is " , SellSignal);
          
           // Error handling
             if (SellTicket == - 1 )
               {
                ErrorCode = GetLastError ();
                ErrDesc = ErrorDescription(ErrorCode);

                ErrAlert = StringConcatenate ( "Open Sell Order - Error " ,ErrorCode, ": " ,ErrDesc);
                 Alert (ErrAlert);

                ErrLog = StringConcatenate ( "Ask: " ,Ask, " Lots: " ,LotSize, " Price: " ,SellPrice, " Stop: " ,SellStopLoss, " Profit: " ,SellTakeProfit);
                 Print (ErrLog);
               }
         
         }
 

ernest02,

Bahsettiğiniz hataya neyin neden olduğunu anlamıyorum ama hatanın olmaması için kodunuzu bu şekilde yeniden yazmayı düşünebilirsiniz.

Bununla birlikte , EA'nızın gerçekleştirmesini istediğiniz eylemin bir tanımını yayınlayabilirseniz, benim (ve/veya başkalarının) size bir çözüm sunmam daha kolay olacaktır.

Hatayı izole etmeye çalışmak yerine, hatanın bulunması çok uzun sürüyorsa, hatayı gidermek için kodu yeniden yazmayı düşünün. Tamamen sana kalmış. Umarım bu yararlıdır.

Teşekkür ederim.

 
ernest02 :

SellTicket bir Tamsayıdır.

İşte kodun daha fazlası:

Teşekkür ederim . . . Satış işe yararsa ne olacağı konusunda net olmak için. . .

 Print ( "SellTicket is " ,SellTicket);     //  <---  this will be printed to the journal
           if (SellTicket >= 0 ) 
           {
             PlaySound ( "news.wav" );     //  <---  PlaySound does not work in the Strategy Tester 
             SellTime = OrderOpenTime();   //  <---  if the Sell worked this variable will be set (or do we first need an OrderSelect() ?)
             SellSignal = false ;           //  <---  if the Sell worked this variable will be set
           }
           Print ( "SellSignal2 is " , SellSignal);     //  <---  this will be printed to the journal
 

İşte bu çok garip!

Strateji Test Cihazı birçok Satış işlemini kaydeder ancak Günlükte hiçbir şey gösterilmez.

Kodu baştan tekrar inceleyeceğim, birkaç değişiklik yapacağım ve ne olacağını göreceğim.

Tüm yardımlarınız için teşekkürler arkadaşlar. Çok takdir edildi.

(Hatanın nedenini bulursam geri bildireceğim - aksi takdirde kodu yeniden yazacağım.)

 
ernest02 :

İşte bu çok garip!

Strateji Test Cihazı birçok Satış işlemini kaydeder ancak Günlükte hiçbir şey gösterilmez.

Kodu baştan tekrar inceleyeceğim, birkaç değişiklik yapacağım ve ne olacağını göreceğim.

Tüm yardımlarınız için teşekkürler arkadaşlar. Çok takdir edildi.

(Hatanın nedenini bulursam geri bildireceğim - aksi takdirde kodu yeniden yazacağım.)

Garip . . . Yanlışlıkla Uzmanlar sekmesine bakmadığınız sürece? tester/logs/ girişine baktınız mı?
 
ernest02 : Strateji Test Cihazı birçok Satış işlemini kaydeder ancak Günlük'te hiçbir şey gösterilmez.
Test cihazında görsel modu kullanmadığınız sürece, dergide asla hiçbir şey olmayacaktır.