Le "problème" est peut-être que les indicateurs utilisent une limite, c'est-à-dire la fonction IndicatorCounted() afin de ne pas repeindre les barres.
Le changement d'horizon temporel le réinitialise, mais pas WindowRedraw(). Sa fonction est de redessiner les objets, pas les indices des indicateurs.
void WindowRedraw(
)
Redessine le graphique actuel de manière forcée. Elle est normalement utilisée après que les propriétés des objets ont été modifiées.
Je sais que j'ai l'habitude de recalculer environ 1000 barres pour la plupart des choses que j'écris, et cela est déclenché par un clic droit sur le graphique. et cela est déclenché par un clic droit sur Refresh.
Si vous ne limitez pas sévèrement la boucle de l'indicateur, vous obtenez un rafraîchissement de l'indicateur à chaque tick.
juste après presque deux mois, j'ai reçu ta dernière réponse. Je ne sais pas comment j'ai pu passer à côté. J'ai toujours des problèmes avec "redessiner mon indicateur". maintenant je vais essayer de résoudre le problème avec les informations que vous m'avez données. merci beaucoup,,,...,
juste après presque deux mois j'ai reçu ta dernière réponse. Je ne sais pas comment j'ai pu passer à côté. J'ai toujours des problèmes avec "redessiner mon indicateur". maintenant je vais essayer de résoudre le problème avec les informations que vous m'avez données. merci beaucoup,,,,
J'ai lu ce fil et je pense qu'il y a un problème dans votre code => la fonction WindowRefresh() ne vous aidera pas.
Je suppose que j'essaie de réinitialiser l'indicateur pour le forcer à tout redessiner depuis le début !? mon problème est que j'utilise une fonction qui change les données passées en fonction des nouvelles données, et le résultat est que mon graphique devient une masse au fil du temps. J'ai besoin de redessiner tout mon indicateur périodiquement. dernièrement, j'ai changé le cadre temporel, de sorte que lorsque je retourne au cadre temporel où j'étais, j'obtiens mes fenêtres de graphique propres (redessinées) . voici le schéma de mon code :
intstart(){intlimit;
intcounted_bars=IndicatorCounted();
//---- check for possible errorsif(counted_bars<0)return(-1);
//---- last counted bar will be recountedif(counted_bars>0)counted_bars--;
limit=Bars-counted_bars;
if(limit>GV)limit = GV;
//---- main loopfor(inti=limit; i>=1; i--){{calculatesthevariableandfeedthebuffers}return(0);}
intstart(){intlimit;
intcounted_bars=IndicatorCounted();
//---- check for possible errorsif(counted_bars<0)return(-1);
//---- last counted bar will be recountedif(counted_bars>0)counted_bars--;
limit=Bars-counted_bars;
doublestartTime=GetTickCount();
if(limit>GV)limit = GV;
//---- main loopfor(inti=limit; i>=1; i--){{calculatesthevariableandfeedthebuffers}doublefinishTime=GetTickCount();
Print("Calculation time is ",(finishTime-startTime)/1000.0," seconds");
return(0);}
Le "problème" est peut-être que les indicateurs utilisent une limite, c'est-à-dire la fonction IndicatorCounted()
afin de ne pas repeindre les barres.
Le changement d'horizon temporel le réinitialise, mais pas WindowRedraw(). Sa fonction est de redessiner les objets, pas les indices des indicateurs.
Je sais que j'ai l'habitude de recalculer environ 1000 barres pour la plupart des choses que j'écris, et cela est déclenché par un clic droit sur le graphique.
et cela est déclenché par un clic droit sur Refresh.
Si vous ne limitez pas sévèrement la boucle de l'indicateur, vous obtenez un rafraîchissement de l'indicateur à chaque tick.
Merci beaucoup,
Etes-vous "difficile à lire" ?
juste après presque deux mois, j'ai reçu ta dernière réponse. Je ne sais pas comment j'ai pu passer à côté. J'ai toujours des problèmes avec "redessiner mon indicateur". maintenant je vais essayer de résoudre le problème avec les informations que vous m'avez données. merci beaucoup,,,...,
Montrez votre code...
hi phy,
juste après presque deux mois j'ai reçu ta dernière réponse. Je ne sais pas comment j'ai pu passer à côté. J'ai toujours des problèmes avec "redessiner mon indicateur". maintenant je vais essayer de résoudre le problème avec les informations que vous m'avez données. merci beaucoup,,,,
Je suppose que j'essaie de réinitialiser l'indicateur pour le forcer à tout redessiner depuis le début !? mon problème est que j'utilise une fonction qui change les données passées en fonction des nouvelles données, et le résultat est que mon graphique devient une masse au fil du temps. J'ai besoin de redessiner tout mon indicateur périodiquement. dernièrement, j'ai changé le cadre temporel, de sorte que lorsque je retourne au cadre temporel où j'étais, j'obtiens mes fenêtres de graphique propres (redessinées) . voici le schéma de mon code :
merci beaucoup, ,
Qu'est-ce que la GV ?
Ce que j'ai fait récemment, c'est quelque chose comme ceci :
for( int i = MathMax(WindowFirstVisibleBar(), Bars-IndicatorCounted()) ; i>= 0 ; i--){
Il redessine la partie visible de l'indicateur à chaque tick, mais pas les barres qui sont hors de vue.
Qu'est-ce que la GV ?
Ce que j'ai fait récemment, c'est quelque chose comme ceci :
for( int i = MathMax(WindowFirstVisibleBar(), Bars-IndicatorCounted()) ; i>= 0 ; i--){
Il redessine la partie visible de l'indicateur à chaque tick, mais pas les barres qui sont hors de vue.
vous êtes géniaux ! Je vais mettre en œuvre ce code cet après-midi.
merci pour votre générosité,