[ARCHIVE] Toute question de débutant, afin de ne pas encombrer le forum. Professionnels, ne passez pas à côté. Nulle part sans toi - 3. - page 475
![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
Merci ! !!
Voici le lien de départ - puis le reste, IMHO.
Veuillez expliquer
La partie analytique utilise un calendrier défini de manière rigide. Ou les délais
La partie analytique utilise un calendrier défini de manière rigide. Ou les délais
Pourriez-vous supprimer le "poisson" pour l'analyse syntaxique ? Si vous avez des commentaires, je vous en serais reconnaissant.
OK, j'ai une idée, peut-être qu'il est un peu excité... Non, ce n'est pas tout à fait ça, on dirait que lorsqu'un ordre d'achat est détecté, tous les ordres en attente sont supprimés... Tous les ordres d'achat. stsBUY doivent être définis avant le début. Je n'ai pas vérifié les erreurs.
Nous aurions besoin d'un code plus correct. Aucune erreur
Et la logique est mauvaise.
Pourriez-vous s'il vous plaît laisser tomber le "poisson" pour le parse, si vous avez des commentaires, je l'apprécierais.
Tu devrais au moins lire un peu le manuel, pour ne pas avoir à demander combien font "deux fois deux".
Tu devrais au moins lire un peu le manuel, pour ne pas avoir à demander combien fait "deux fois deux".
Je ne conteste pas que c'est un point important, mais si je le comprenais, je ne le demanderais pas, n'est-ce pas ?
c'est-à-dire que dans l'algorithme, où les délais des indicateurs sont spécifiés, nous l'indiquons clairement.
N'est-ce pas ?
alors expliquez-moi ce qui suit ....
Expert Advisor - croisement des stochastiques, entrée dans un trade.
Voici l'algorithme
int start()
{
RefreshRates() ; // Rafraîchir les données
Symb=Symbol() ;
x1=x ;
y1=y ;
x=iStochastic( NULL,0,5,3,3,MODE_SMA,1,0,0) ; // valeur de la ligne principale stochastique sur la barre 0
y=iStochastic( NULL,0,5,3,3,MODE_SMA,1,1,0) ; // valeur de la ligne de signal stochastique sur la barre 0
Alerte ("stochastique principal",x) ;
Alert ("signal stochastique",y) ;
//---- intersection dusignal et de la ligne principale
if (y < x && y1> x1) // Vérifier le passage vers le haut
{
f=1 // drapeau vers le haut
}
//--------------------------------------------------------------------
if (y > x && y1< x1) // vérification du passage vers le bas
{
f=2 ; // drapeau vers le bas
}
//---- vérification de l'intersection vers le bas de la ligne principale avec la ligne 20
if (f==1 && x1<20)&& x1<20 && x>= 20)
{ if (Ticket > 0) // s'il y a un ordre, supprimer l'ordre
OrderClose(Ticket,Lts,Bid,10) ;
SL=Bid - StopLoss*Point ; // Calcul du SL ouvert
TP=Bid + TakeProfit*Point ; // Calcul du TP ouvert.
Alert("Tentative d'ouverture d'achat. Attente de réponse...") ;
OrderSelect(Ticket, SELECT_BY_TICKET) ;
if(OrderCloseTime()>0 || !OrderSelect(Ticket, SELECT_BY_TICKET))
{
Ticket=OrderSend(Symb,OP_BUY,Lts,Ask,3,SL,TP);//ouvert Buy
}
if (Ticket > 0) // Cela a marché :)
{
Alert ("Opened Buy order ",Ticket) ;
return ;
f=0 ; // reset flag
}
}
//---- vérifier le croisement de la ligne principale de haut en bas de la ligne 80
if (f==2 &&& x1>80 && x<= 80)
{ if (Ticket > 0)
OrderClose(Ticket,Lts,Ask, 10) ; // s'il y a un ordre, le supprimer
SL=Ask + StopLoss*Point ; // Calcul du SL
TP=Ask - TakeProfit*Point ; // Calcul du TP ouvert.
Alert("Tentative d'ouverture de vente. En attente de réponse...") ;
OrderSelect(Ticket, SELECT_BY_TICKET) ;
if(OrderCloseTime()>0 || !OrderSelect(Ticket, SELECT_BY_TICKET))
{
Ticket=OrderSend(Symb,OP_SELL,Lts,Bid,3,SL,TP);//Open Buy
}
if (Ticket > 0) // It worked :)
{
Alert ("Sell order opened ",Ticket) ;
return ;
f=0 ; // réduction à zéro de l'indicateur
}
}
return(0) ;
}
si nous exécutons, le conseiller expert ouvrira et fermera les ordres dans la demi-heure, c'est-à-dire, ouvrir à 9.04, fermer à 9.05, ouvrir à nouveau à 9.06, fermer à 9.07 et ainsi de suite, dans la même direction.
pourquoi cela se produit-il ?
Regards.
Et si deux ordres BUYLIMIT et BUYSTOP sont ouverts, je dois supprimer BUYSTOP lors du déclenchement de BUYLIMIT et vice versa. Pouvez-vous me dire comment cette condition peut être remplie ?
En fait, la logique devrait être la suivante :
1. S'il y a deux ordres en attente et aucune position, alors retenez les ticks de ces ordres en attente dans les variables.
2. S'il y a un SellStop en attente et pas de BuyStop en attente, s'il y a une position d'achat, comparez le ticket de la dernière position d'achat ouverte avec le ticket BuyStop mémorisé.
S'ils sont égaux, cela signifie que le ByStop a été converti en marché Buy --> s'il y a un SellStop en attente - supprimez-le. 3.
S'il y a un BuyStop en attente et aucun SellStop en attente, s'il y a une position Sell, comparez le ticket de la dernière position Sell ouverte avec le ticket SellStop mémorisé.
S'ils sont égaux, alors le SellStop est converti en Market Sell --> s'il y a un BuyStop en attente - supprimez-le.
A peu près la même chose... Il ne s'agit que d'une logique approximative. Il a besoin de fonctions.