erreur 4756 - page 3

 
BHC:

Mon EA apporte des erreurs étranges avec le build 778. Le volume de 0.1 est normalisé et clairement non invalide.

Pouvez-vous vérifier les propriétés du symbole pour Silver et nous faire savoir ce que sont leSYMBOL_VOLUME_MIN et le SYMBOL_VOLUME_STEP s'il vous plaît. Il n'est pas toujours suffisant de normaliser, par exemple si votre Volume Step était de 0.5 alors Normalize ne vous aiderait pas.
 
RaptorUK:
Pouvez-vous vérifier les propriétés du symbole pour Silver et nous faire savoir ce que sont leSYMBOL_VOLUME_MIN et le SYMBOL_VOLUME_STEP s'il vous plaît. Il n'est pas toujours suffisant de normaliser, par exemple si votre Volume Step était de 0.5 alors Normalize ne vous aiderait pas.

Cette source

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

Donne ceci dans les logs du testeur...

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

 
BHC:

Cette source

Donne ceci dans les logs du testeur...

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

Le problème pourrait être dans votre rapport d'erreur, je n'ai pas vérifié avec mql5 mais cela ne fonctionnera pas avec mql4 ....

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

Essayez plutôt ceci...

if( _result.retcode != 0 && _result.retcode != TRADE_RETCODE_PLACED && _result.retcode != TRADE_RETCODE_DONE )
 
Cela a éliminé les erreurs ! Thx
 
BHC:
Cela a éliminé les erreurs ! Thx
if(_result.retcode != ( 0 || TRADE_RETCODE_PLACED || TRADE_RETCODE_DONE))

Existe-t-il une langue dans laquelle cette syntaxe est valable ?

 
Je ne l'avais jamais rencontrée non plus... Je pense que j'ai trouvé ça dans l'implémentation de ordercheck par quelqu'un. C'était sur ce site...
 
angevoyageur:

Existe-t-il une langue dans laquelle cette syntaxe est valable ?

Peut-être, si les variables étaient de type bool, cela pourrait avoir un certain sens. J'ai vu quelques personnes faire des choses similaires sur le forum mql4, c'est une erreur simple à faire.
 
RaptorUK:
Est-ce le fil de discussion que vous avez trouvé ?https://www.mql5.com/en/forum/10850 il rapporte le même problème que j'ai.

Je n'ai pas vu ce fil de discussion.

La solution est comme je vous l'ai dit, avec le gestionnaire d'événement OnTradeTransaction() (N'UTILISEZ PAS CE CODE TEL QUEL, C'EST POUR ESSAYER ET TESTER) :

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(),")");
        }

    }
}   

Cela fonctionne. _sl et _tp sont des variables globales, il est sûrement mieux de les traiter localement. trade est de type CTrade. Je suppose que vous pouvez faire la même chose avec OrderSend().

 
angevoyageur:

Je n'ai pas vu ce fil de discussion.

La solution est comme je vous l'ai dit, avec le gestionnaire d'événement OnTradeTransaction() (N'UTILISEZ PAS CE CODE TEL QUEL, C'EST POUR ESSAYER ET TESTER) :

Cela fonctionne. _sl et _tp sont des variables globales, il est sûrement préférable de les traiter localement. trade est de type classe CTrade. Je suppose que vous pouvez faire la même chose avec OrderSend().

Je reste à l'écart de la classe CTrade pour essayer d'apprendre les bases, je n'ai jamais utilisé la POO donc les classes, les structures, etc. font partie de ma courbe d'apprentissage avec mql5.

Je suis sûr que OnTradeTransaction() offrirait une solution de contournement, mais cela me semble assez horrible à utiliser, même pour l'EA simple sur lequel je travaille, il n'y a également aucune mention de la nécessité de l'utiliser dans la documentation de OrderSend(). et je pense, je vais confirmer, que j'ai vu le même problème dans le Strategy Tester, je ne sais pas exactement comment cela pourrait se produire, je vais essayer à nouveau avec un peu plus de rapports d'erreurs ajoutés pour être sûr.

 
RaptorUK:

Je reste à l'écart de la classe CTrade pour essayer d'apprendre les bases, je n'ai jamais utilisé la POO donc les classes, les structures, etc. font partie de ma courbe d'apprentissage avec mql5.

Je suis sûr que OnTradeTransaction() offrirait une solution de contournement, mais cela me semble assez horrible à utiliser, même pour l'EA simple sur lequel je travaille, il n'y a également aucune mention de la nécessité de l'utiliser dans la documentation de OrderSend(). et je pense, je le confirmerai, que j'ai vu le même problème dans le testeur de stratégie, je ne suis pas sûr de savoir comment cela peut se produire exactement, je vais réessayer en ajoutant des rapports d'erreur supplémentaires pour être sûr.

Je comprends votre position sur la POO.Elle prend toujours plus de temps que l'approche "traditionnelle" et est vraiment utile pour les grands (ou moyens) projets.

Je suis très intéressé de savoir s'il existe une solution "classique" pour notre problème.