Bitte helfen Sie mir, dieses Rätsel zu lösen!!

 

Ich verstehe nicht, warum das Programm die Zeilen nach einer erfolgreichen vorherigen Zeile überspringt und die Anweisungen in diesen Zeilen ignoriert.

Wenn Sie sich den Code unten ansehen, werden Sie sehen, dass es eine Verkaufstransaktion gibt, die im Strategy Tester erfolgreich ausgeführt wird, aber die Verkaufstransaktion wird nie im Journal aufgezeichnet und die Codezeilen nach dem OrderSend werden ebenfalls ignoriert und auch nicht im Journal aufgezeichnet.

Was ist hier los?

(Ich habe einige Probleme mit den Daten, wie man an einer der vielen Zeilen erkennen kann: 2012.12.31 11:21:27 TestGenerator: Nicht übereinstimmende Datenfehler (Volumengrenze 2430 am 2012.11.05 06:00 überschritten))

Hier ist der Codeschnipsel, auf den ich mich beziehe:

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:

Ich verstehe nicht, warum das Programm die Zeilen nach einer erfolgreichen vorherigen Zeile überspringt und die Anweisungen in diesen Zeilen ignoriert.

Wenn Sie sich den Code unten ansehen, werden Sie sehen, dass es eine Verkaufstransaktion gibt, die im Strategy Tester erfolgreich ausgeführt wird, aber die Verkaufstransaktion wird nie im Journal aufgezeichnet und die Codezeilen nach dem OrderSend werden ebenfalls ignoriert und auch nicht im Journal aufgezeichnet.

Was ist hier los?

Der Verkauf hat nicht funktioniert ... Fügen Sie einen Code hinzu, der einen Fehler ausgibt, wenn eine OrderXxxx()-Funktion fehlschlägt, z. B. OrderSend(), OrderModify(), OrderClose() usw. ... für weitere Informationen:Was sind Funktionsrückgabewerte? Wie kann ich sie verwenden?
 

ernest02,

Vielleicht hilft Ihnen das weiter?

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

Ich danke Ihnen.

 

Danke Jungs....aber...

Der Strategietester zeigt mehrere Verkaufstransaktionen - - und ich habe eine Fehlerroutine für den Fall eines Fehlers in der Transaktion (Code unten gezeigt), aber es werden keine Fehler gemeldet.


  // 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:

Danke Jungs....aber...

Der Strategietester zeigt mehrere Verkaufstransaktionen - - und ich habe eine Fehlerroutine für den Fall eines Fehlers in der Transaktion (Code unten gezeigt), aber es werden keine Fehler gemeldet.

Ist SellTicket ein Double oder ein Int? Können Sie die 2 Bits des Codes zeigen, die Sie gepostet haben, mit allen Bits des Codes dazwischen bitte...
 

SellTicket ist ein Integer-Wert.

Hier ist ein weiterer Teil des Codes:

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,

Ich verstehe nicht, was den Fehler verursacht, von dem Sie sprechen, aber Sie könnten erwägen, Ihren Code so umzuschreiben, dass der Fehler nicht auftritt.

Wenn Sie eine Beschreibung der Aktion posten könnten, die Ihr EA ausführen soll, wäre es für mich (und/oder andere) einfacher, Ihnen eine Lösung anzubieten.

Anstatt zu versuchen, den Fehler zu isolieren, sollten Sie, wenn die Fehlersuche zu viel Zeit kostet, erwägen, den Code umzuschreiben, um den Fehler zu beseitigen. Das ist ganz Ihnen überlassen. Ich hoffe, dies ist nützlich.

Ich danke Ihnen.

 
ernest02:

SellTicket ist ein Integer-Wert.

Hier ist ein weiterer Teil des Codes:

Vielen Dank . . nur um klar zu sein, was passieren sollte, wenn der Verkauf funktioniert . .

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
 

Das ist so seltsam!

Der Strategy Tester zeichnet viele Verkaufstransaktionen auf, aber im Journal wird nichts angezeigt.

Ich werde den Code noch einmal von Anfang an durcharbeiten, ein paar Änderungen vornehmen und sehen, was passiert.

Vielen Dank für all die Hilfe, Jungs. Ich weiß das sehr zu schätzen.

(Wenn ich die Fehlerursache finde, werde ich mich melden - andernfalls werde ich den Code einfach neu schreiben).

 
ernest02:

Das ist so seltsam!

Der Strategy Tester zeichnet viele Verkaufstransaktionen auf, aber im Journal wird nichts angezeigt.

Ich werde den Code noch einmal von Anfang an durcharbeiten, ein paar Änderungen vornehmen und sehen, was passiert.

Vielen Dank für all die Hilfe, Jungs. Ich weiß das sehr zu schätzen.

(Wenn ich die Fehlerursache finde, werde ich berichten - ansonsten werde ich den Code einfach neu schreiben).

Seltsam ... es sei denn, Sie schauen versehentlich auf die Registerkarte "Experten" ... haben Sie einen Blick auf das Protokoll in tester/logs/ geworfen?
 
ernest02: Der Strategy Tester zeichnet viele Verkaufstransaktionen auf, aber im Journal wird nichts angezeigt.
Sofern Sie nicht den visuellen Modus im Tester verwenden, wird nie etwas im Journal erscheinen.