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?
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); }
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.
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.
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).
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).
- Freie Handelsapplikationen
- Über 8.000 Signale zum Kopieren
- Wirtschaftsnachrichten für die Lage an den Finanzmärkte
Sie stimmen der Website-Richtlinie und den Nutzungsbedingungen zu.
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: