Erreurs, bugs, questions - page 112

 
sandex:

Qui a utilisé la fonction OrderCheck.

Voici une construction comme celle-ci :

           MqlTradeRequest request;
           request.action=TRADE_ACTION_DEAL;
           request.symbol=_Symbol;
           request.volume=volume_exe;
           request.price=SymbolInfoDouble(_Symbol, SYMBOL_ASK);
           request.sl=0;
           request.tp=0;
           request.deviation=SymbolInfoInteger(_Symbol, SYMBOL_SPREAD)*2;
           request.type=ORDER_TYPE_BUY;
           request.type_filling=ORDER_FILLING_CANCEL;
           MqlTradeResult result;
           OrderCheck(request, result);
           if(OrderSend(request, result)==false)

Lors de la compilation, j'obtiens une erreur : 'result' - la conversion des paramètres n'est pas autorisée.

Si vous supprimez OrderCheck, tout se compile normalement et la position s'ouvre dans le testeur.

Regardez la description de la fonction. Il est question de la structure de réponse de MqlTradeCheckResult.
 
Yedelkin:
Jetez un coup d'œil à la description de la fonction. Il est question de la structure de réponse de MqlTradeCheckResult.

Merci beaucoup.

 
Dmitriy2:

Voici ce que c'est...

Il doit compter les bénéfices des transactions à partir de la date spécifiée. Il donne un résultat complètement différent de ce qu'il est en réalité. Par exemple, j'ai obtenu 611 au lieu d'un résultat d'environ 2000. J'ai commencé à vérifier par jour (ligne commentée). Il y a ( !!) des jours où le résultat est le même, mais généralement il n'est pas ce qu'il devrait être...(je n'ai pas pu trouver de régularité). Et le débogueur produit le même cycle exact pour toute la quantité de transactions. Bien que je ne puisse retracer que ce nombre de transactions car aucune valeur n'est affichée pour les autres variables, à l'exception des variables int (l'expression n'a pas pu être évaluée).

Est-ce que ce code est correct et est-ce que j'utilise correctement le débogueur... ?

La boucle de transaction doit être

for(i=0;i<HistoryDealsTotal();i=i++)
Dans le débogueur, utilisez la fonction "Step in" (F11). Ensuite, en entrant dans une fonction où une variable ou une expression est définie, sa valeur sera affichée.
 
Valmars:

Le cycle de transaction doit être

Dans le débogueur, utilisez 'Step with Entry' (F11). Ensuite, lorsque vous entrez dans une fonction où une variable ou une expression est définie, elle affichera sa valeur.

disons que le cycle recommence à zéro... mais où est-il écrit que les nombres d'accords commencent à partir de zéro ? A en juger par le fait que maintenant nous avons 10611 (avant c'était 611, au lieu d'environ 2000), c'est-à-dire, plus la taille du dépôt original, je n'en suis pas sûr .... même si c'est zéro, même un, je ne comprends toujours pas d'où vient 10 000

Débogueur, je vois, F11...

 
Dmitriy2:

disons que le cycle recommence à zéro... mais où est-il écrit que les nombres d'affaires commencent à partir de zéro ? A en juger par le fait que maintenant vous obtenez 10611 (avant c'était 611, au lieu d'environ 2000), c'est-à-dire, plus la taille du dépôt original, je n'en suis pas sûr .... même si c'est zéro, même un, je ne comprends toujours pas d'où vient 10 000

Débogueur, je vois, F11...

La première transaction est généralement un dépôt. Il semble que les transactions soient comptabilisées dans l'historique à partir de 0. Ainsi, si je ne me trompe pas, la 0e transaction sera un dépôt.

Puis-je clarifier la formule par laquelle le bénéfice sur l'opération est calculé ?

PS

Si ma mémoire est bonne, le résultat devrait être calculé comme suit : TotalProfit = Profit+Swap-Commission ;


 
Kos:
Pourquoi SymbolInfoDouble(Symbol(),SYMBOL_VOLUME_LIMIT), renvoie-t-il zéro ?
0 signifie aucune restriction.
 
Interesting:

La première transaction est généralement un dépôt. Il semble que les transactions soient comptées dans l'historique à partir de 0. Donc, si je ne me trompe pas, la 0e transaction sera un dépôt.

Pouvez-vous préciser la formule utilisée pour calculer le bénéfice sur l'opération?

PS

Si ma mémoire est bonne, le résultat devrait être calculé comme suit : TotalProfit = Profit+Swap-Commission ;


sur la dernière page en code complet

par ce code, le dépôt ne doit en aucun cas être pris en compte

la commission est également plus - elle est moins.

 
Yedelkin:

Au début, le compilateur se plaignait de l'absence de "#import "lbS7N_Servis.ex5"".

Après avoir supprimé cette ligne, il s'est éteint :

2010.08.28 22:19:51 Servis[1] (EURUSD,H1) L1=1016990000 L2=1016990000 L3=6617010000 M1=1016990000
2010.08.28 22:19:51 Servis[1] (EURUSD,H1) A=101699 B=101699 C=661701
2010.08.28 22:19:51 Servis[1] (EURUSD,H1) --- OnInit() --- 1 --- !

Lorsque j'ai remplacé le numéro de compte dans le code par mon numéro de compte, j'ai obtenu :

2010.08.28 22:26:46 Servis[1] (EURUSD,H1) L1=1016990000 L2=1016990000 L3=1016990000 M1=1016990000

2010.08.28 22:26:46 Servis[1] (EURUSD,H1) A=101699 B=101699 C=101699

2010.08.28 22:26:46 Servis[1] (EURUSD,H1) --- OnInit() --- 1 --- !

Serveur MQ, construction 316.

Merci. Tout fonctionne comme il se doit avec vous. Je ne l'ai pas encore compris.
 
sergey1294:

et mon M1 ne correspondait pas.

Cela signifie que vous avez aussi un bug, mais moins que moi.

Peut-être devriez-vous le chercher dans la connexion du programme au système.

Quel type de système avez-vous ?

J'ai un core2duo 1.3 Ghz 64 Win7 HB licence, 4GB ddr 2 RAM, build. 316

 
simpleton:

Et il y a jusqu'à trois situations uniques. Ce sont ceux qui ont été détectés. Et combien sont non détectés ?

Et avec cet état de fait, MetaQuotes va commencer le championnat 2010 dans un mois ?

Oh, combien de "merveilles" MetaTrader 5 nous réserve-t-il...

Les gagnants seront ceux dont les programmes contiennent tellement d'erreurs que, combinées à des défaillances mineures du programme, elles auront un tel effet que personne ne pourra jamais les rattraper.