Je ne trouve pas mon erreur enfin 2 erreurs. - page 2 12 Nouveau commentaire Dimitri Dimitri 2024.03.13 12:09 #11 Gerard Willia G J B M Dinh Sy #: penses à mettre une étoile pour le référencement STP Chose faite ;) Cedric Soares 2024.03.15 09:51 #12 Dimitri Dimitri #: Un grand merci pour ton aide.Est ce que c'est mieux comme cela ? Merci d'avance pour ton aide. // Définition des variables input int Period_zerolagema = 20; // Période de l'EMA sans décalage double EMA1_zerolagema[], EMA2_zerolagema[], Difference_zerolagema[], ZeroLagEMA[]; // Fonction pour calculer l'EMA double iMA(int _handle, int _shift, double _series[], int period, int _method, int _mode, int _price) { if (period < 1 || ArraySize(_series) == 0) { return INVALID_HANDLE; } int i, limit, start; // Correction de la première erreur limit = ArraySize(_series) - 1; start = _shift < 0 ? -_shift : 0; double sum = 0.0; double k = 2.0 / (double)(period + 1); for (i = start; i <= limit; i++) { if (_mode == MODE_EMA) { sum += _series[i] * k; } else if (_mode == MODE_SMA) { sum += _series[i]; } } if (_mode == MODE_EMA) { if (_shift >= 0) { return sum; } double ema = sum; for (i = start + 1; i <= limit; i++) { ema += (_series[i] - ema) * k; } return ema; } else if (_mode == MODE_SMA) { if (_shift >= 0) { return sum / (double)(limit - start + 1); } double sma = sum; for (i = start + 1; i <= limit; i++) { sma += _series[i] - _series[i - 1]; } return sma / (double)(limit - start); } return INVALID_HANDLE; } // Fonction principale void OnStart() { ArrayResize(EMA1_zerolagema, Bars); ArrayResize(EMA2_zerolagema, Bars); ArrayResize(Difference_zerolagema, Bars); ArrayResize(ZeroLagEMA, Bars); // Calcul de l'EMA1 for (int i = 0; i < Bars; i++) { EMA1_zerolagema[i] = iMA(NULL, i, Close, Period_zerolagema, 0, MODE_EMA, PRICE_CLOSE); } // Calcul de l'EMA2 for (int i = 0; i < Bars; i++) { EMA2_zerolagema[i] = iMA(NULL, i, EMA1_zerolagema, Period_zerolagema, 0, MODE_EMA, PRICE_CLOSE); } // Calcul de la différence et de l'EMA sans décalage for (int i = 0; i < Bars; i++) { Difference_zerolagema[i] = EMA1_zerolagema[i] - EMA2_zerolagema[i]; ZeroLagEMA[i] = EMA1_zerolagema[i] + Difference_zerolagema[i]; } // Affichage de l'EMA sans décalage PlotIndexSetInteger(0, PLOT_LINE_WIDTH, 1); PlotIndexSetInteger(0, PLOT_DRAW_TYPE, DRAW_LINE); PlotIndexSetInteger(0, PLOT_COLOR, clrRed); PlotIndexSetInteger(0, PLOT_STYLE, STYLE_SOLID); PlotIndexSetInteger(0, PLOT_SHIFT, 0); PlotIndexSetInteger(0, PLOT_DRAW_BEGIN, 0); PlotIndexSetInteger(0, PLOT_DRAW_TYPE, DRAW_LINE); PlotIndexSetInteger(0, PLOT_DRAW_BEGIN, Period_zerolagema - 1); PlotIndexSetDouble(0, PLOT_EMPTY_VALUE, 0.0); PlotIndexSetInteger(0, PLOT_LINE_WIDTH, 1); PlotIndexSetInteger(0, PLOT_COLOR, clrRed); PlotIndexSetInteger(0, PLOT_STYLE, STYLE_SOLID); PlotIndexSetInteger(0, PLOT_SHIFT, 0); PlotIndexSetInteger(0, PLOT_DRAW_BEGIN, 0); PlotIndexSetInteger(0, PLOT_DRAW_TYPE, DRAW_LINE); PlotIndexSetInteger(0, PLOT_DRAW_BEGIN, Period_zerolagema - 1); PlotIndexSetDouble(0, PLOT_EMPTY_VALUE, 0.0); } Salut, j'arrive un peu tard, autre solution proposée Dimitri Dimitri 2024.03.21 11:54 #13 Bonjour Cédric,Désolé pour la réponse tardive, j'étais en déplacement.Il y a deux erreurs dans le code.J'ai corrigé la première, ligne 7 le & avant _seriesdouble iMA(int _handle, int _shift, double &_series[], int period, int _method, int _mode, int _price) { Il reste une erreur à la ligne 57void OnStart() { '{' - unbalanced parentheses zero lag EMA.mq5 57 16 Je n'arrive pas à trouver où est le problème. Si j'ajoute un } cela ajoute encore plus d'erreur.Merci pour le code et pour ton aide. Indicateurs d'élite :) Toute question de débutant, Questions des débutants MQL5 12 Nouveau commentaire
penses à mettre une étoile pour le référencement STP
Chose faite ;)
Un grand merci pour ton aide.
Est ce que c'est mieux comme cela ?
Merci d'avance pour ton aide.
Salut, j'arrive un peu tard, autre solution proposée
Bonjour Cédric,
Désolé pour la réponse tardive, j'étais en déplacement.
Il y a deux erreurs dans le code.
J'ai corrigé la première, ligne 7 le & avant _series
double iMA(int _handle, int _shift, double &_series[], int period, int _method, int _mode, int _price) {
Il reste une erreur à la ligne 57
void OnStart() {
'{' - unbalanced parentheses zero lag EMA.mq5 57 16
Je n'arrive pas à trouver où est le problème.
Si j'ajoute un } cela ajoute encore plus d'erreur.
Merci pour le code et pour ton aide.