Fehler 4756 - Seite 3

 
BHC:

Mein EA bringt u seltsame Fehler mit Build 778. Das Volumen von 0,1 ist normalisiert und eindeutig nicht ungültig.

Können Sie die Symboleigenschaften für Silber überprüfen und uns mitteilen, was dieSYMBOL_VOLUME_MIN und SYMBOL_VOLUME_STEP sind bitte. Es ist nicht immer genug, nur zu normalisieren, zum Beispiel, wenn Ihr Volumen Schritt waren 0,5 dann Normalize würde Ihnen nicht helfen.
 
RaptorUK:
Können Sie die Symboleigenschaften für Silver überprüfen und uns bitte mitteilen, wie hoch die Werte fürSYMBOL_VOLUME_MIN und SYMBOL_VOLUME_STEP sind? Es reicht nicht immer aus, nur zu normalisieren, wenn Ihr Volumenschritt beispielsweise 0,5 wäre, würde Ihnen Normalisieren nicht helfen.

Diese Quelle

Print(" volume step: ",SymbolInfoDouble(_trade_symbol,SYMBOL_VOLUME_STEP),", volume minimum: ",", ",SymbolInfoDouble(_trade_symbol,SYMBOL_VOLUME_MIN)); return;
         

gibt dies in den Testerprotokollen wieder...

2013.03.12 12:46:01 Core 1 2013.01.23 13:32:59 volume step: 0.1, volume minimum: , 0.1

 
BHC:

Diese Quelle

gibt dies in den Testerprotokollen wieder...

2013.03.12 12:46:01 Core 1 2013.01.23 13:32:59 volume step: 0.1, volume minimum: , 0.1

Das Problem könnte in der Fehlerberichterstattung liegen, ich habe es nicht mit mql5 überprüft, aber das wird mit mql4 nicht funktionieren.

if(_result.retcode != ( 0 || TRADE_RETCODE_PLACED || TRADE_RETCODE_DONE))

Versuchen Sie stattdessen dies.

if( _result.retcode != 0 && _result.retcode != TRADE_RETCODE_PLACED && _result.retcode != TRADE_RETCODE_DONE )
 
Damit sind die Fehler verschwunden! Vielen Dank
 
BHC:
Damit sind die Fehler verschwunden! Vielen Dank
if(_result.retcode != ( 0 || TRADE_RETCODE_PLACED || TRADE_RETCODE_DONE))

Gibt es irgendeine Sprache, in der diese Syntax gültig ist?

 
Ich war auch noch nie darauf gestoßen... Ich glaube, ich habe das von jemandes Implementierung von ordercheck. Es war auf dieser Seite...
 
angevoyageur:

Gibt es eine Sprache, in der diese Syntax gültig ist?

Vielleicht, wenn die Variablen vom Typ bool wären, könnte es Sinn machen. Ich habe ein paar Leute gesehen, die ähnliche Dinge auf dem mql4 Forum tun, es ist ein einfacher Fehler zu machen.
 
RaptorUK:
War dies der Thread, den Sie gefunden haben?https://www.mql5.com/en/forum/10850 es berichtet das gleiche Problem wie ich habe

Ich habe diesen Thread nicht gesehen.

Lösung ist, wie ich Ihnen sagte, mit OnTradeTransaction() Event-Handler (DON'T USE THIS CODE AS IS, IT'S FOR TRIAL & TEST):

void OnTradeTransaction(const MqlTradeTransaction& trans,
                        const MqlTradeRequest& request,
                        const MqlTradeResult& result)
                        {

    if (trans.type == TRADE_TRANSACTION_DEAL_ADD) {

        if (execution == SYMBOL_TRADE_EXECUTION_MARKET) {
            if (!trade.PositionModify(_Symbol, _sl, _tp))
                if (debugMode) {
                    Print("Modify SL & TP failed. Return code=", trade.ResultRetcode(), ". Code description: ", trade.ResultRetcodeDescription());
                    Print("Deal ticket : ", trans.deal);
                }
            else
                if (debugMode) Print("Modify SL & TP executed successfully. Return code=", trade.ResultRetcode(), " (", trade.ResultRetcodeDescription(),")");
        }

    }
}   

Das funktioniert. _sl und _tp sind globale Variablen, es ist sicher besser, sie lokal zu verarbeiten. trade ist vom Typ der Klasse CTrade. Ich nehme an, Sie können dasselbe mit OrderSend() tun.

 
angevoyageur:

Ich habe diesen Thread nicht gesehen.

Lösung ist, wie ich sagte Sie, mit OnTradeTransaction() Event-Handler (DON'T USE THIS CODE AS IS, IT'S FOR TRIAL & TEST):

Das klappt schon. _sl und _tp sind globale Variablen, es ist sicher besser, sie lokal zu verarbeiten. trade ist vom Typ der Klasse CTrade. Ich nehme an, Sie können dasselbe mit OrderSend() machen.

Ich bleibe weg von der CTrade-Klasse in einem Versuch, die Grundlagen zu lernen, ich habe nie OOP verwendet, so dass Klassen, Strukturen, etc. sind alle Teil meiner Lernkurve mit mql5.

Ich bin mir sicher, dass OnTradeTransaction() einen Workaround bieten würde, aber es scheint mir ein ziemlich schrecklicher Workaround zu sein, selbst für den einfachen EA, an dem ich arbeite, und in der Dokumentation für OrderSend() wird auch nicht erwähnt, dass es notwendig ist. und ich denke, ich werde bestätigen, dass ich das gleiche Problem im Strategy Tester gesehen habe, ich bin mir nicht sicher, wie genau das passieren könnte, ich werde es noch einmal mit einigen weiteren Fehlerberichten versuchen, um sicher zu gehen.

 
RaptorUK:

Ich bleibe weg von der CTrade-Klasse in einem Versuch, die Grundlagen zu lernen, ich habe nie OOP so Klassen, Strukturen, etc. sind alle Teil meiner Lernkurve mit mql5 verwendet.

Ich bin mir sicher, dass OnTradeTransaction() einen Workaround bieten würde, aber es scheint mir ein ziemlich schrecklicher Workaround zu sein, selbst für den einfachen EA, an dem ich arbeite, und in der Dokumentation für OrderSend() wird auch nicht erwähnt, dass es notwendig ist. und ich glaube, ich werde bestätigen, dass ich das gleiche Problem im Strategy Tester gesehen habe, ich bin mir nicht sicher, wie genau das passieren könnte, ich werde es noch einmal mit etwas mehr Fehlerberichten versuchen, um sicher zu gehen.

Ich verstehe Ihren Standpunkt zu OOP.Es braucht immer mehr Zeit als der "traditionelle" Ansatz und ist wirklich nützlich für große (oder mittlere) Projekte.

Ich bin sehr daran interessiert , zu erfahren, ob es eine "klassische" Lösung für unser Problem gibt.