Toute question des nouveaux arrivants sur MQL4 et MQL5, aide et discussion sur les algorithmes et les codes. - page 242
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
Je n'arrive pas à résoudre un problème apparemment simple. Quelque part sur le graphique, il y avait un croisement de MA. Nous trouvons un bar après la traversée. Comment calculer le nombre de barres entre cette barre et la barre actuelle ?
Je n'arrive pas à résoudre un problème apparemment simple. Quelque part sur le graphique, il y avait un croisement de MA. Nous trouvons un bar après la traversée. Comment calculer le nombre de barres entre cette barre et la barre actuelle ?
Il semble que ce soit fait (au moins le commentaire sur l'écran est correct). Grâce au"nombre de barres", je pense avoir trouvé la solution. J'utilise la fonction iTime pour déterminer la date de la barre nécessaire. L'esquisse ressemble à ceci :
void OnTick()
{
int nBarsUp, nBarsDn ;
datetime date_dn = iTime(NULL, 0, IntersectionDN()) ;
datetime date_up = iTime(NULL, 0, IntersectionUp()) ;
datetime date_1 = iTime(NULL, 0, 1) ;
nBarsUp = Bars(Symbol(), 0, date_up, date_1) ;
nBarsDn = Bars(Symbol(), 0, date_dn, date_1) ;
Comment("Nombre de barres longues : " + nBarsUp + "\n "+ "Nombre de barres courtes : " + nBarsUp + "\n")
"Nombre de barres courtes :" + nBarsDn) ;
}
//+------------------------------------------------------------------+
int IntersectionDN()
{
for(int i = 0 ; i < 36 ; i++)
{
if(iMA(Symbol(), 0, 5, 0, MODE_EMA, PRICE_CLOSE, i) > iMA(Symbol(), 0, 21, 0, MODE_EMA, PRICE_CLOSE, i)
&& iMA(Symbol(), 0, 5, 0, MODE_EMA, PRICE_CLOSE, i-1) < iMA(Symbol(), 0, 21, 0, MODE_EMA, PRICE_CLOSE, i-1))
retour (i-1) ;
}
retour(-1) ;
}
int IntersectionUp()
{
for(int i = 0 ; i < 36 ; i++)
{
if(iMA(Symbol(), 0, 5, 0, MODE_EMA, PRICE_CLOSE, i) < iMA(Symbol(), 0, 21, 0, MODE_EMA, PRICE_CLOSE, i)
&& iMA(Symbol(), 0, 5, 0, MODE_EMA, PRICE_CLOSE, i-1) > iMA(Symbol(), 0, 21, 0, MODE_EMA, PRICE_CLOSE, i-1))
retour (i-1) ;
}
retour(-1) ;
}
Il semble que cela ait fonctionné (au moins le commentaire sur l'écran est correct). Grâce au"nombre de barres", je pense avoir trouvé une solution. J'ai utilisé la fonction iTime pour déterminer la date de la barre souhaitée. Le schéma ressemble à ceci :
Vous cherchez un croisement dans la boucle. Et à partir de la barre zéro, on entre dans l'histoire. Donc votre fonction IntersectionXX() renvoie le numéro de la barre.
C'est pour quoi tout ça ?
Vous cherchez un croisement dans la boucle. Et de la barre zéro au bas de l'histoire. Donc IntersectionXX() renvoie le numéro de la barre.
C'est pour quoi tout ça ?
Le numéro de la barre, oui. Mais j'ai besoin de connaître le nombre de barres - de cette barre au plus profond de l'historique jusqu'à la barre zéro. En bref, j'ai besoin de l'angle de la pente de la barre par rapport à la MA. Mais comme il ne peut être calculé comme il me semble (prix sur la ligne verticale et barres sur la ligne horizontale placées à une certaine distance les unes des autres - ce sont des valeurs incompatibles). Il était une fois une suggestion sur le forum d'introduire un coefficient - la différence de prix divisée par le nombre de barres. L'idée me semble raisonnable. Je veux le mettre en pratique, mais comme je suis moi-même une andouille, j'essaie de trouver quelque chose et de l'essayer moi-même par essais et erreurs.
P.S. Comment insérer du code dans MQL4 (comme le vôtre, pas comme le mien) ?Quelqu'un sait-il comment résoudre ce problème ?
Après avoir changé le TF, le panneau est déformé.
Le nombre de bars, oui. Mais j'ai besoin de connaître le nombre de barres - depuis cette certaine barre au fond de l'histoire jusqu'à la 0e barre. En bref, j'ai besoin de l'angle de la barre par rapport à la MA. Mais comme il ne peut pas être calculé, il me semble (prix sur la ligne verticale et barres sur la ligne horizontale placées à une certaine distance l'une de l'autre - ce sont des valeurs incompatibles). Il était une fois une suggestion sur le forum d'introduire un coefficient - la différence de prix divisée par le nombre de barres. L'idée me semble raisonnable. Je veux le mettre en pratique, mais étant moi-même un mannequin, j'essaie de trouver quelque chose et de l'essayer moi-même par essais et erreurs.
P.S. Comment insérer du code dans MQL4 (de la façon dont vous l'avez, pas de la façon dont je l'ai) ?Bonjour ! Les deuxnombresmoinsq et wsont comparés de manière incorrecte, alors qu'ils sont égaux, l'opérateur if pense que l'un est plus grand que l'autre.Quelle est l'erreur ? Lorsque q = -0.0002 et que w est également -0.0002, res12=faux, pourquoi ?
Bonjour ! Les deuxnombresmoinsq et wsont comparés de manière incorrecte, alors qu'ils sont égaux, l'opérateur if pense que l'un est plus grand que l'autre.Quelle est l'erreur ? Lorsque q = -0.0002 et que w est également -0.0002, res12=faux, pourquoi ?
Bonjour ! Les deuxnombresmoinsq et wsont comparés de manière incorrecte, alors qu'ils sont égaux, l'opérateur if pense que l'un est plus grand que l'autre.Quelle est l'erreur ? Lorsque q = -0.0002 et que w est également -0.0002, res12=faux, pourquoi ?
Je pense que nous devons normaliser et c'est tout, vous ne pouvez pas comparer les doubles entre eux sans normalisation.
if NormalizeDouble (q<=w)Je pense que je dois normaliser et c'est tout, car il n'est pas possible de comparer le double entre eux sans normalisation.
Merci, ça a marché, seulement j'ai normalisé q et w séparément !