Toute question des nouveaux arrivants sur MQL4 et MQL5, aide et discussion sur les algorithmes et les codes. - page 134
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
Il y a un problème avec l'Expert Advisor dans le testeur. Je fais des tests sur des données d'une minute. Je calcule moi-même la stochastique pour le TF supérieur en utilisant les données minute.
L'historique des procès-verbaux a été téléchargé depuis 2001. Dans l'onglet "Graphiques", définissez le nombre maximum de barres dans l'historique, et affichées.
L'ensemble de l'historique sur le graphique défile.
Le problème est que, comme il s'est avéré avec l'impression de débogage, quelle que soit la date à partir de laquelle je démarre le testeur, le nombre maximum de barres
dans la variable Bars sur la première barre du test (au début) est toujours 1001 ou 1002. La valeur de Bars augmente de 1 à chaque barre suivante.
Par conséquent, il est impossible de compter les TF les plus élevées au départ.
Il existe une solution. Nous devrions ajouter une interdiction de négocier avant que les barres n'atteignent la valeur souhaitée.
Peut-on résoudre ce problème d'une autre manière ? Cette valeur de départ des barres dans le testeur augmente-t-elle d'une manière ou d'une autre ?
Il y a un problème avec l'Expert Advisor dans le testeur. Je fais des tests sur des données d'une minute. Je calcule moi-même la stochastique pour le TF supérieur en utilisant les données minute.
L'historique des procès-verbaux a été téléchargé depuis 2001. Dans l'onglet "Graphiques", définissez le nombre maximum de barres dans l'historique, et affichées.
L'ensemble de l'historique sur le graphique défile.
Le problème est que, comme il s'est avéré avec l'impression de débogage, quelle que soit la date à laquelle je démarre le testeur, le nombre maximum de barres
dans la variable Bars sur la première barre du test (au début) est toujours 1001 ou 1002. La valeur de Bars augmente de 1 à chaque barre suivante.
Il est donc impossible de calculer la TF la plus élevée dès le départ.
Il existe une solution. Nous devrions ajouter une interdiction de négocier avant que les barres n'atteignent la valeur souhaitée.
Peut-on résoudre ce problème d'une autre manière ? Cette valeur de départ des barres dans le testeur augmente-t-elle d'une manière ou d'une autre ?
P.S. J'ai appuyé sur le bouton de compilation.
J'ai vraiment besoin de comprendre l'algorithme de calcul de la moyenne mobile lissée. Il y a plusieurs raisons pour lesquelles la fonction iMA ne convient pas.
Comme j'ai compris l'information de https://www.metatrader5.com/ru/terminal/help/indicators/trend_indicators/ma#smma
Le premier élément est calculé comme la somme des prix de clôture divisée par la période.
Les suivants sont calculés selon la formule SMMA (i) = (SMMA (i - 1) * (N - 1) + CLOSE (i)) / N.
Prenons une période de 5 et les cours de clôture de l'EUR/USD H1 pour la période du 24.02.2017 19:00 au 24.02.2017 23.00 (GMT+2) soit les 5 dernières bougies
Les prix de clôture sont 1.05681 ; 1.05702 ; 1.05639 ; 1.05612 ; 1.05592.
Par conséquent, 1er élément - 1.056452 ; 2ème élément - 1.056852 3ème élément - 1.05676 4ème élément - 1.056632 5ème élément - 1.056489
Mais sur le graphique SMMA 5, la clôture est de 1,05706, c'est-à-dire que la différence est déjà dans le 3e chiffre.
Qu'est-ce que je compte mal ?
Et comment dois-je calculer correctement afin d'obtenir 1.05706 ?
J'ai vraiment besoin de comprendre l'algorithme de calcul de la moyenne mobile lissée. Il y a plusieurs raisons pour lesquelles la fonction iMA ne convient pas.
Comme j'ai compris l'information de https://www.metatrader5.com/ru/terminal/help/indicators/trend_indicators/ma#smma
Le premier élément est calculé comme la somme des prix de clôture divisée par la période.
Les suivants sont calculés selon la formule SMMA (i) = (SMMA (i - 1) * (N - 1) + CLOSE (i)) / N.
Prenons une période de 5 et les cours de clôture de l'EUR/USD H1 pour la période du 24.02.2017 19:00 au 24.02.2017 23.00 (GMT+2) soit les 5 dernières bougies
Les prix de clôture sont 1.05681 ; 1.05702 ; 1.05639 ; 1.05612 ; 1.05592.
Par conséquent, 1er élément - 1.056452 ; 2ème élément - 1.056852 3ème élément - 1.05676 4ème élément - 1.056632 5ème élément - 1.056489
Mais sur le graphique SMMA 5, la clôture est de 1,05706, c'est-à-dire que la différence est déjà dans le 3e chiffre.
Qu'est-ce que je compte mal ?
Et comment dois-je calculer correctement afin d'obtenir 1.05706 ?
Messieurs les développeurs ! Bonne journée à tous. Je suis intéressé par une question sur la façon de créer un modèle de conseiller expert (script) lors de sa création. Peut-on l'éditer quelque part et comment le fait-on ?
Regardez l'indicateur lui-même, il aura plus de sens.
double SMMA(int période)
{
//remplir le tableau avec les prix de clôture
int k=période ;
for(int i=1 ; i<=period ; i++)
{
H1_Close[i]=Close[k];
// Print("H1_Close [",i,"] ",H1_Close[i]," Close [",k,"] ",Close[k]) ;
k-- ;
}
//calculer le premier élément comme étant le prix de clôture moyen
double Summ=0 ;
for (int i=1 ; i<=period;i++)
Summ=Summ+H1_Close[i] ; //SUM1 = SUM(CLOSE, N)
double TmpSMMA=Summ/période ; //SMMA1 = SUM1/N
//calculer le i-ième élément comme SMMA (i) = (SMMA (i - 1) * (N - 1) + CLOSE (i)) / N
for(int i=2;i<=period;i++)
TmpSMMA=(TmpSMMA*(période-1)+H1_Close[i])/période ;
}
Le résultat est toujours très différent des données de l'indicateur dans le terminal. POURQUOI ?
J'ai vraiment besoin de comprendre l'algorithme de calcul de la moyenne mobile lissée. Il y a plusieurs raisons pour lesquelles la fonction iMA ne convient pas.
Comme j'ai compris l'information de https://www.metatrader5.com/ru/terminal/help/indicators/trend_indicators/ma#smma
Le premier élément est calculé comme la somme des prix de clôture divisée par la période.
Les suivants sont calculés selon la formule SMMA (i) = (SMMA (i - 1) * (N - 1) + CLOSE (i)) / N.
Prenons une période de 5 et les cours de clôture de l'EUR/USD H1 pour la période du 24.02.2017 19:00 au 24.02.2017 23.00 (GMT+2) soit les 5 dernières bougies
Les prix de clôture sont 1.05681 ; 1.05702 ; 1.05639 ; 1.05612 ; 1.05592.
Par conséquent, 1er élément - 1.056452 ; 2ème élément - 1.056852 3ème élément - 1.05676 4ème élément - 1.056632 5ème élément - 1.056489
Mais sur le graphique SMMA 5, la clôture est de 1,05706, c'est-à-dire que la différence est déjà dans le 3e chiffre.
Qu'est-ce que je compte mal ?
Et comment dois-je calculer correctement afin d'obtenir 1.05706 ?
Il y a un algorithme de calcul dans l'inluder.
J'ai écrit le code de la fonction dans la réponse de Vitaly Muzichenko , mais je n'arrive pas à comprendre quelle est l'erreur
Il semble donc que je fasse tout comme dans les calculs, mais le résultat ne sort pas. C'est le quatrième jour que je suis assis ici et je n'arrive pas à comprendre.
J'ai écrit le code de la fonction dans la réponse de Vitaly Muzichenko , mais je n'arrive pas à comprendre quelle est l'erreur