[Toute question de débutant, afin de ne pas encombrer le forum. Professionnels, ne passez pas votre chemin. Je ne peux aller nulle part sans toi. - page 66
![MQL5 - Langage des stratégies de trading intégré au terminal client MetaTrader 5](https://c.mql5.com/i/registerlandings/logo-2.png)
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
En fait, dans de tels cas, j'essaie généralement d'utiliser plus largement GetLastError(). Bien sûr, je ne suis pas un pro.
Je comprends que GetLastError() est censé dire pourquoi quelque chose n'est pas fait, par exemple si un thread est occupé, mais je n'ai rien en cours du tout !
Je suppose que vous avez juste besoin de 3 ordres à ouvrir pour des instruments différents ? Pourquoi ne pas faire une variable drapeau par exemple
Dans les variables globales, créez
int flag=0;
string Symb;
///////////////
puis
int start()
{
if (условие открытия)
{flag=1;}
if (flag==1)
{
Symb="EURUSD";
OrderSend(Symb,...)///Открываем, переносим флаг во 2 состояние для открытия след ордера и
flag=2; ///выходим тк больше мы ни чего не можем сделать
return(0);
}
if (flag==2)
{
Symb="AUDUSD";
OrderSend(Symb,...)
flag=3;
return(0);
}
if (flag==3)
{
Symb="USDJPY";
OrderSend(Symb,...)
flag=0;//Возвращаем флаг в начальное состояние..
return(0);
}
return(0);}
Il serait également bon d'ajouter la vérification de l'ouverture et de ne déplacer le drapeau qu'une fois la vérification réussie.
Merci beaucoup, je vais essayer !
}
else Print ("Error opening long position :",GetLastError()) ;
renvoie une erreur si OrderSelect() échoue.
if(OrderSend(Symbol(), OP_SELLSTOP, getLots, Bid, 0, 0, 0, WindowExpertName(),Magic, 0, Red) < 0)
Print("Error Open Sellstop = ",GetLastError()) ;
Renvoie une erreur si OrderSend() échoue.Il existe une version où c'est OrderSend() qui ne fonctionne pas.
Une idée de la raison pour laquelle cela fonctionne sur le testeur ?
Une idée de la raison pour laquelle cela fonctionne sur le testeur ?
Non. Mais ce que je dis, c'est qu'en utilisant la fonction Print de manière plus extensive (même si sans le GetLastError ultérieur),
vous pouvez voir beaucoup mieux comment l'EA opère.
par exemple comme ceci :
if(MA1>MA2 && StochPrev<StohCur && StochPrev<SignPrev )
{
print(" La condition pour un ordre d' achat est remplie") ;
ticket=OrderSend(Symbol(),OP_BUY,Lots,Ask,3,Ask-StopLoss*Point,Ask+TakeProfit*Point,",16895,0,DeepSkyBlue) ;si(ticket>0)
}