La fonction OnCalculate() est appelée uniquement dans les indicateurs personnalisés lorsqu'il est nécessaire de calculer les valeurs de l'indicateur par l'événement Calculate.
Cela se produit généralement lorsqu'un nouveau tick est reçu pour le symbole pour lequel l'indicateur est calculé.
Il n'est pas nécessaire que cet indicateur soit attaché à un graphique de prix de ce symbole.
La fonction OnCalculate() doit avoir un type de retour int. Il existe deux définitions possibles. Dans un même indicateur, vous ne pouvez pas utiliser les deux versions de la fonction.
La première forme est destinée aux indicateurs qui peuvent être calculés sur un seul tampon de données. Un exemple d'un tel indicateur est la moyenne mobile personnalisée.
intOnCalculate(constint rates_total,// taille du tableau price[]) constint prev_calculated,// barres traitées lors d'un appel précédent constint begin,// point de départ des données significatives constdouble& price[]// tableau à calculer ) ;
La fonction OnCalculate() est appelée uniquement dans les indicateurs personnalisés lorsqu'il est nécessaire de calculer les valeurs de l'indicateur par l'événement Calculate.
Cela se produit généralement lorsqu'un nouveau tick est reçu pour le symbole pour lequel l'indicateur est calculé.
Il n'est pas nécessaire que cet indicateur soit attaché à un graphique de prix de ce symbole.
La fonction OnCalculate() doit avoir un retour de type int. Il existe deux définitions possibles. Dans un indicateur, vous ne pouvez pas utiliser les deux versions de la fonction.
La première forme est destinée aux indicateurs qui peuvent être calculés sur un seul tampon de données. Un exemple d'un tel indicateur est la moyenne mobile personnalisée.
intOnCalculate(constint rates_total,// taille du tableau price[]) constint prev_calculated,// barres traitées lors d'un appel précédent constint begin,// point de départ des données significatives constdouble& price[]// tableau à calculer ) ;
(J'utilise le mot " Lag " qui signifie retarder l'action du prix, l'ouverture ou la fermeture d'un ordre, un seul mot suffit à faire tomber ma plateforme MT4).
J'utilise la fonction ci-dessous pour mon indicateur personnalisé.
Lorsque j'écris le code de retour ci-dessous à mon indicateur personnalisé, celui-ci commence à être décalé. Mais il fonctionne correctement, ce que je veux.
return(0); // starts to lag...
Et quand j'écris le code de retour ci-dessous à mon indicateur personnalisé, alors mon indicateur personnalisé ne fonctionne pas correctement, ce que je veux. Je veux dire que pendant le faux croisement MA, la " Flèche " ne retourne pas au point de croisement MA précédent.
return rates_total-1; // does not go back to previous MA cross pointreturn(rates_total-1); // and same thing here
Q : Que puis-je faire pour cette situation, s'il vous plaît ?
Max Enrik: Et quand j'écris le code de retour ci-dessous à mon indicateur personnalisé alors mon indicateur personnalisé ne fonctionne pas correctement ce que je veux. Je veux dire que pendant le faux croisement de la MA, la " Flèche " ne retourne pas au point de croisement précédent de la MA.
Affichez tout votre code. Cela n'a aucun sens sans contexte.
string counts;
void _a()
{
counts += "a - " + IntegerToString( ObjectsTotal( OBJ_ARROW ) );
//---return;
}
void _b()
{
counts += " - b - " + IntegerToString( ObjectsTotal( OBJ_ARROW ) );
//---return;
}
Print( counts );
// while 1st loop: a - 2 - b - 4// while 2nd loop: a - 2 - b - 4a - 2 - b - 4// while 3rd loop: a - 2 - b - 4a - 2 - b - 4a - 2 - b - 4a - 2 - b - 4// and so on...// But I like only 1st loop results even that loop runs 10 thousand times
OnCalculate
La fonction OnCalculate() est appelée uniquement dans les indicateurs personnalisés lorsqu'il est nécessaire de calculer les valeurs de l'indicateur par l'événement Calculate .
Cela se produit généralement lorsqu'un nouveau tick est reçu pour le symbole pour lequel l'indicateur est calculé.
Il n'est pas nécessaire que cet indicateur soit attaché à un graphique de prix de ce symbole.
La fonction OnCalculate() doit avoir un type de retour int. Il existe deux définitions possibles. Dans un même indicateur, vous ne pouvez pas utiliser les deux versions de la fonction.
La première forme est destinée aux indicateurs qui peuvent être calculés sur un seul tampon de données. Un exemple d'un tel indicateur est la moyenne mobile personnalisée.
intOnCalculate(constint rates_total,// taille du tableau price[])
constint prev_calculated,// barres traitées lors d'un appel précédent
constint begin,// point de départ des données significatives
constdouble& price[]// tableau à calculer
) ;
OnCalculate
La fonction OnCalculate() est appelée uniquement dans les indicateurs personnalisés lorsqu'il est nécessaire de calculer les valeurs de l'indicateur par l'événement Calculate .
Cela se produit généralement lorsqu'un nouveau tick est reçu pour le symbole pour lequel l'indicateur est calculé.
Il n'est pas nécessaire que cet indicateur soit attaché à un graphique de prix de ce symbole.
La fonction OnCalculate() doit avoir un retour de type int. Il existe deux définitions possibles. Dans un indicateur, vous ne pouvez pas utiliser les deux versions de la fonction.
La première forme est destinée aux indicateurs qui peuvent être calculés sur un seul tampon de données. Un exemple d'un tel indicateur est la moyenne mobile personnalisée.
intOnCalculate(constint rates_total,// taille du tableau price[])
constint prev_calculated,// barres traitées lors d'un appel précédent
constint begin,// point de départ des données significatives
constdouble& price[]// tableau à calculer
) ;
(J'utilise le mot " Lag " qui signifie retarder l'action du prix, l'ouverture ou la fermeture d'un ordre, un seul mot suffit à faire tomber ma plateforme MT4).
J'utilise la fonction ci-dessous pour mon indicateur personnalisé.
Lorsque j'écris le code de retour ci-dessous à mon indicateur personnalisé, celui-ci commence à être décalé. Mais il fonctionne correctement, ce que je veux.
Et quand j'écris le code de retour ci-dessous à mon indicateur personnalisé, alors mon indicateur personnalisé ne fonctionne pas correctement, ce que je veux. Je veux dire que pendant le faux croisement MA, la " Flèche " ne retourne pas au point de croisement MA précédent.
Q : Que puis-je faire pour cette situation, s'il vous plaît ?
Merci d'avance.
Voilà.
Merci d'avance.
OK ! Merci !
J'ai encore besoin d'une réponse plus claire.
Merci d'avance.
La réponse est :Vérifiez le croisement actuel et le croisement précédent de la MA.
#Buffer (array out of range in ) - Fermé
#Custom Indicator Lagging - Fermé
#Premier résultat de la boucle - Ouvrir
Merci d'avance.