[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
pepsi писал(а)>> 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.
Estimés experts, qui a un indicateur qui montrerait sur chaque cadre temporel les niveaux des niveaux max-min pour 25 et 50 barres et si le prix rebondit de ce niveau dans n'importe quel cadre temporel dans cet endroit est resté une ligne et est resté jusqu'à ce que le prix le casse ?
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)
}