Vous manquez des opportunités de trading :
- Applications de trading gratuites
- Plus de 8 000 signaux à copier
- Actualités économiques pour explorer les marchés financiers
Inscription
Se connecter
Vous acceptez la politique du site Web et les conditions d'utilisation
Si vous n'avez pas de compte, veuillez vous inscrire
Ici, si Orderselect est FAUX, comment l'EA peut revenir à la ligne de code : for(int cnt=OrdersTotal() ; cnt > 0 ; cnt-- )
? ??
Ici, si Orderselect est FALSE, comment l'EA peut revenir à la ligne de code : for(int cnt=OrdersTotal() ; cnt > 0 ; cnt-- )
? ??
Ce code est erroné....
cnt doit commencer à OrdersTotal() - 1 et décrémenter jusqu'à cnt >= 0 ... ... la première entrée est 0 et non 1
C'est pourquoi j'ai demandé à voir le code. . . et vous en avez montré assez pour identifier le problème . . . probablement. ;-)
Ce code est erroné...
cnt doit commencer à OrdersTotal() - 1 et décrémenter jusqu'à cnt >= 0 ... ...la première entrée est 0 et non 1
C'est pourquoi j'ai demandé à voir le code. . . et vous en avez montré assez pour identifier le problème . . . probablement. ;-)
Très juste. Merci, Wizeman !
Très correct. Merci, Wizeman !
Et une autre idée :
Si j'ai plusieurs conditions, vous pouvez écrire :
If( X>b && B>S && NB<F......)
{
BBB= 5 ;
}f.e.
Ici, l'EA doit calculer chaque condition à l'intérieur de la parenthèse.
Mais, si vous recherchez l'efficacité (4 000 lignes de code...), je préfère avoir :
Si ( X>b )
{
while (B>S)
{
Tandis que (NB<F..)
{
BBB=5 ;
}
break ;
}
pause ;
}
Les 2 variantes sont-elles les mêmes ?
Y.
crossy, lorsque vous écrivez le code, veuillez utiliser le bouton SRC, il sera beaucoup plus lisible.
Ainsi, il sera affiché comme ceci
Il y a des explications sur les boucles "if, while et for" dans mql4 https://book.mql4.com/operators/assign
Pour le deuxième code, c'est OK puisque vous utilisez break, mais c'est un long chemin juste pour obtenir BBB = 5, je préfère le premier code, il utilise moins de ressources.
Et une autre idée :
Si j'ai plusieurs conditions, vous pouvez écrire :
If( X>b && B>S && NB<F......)
{
BBB= 5 ;
}f.e.
Ici, l'EA doit calculer chaque condition à l'intérieur de la parenthèse.
Mais, si vous recherchez l'efficacité (4 000 lignes de code...), je préfère l'avoir :
Utilisez le bouton SRC pour afficher votre code pour une meilleure lecture, s'il vous plaît :)
Votre OrderSelect() est codé d'une manière incorrecte. Comparez votre code avec celui-ci. Puis écrivez si vous avez toujours le problème ou pas :)
Merci à onewithzachy,
Je ne savais pas que le ORDERSELECT ne pouvait pas attraper, donc vous pouvez avoir des erreurs inconnues.
Mon code qui était de 4016 lignes de code est devenu presque 4500 lignes - mais sans erreurs.
Merci à tous, chers amis.
Y.
Bonjour mes amis,
Après une longue journée ici, j'ai eu un bon avancement avec mon EA, mais j'ai un autre problème, comme suit :
J'ai la ligne de code suivante :
CLOSE_Single_P(Pair1, "LONG",OrderT,OrderL) ;
comme :
Pair1 est le symbole,
"LONG" est le signe d'une transaction longue,
OrderT est le numéro de ticket de l'ordre,
OrderL est la taille du lot de l'ordre.
La fonction est la suivante :
void CLOSE_Single_P(string SYMB, string TREN, int TICKET, double LOTT)
{
double PRC ;
bool Check = false ;
for ( int cntt=0 ; cntt<20000 ; cntt++ )
{
if ( Check )
{
Check_Ini() ;
return ;
}
for ( int vvv = OrdersTotal()-1 ; vvv >= 0 ; vvv-- )
{
if ( OrderSelect(vvv, SELECT_BY_POS, MODE_TRADES) )
{
Check = false ;
si ( TREN == "LONG" )
PRC = MarketInfo(SYMB,MODE_BID) ;
else
if ( TREN == "SHORT" )
PRC = MarketInfo(SYMB,MODE_ASK) ;
Check = OrderClose(TICKET,LOTT,PRC,Slippage,Yellow) ;
if ( Check )
break ;
} }
}
}
return ;
}
Mon PROBLÈME est le suivant : L'EA ferme parfois très bien la transaction, mais parfois l'EA ferme la tarde MAIS il continue à chercher le ticket pour la fermer, bien qu'elle ait déjà été fermée.
(J'obtiens l'erreur : "Numéro de ticket inconnu..." .
Je pense que j'ai une erreur de logique.
Merci pour votre aide.
Y
S'il vous plaît...