Veuillez créer un exemple reproductible. En d'autres termes, vous avez besoin d'un code prêt à l'emploi que vous pouvez compiler, placer sur un graphique et obtenir des résultats.
Sans cela, peu de gens comprendront de quoi nous parlons.
Je me suis dit que j'allais faire un petit effort pour ne pas décourager les gens pour rien.
Voici la version complète :
#property indicator_separate_window // L'indicateur est dessiné dans une fenêtre séparée#property indicator_buffers 1#property indicator_plots 1#property indicator_type1 DRAW_LINE#property indicator_color1 Aquainputstring InstrumentName = "EURJPY";
//-- Tableau d'indicateursdouble ScreenBuffer[];
//-- Tampon dynamique --double ArrayBuffer[];
intOnInit() // Fonction spéciale init()
{
//--------------------------------------------------------------------IndicatorSetString(INDICATOR_SHORTNAME,InstrumentName);
SetIndexBuffer(0,ScreenBuffer,INDICATOR_DATA);
return0; // Exit
}
//--------------------------------------------------------------------intOnCalculate(constint rates_total,
constint prev_calculated,
constdatetime& time[],
constdouble& open[],
constdouble& high[],
constdouble& low[],
constdouble& close[],
constlong& tick_volume[],
constlong& volume[],
constint& spread[])
{
int Counted_bars; // Nombre de barres à opérer int copied;
//--------------------------------------------------------------------//1 input rates_total = 9667 / prev_calculated = 0 / Bars = 9667//-- puis rates_total = 9667 / prev_calculated = 9667 / Bars = 9667//-- en cours alors rates_total = 9668 / prev_calculated = 9667 / Bars = 9668//Imprimez("rates_total : " + (string)rates_total) ;if (rates_total == prev_calculated) return (rates_total);//-- C'est toujours le même bar, donc on est sorti...//-- Obtenir le nombre de barres non traitées (à la première entrée, il s'agit de toutes, puis de 1)//-- Le nombre de barres de sortie se réfère au graphique lui-même, mais nous allons sortir un autre instrument.//-- le nombre de barres peut être différent, c'est pourquoi nous vidons d'abord toutes les données dans le tampon --
Counted_bars = rates_total-prev_calculated;
// Print("Counted_bars : " + Counted_bars) ;Print("rates_total: " + rates_total + " / prev_calculated: " + prev_calculated + " / Bars: " + Bars(Symbol(),0));
//-- Allouer de la mémoire en fonction du nombre de mesures de l'instrument principal --if (ArrayResize(ArrayBuffer, Counted_bars,0) == -1) return (rates_total);//-- Erreur d'allocation de mémoire//--- initialiser les éléments du tableau avec la valeur EMPTY_VALUE ----ArrayInitialize(ArrayBuffer,EMPTY_VALUE);
//-- Obtenir le nombre de barres que cet instrument a actuellement --
copied = (int)SeriesInfoInteger(InstrumentName,0,SERIES_BARS_COUNT);
if (copied > 0){
copied=CopyClose(InstrumentName,0,0,copied,ArrayBuffer);//-- Écriture des données dans la mémoire tamponif (copied <= 0) return (rates_total);//-- erreur
}
else{
return (rates_total);//-- erreur
}
if (Counted_bars > copied) Counted_bars = copied;//-- Prendre la valeur la plus basse --
Counted_bars--;//-- Puisqu'on compte à partir de 0 --//-- Les données sont chargées dans la mémoire tampon, elles sont maintenant écrites dans la mémoire tampon de l'écran de droite à gauche --for (int i = Counted_bars; i > 0; i--){
ScreenBuffer[i] = ArrayBuffer[i];
}
//--------------------------------------------------------------------return(rates_total);
}
voidOnDeinit(constint reason)
{
ObjectsDeleteAll(0,0,-1); // tous les objets du graphique sont supprimés.
}
Qu'est-ce que je fais mal, pourquoi ne puis-je pas afficher le graphique d'un autre instrument normalement ?
Tout fonctionnait dans MQL4, ici cela ne fonctionne que si vous l'affichez sur le même instrument, alors pas d'erreur.
Je ne suis pas sûr de l'exactitude de l'implémentation et de l'algorithme en général, mais sur la base du code et de ce que j'ai pu faire avec, je suppose que c'est le cas :
Je ne suis pas sûr de l'implémentation correcte et de l'algorithme en général, mais sur la base du code et de ce que j'ai pu faire avec, je vais supposer que c'est le cas :
La chaîne
devrait ressembler à ceci
PS
Peut-être serait-il plus correct de changer le point partout en "0" en PERIOD_CURRENT.
En tout cas, tout a fonctionné pour moi après de tels changements....
Je l'ai modifié, mais cela ne fonctionne toujours pas, le graphique ne correspond pas à la réalité.
Mais comme je ne suis pas entré dans la logique de l'inducteur et de son implémentation, ce n'est pas à moi de juger de l'exactitude des résultats.
PS
Je me débarrasserais quand même du symbole dans le paramètre et je le remplacerais par le symbole actuel et le TF, puis je l'utiliserais dans Expert Advisor ou un autre outil en utilisant la méthode habituelle iCustom().
En outre, je ne comprends pas vraiment la logique du travail avec les tampons (je veux dire la queue de la calculatrice et ainsi de suite). À mon avis, il y a beaucoup à faire....
Mais comme je ne suis pas entré dans la logique de l'inducteur et de son implémentation, ce n'est pas à moi de juger de la justesse des résultats.
PS
Je me débarrasserais quand même du symbole dans le paramètre et je le ferais correspondre au symbole actuel et au TF, puis je l'utiliserais dans Expert Advisor ou tout autre outil en utilisant la méthode habituelle iCustom().
En outre, je ne comprends pas vraiment la logique du travail avec les tampons (je veux dire la queue de la calculatrice, etc.). À mon avis, il y a beaucoup à faire....
Si j'ai bien compris, un seul tampon suffit (il faut juste qu'il soit correctement calculé et dessiné sur le graphique).
PS
Et avec la variante actuelle, j'ai l'impression que l'inducteur affiche les données de "gauche" (le tout début de l'histoire) au lieu de celles de "droite" (actuelles)....
Ou alors je ne comprends rien à la logique de cet indicateur....
6. semble manquer :
TradePerformer( 4, Symb4, Trade4, StLoss4, TkProfit4, Lots4, Slippage4, UpSignal, DnSignal, UpStop, DnStop) ;
dans Exp_TEMA.mq5 ?
6. semble manquer
dans Exp_TEMA.mq5 ?
Veuillez créer un exemple reproductible. En d'autres termes, vous avez besoin d'un code prêt à l'emploi que vous pouvez compiler, placer sur un graphique et obtenir des résultats.
Sans cela, peu de gens comprendront de quoi nous parlons.Je me suis dit que j'allais faire un petit effort pour ne pas décourager les gens pour rien.
Voici la version complète :
Qu'est-ce que je fais mal, pourquoi ne puis-je pas afficher le graphique d'un autre instrument normalement ?
Tout fonctionnait dans MQL4, ici cela ne fonctionne que si vous l'affichez sur le même instrument, alors pas d'erreur.
Qu'est-ce que je fais mal, pourquoi ne puis-je pas afficher le graphique d'un autre instrument normalement ?
Tout fonctionnait dans MQL4, ici cela ne fonctionne que si vous l'affichez sur le même instrument, alors pas d'erreur.
Je ne suis pas sûr de l'exactitude de l'implémentation et de l'algorithme en général, mais sur la base du code et de ce que j'ai pu faire avec, je suppose que c'est le cas :
La chaîne
devrait ressembler à ceci
Peut-être serait-il plus correct de changer le point partout en "0" en PERIOD_CURRENT.
En tout cas, tout a fonctionné pour moi après de tels changements.....
PS
Ce n'est peut-être pas pertinent, mais de cette façon, le compilateur COMPTE beaucoup moins.
Je ne suis pas sûr de l'implémentation correcte et de l'algorithme en général, mais sur la base du code et de ce que j'ai pu faire avec, je vais supposer que c'est le cas :
La chaîne
devrait ressembler à ceci
PS
Peut-être serait-il plus correct de changer le point partout en "0" en PERIOD_CURRENT.
En tout cas, tout a fonctionné pour moi après de tels changements....
Cela ressemble à ceci sur mon écran :

C'est manifestement une erreur.Voici comment cela s'est passé pour moi
Mais comme je ne suis pas entré dans la logique de l'inducteur et de son implémentation, ce n'est pas à moi de juger de l'exactitude des résultats.
PS
Je me débarrasserais quand même du symbole dans le paramètre et je le remplacerais par le symbole actuel et le TF, puis je l'utiliserais dans Expert Advisor ou un autre outil en utilisant la méthode habituelle iCustom().
En outre, je ne comprends pas vraiment la logique du travail avec les tampons (je veux dire la queue de la calculatrice et ainsi de suite). À mon avis, il y a beaucoup à faire....
C'est ce que j'ai obtenu
Mais comme je ne suis pas entré dans la logique de l'inducteur et de son implémentation, ce n'est pas à moi de juger de la justesse des résultats.
PS
Je me débarrasserais quand même du symbole dans le paramètre et je le ferais correspondre au symbole actuel et au TF, puis je l'utiliserais dans Expert Advisor ou tout autre outil en utilisant la méthode habituelle iCustom().
Interesting:
En outre, je ne comprends pas vraiment la logique du travail avec les tampons (je veux dire la queue de la calculatrice, etc.). À mon avis, il y a beaucoup à faire....
Si j'ai bien compris, un seul tampon suffit (il faut juste qu'il soit correctement calculé et dessiné sur le graphique).
PS
Et avec la variante actuelle, j'ai l'impression que l'inducteur affiche les données de "gauche" (le tout début de l'histoire) au lieu de celles de "droite" (actuelles)....
Ou alors je ne comprends rien à la logique de cet indicateur....