[Toute question de débutant, afin de ne pas encombrer le forum. Professionnels, ne passez pas votre chemin. Je ne peux aller nulle part sans toi. - page 875

 
reag:

Oui, la première option ne fonctionne pas, bien que je travaille sur un calendrier non standard, la deuxième fonctionne. Merci à tous !


La première option fonctionne - au moins 20 jours sur un compte de démonstration (pas plus de temps pour vérifier) et dans le testeur sur l'histoire pendant 10 ans

ZS : Eh bien, si ça ne marche pas, ça ne marche pas :)

 
IgorM:


la première option fonctionne - au moins 20 jours sur un compte de démonstration (pas plus de temps pour vérifier) et dans le testeur sur l'historique pendant 10 ans

SZS : eh bien, ne pas travailler signifie ne pas travailler :)

Le premier fonctionne dans un compte réel. Pour moi, cela fonctionne probablement parce que la fenêtre du graphique est très grande. Cela fonctionne probablement parce que la fenêtre du graphique est très grande et n'atteint pas le maximum... mais peut-être que l'EA est comme ça - il est bien... :)
 
Andrei01:
ce n'est pas effrayant sur la démo. :) mais sur le site réel, il est probablement préférable de ne pas prendre de risques et de le faire normalement ... Cela fonctionne probablement parce que la fenêtre du graphique est très grande et n'atteint pas le maximum ... mais peut-être que l'EA est comme ça - il fera bien l'affaire... :)


pas tout à fait - en comptant le nombre de barres, je peux "ne pas manquer" le moment du chargement de l'historique - et à ces moments-là, il vaut mieux attendre un peu, l'historique n'est pas seulement chargé à la fin du TF, mais parfois le début du TF est aussi chargé - ok, c'est un grand secret chut chut

:)

 
IgorM:


pas tout à fait - en comptant le nombre de barres, je peux "ne pas manquer" le moment du chargement de l'historique - et à ces moments-là, il vaut mieux attendre un peu, l'historique n'est pas seulement chargé à la fin du TF, mais parfois le début du TF est aussi chargé - ok, c'est un grand secret chut chut

:)


Il s'est avéré que la deuxième variante ne fonctionne pas non plus ... Les numéros de barres dans le tableau des indicateurs ne changent pas de toute façon ! Je comprends que c'est à cause du délai non standard. Il est formé par le standard Period_Converter_Opt, je l'obtiens de M1 à M2, quand j'ouvre M2 les barres sont égales à la moitié de la barre Max dans la fenêtre, et quand j'arrive à la valeur de la barre Max dans la fenêtre, la fomation du tableau SetIndexBuffer s'arrête...((
 
reag:

Il s'est avéré que la deuxième option ne fonctionne pas non plus ... les numéros de barres dans le tableau des indicateurs ne changent pas de toute façon ! Je suppose que c'est à cause du calendrier non standard. Il est formé par le standard Period_Converter_Opt, je l'obtiens de M1 à M2, lorsque j'ouvre M2 les barres sont égales à la moitié de la barre Max dans la fenêtre, et lorsque j'arrive à la valeur de la barre Max dans la fenêtre, la fomation du tableau d'index SetIndexBuffer s'arrête...((


mais au moins certains paramètres de la nouvelle barre peuvent être comparés avec la barre mémorisée ?

Si vous avez un TF non standard, est-il possible que la barre que vous pensez être nulle ait un indice différent de 0 ou 1 ?

 
IgorM:


mais au moins certains paramètres de la nouvelle barre peuvent être comparés avec la barre mémorisée ?

Si vous avez un TF non standard, est-il possible que la barre que vous pensez être nulle ait un indice autre que 0, 1 ?


L'algorithme de reconnaissance d'une nouvelle barre fonctionne, mais le graphique s'arrête après avoir atteint une barre maximale dans la fenêtre ; je suppose que la fomentation du tableau d'indices SetIndexBuffer s'arrête. Voici le problème, c'est-à-dire qu'après l'activation, tout fonctionne bien, puis le graphique se fige et les barres bougent... et par conséquent l'indicateur ne fonctionne pas !
 
reag:

L'algorithme lui-même reconnaît une nouvelle barre mais le graphique s'arrête après avoir atteint une barre maximale dans la fenêtre, je suppose que la fonction du tableau d'indices SetIndexBuffer s'arrête. Voici le problème, c'est-à-dire qu'après l'activation, tout fonctionne bien, puis le graphique se fige et les barres bougent... et par conséquent l'indicateur ne fonctionne pas !

Si cela fonctionne au démarrage, le problème est peut-être que le nombre de barres à redessiner est défini de manière incorrecte.
 
IgorM:

Si cela se produit au démarrage, il se peut que le nombre de barres à redessiner ne soit pas défini correctement.

#property indicator_chart_window
#property show_inputs
#property indicator_buffers 3 // nombre de tampons
#property indicator_color1 DarkSeaGreen // couleur de la première ligne
#property indicator_color2 SaddleBrown // couleur de la deuxième ligne
#property indicator_color3 SaddleBrown // couleur de la deuxième ligne

extern intHistory=300 ; // Nombre de barres dans l'historique calculé
extern int Flèches=1 ;
extern int Line=0 ; // Nombre de barres pour les calculs
//extern int Left_Right= 5 ; //Décalage horizontal (barres)
extern int Up_Right=8 ; // décalage vertical (points)
statique int up = 1, intPost=600 ;
static datetime VPPosLStr,time0new,time0old ;
double Line_0[],Line_1[],Line_2[] ; //déclaration des tableaux de données

//--------------------------------------------------------------------
int init() //Fonction spéciale init()
{

si (Flèches==1 && Ligne==1)int Style=1 ;
si (Flèches==1 && Lignes!=1)style=3 ;
si (Flèches!=1 && Lignes==1)style=2 ;
switch(Style) // Interrupteur d'en-tête
{ // Interrupteur de démarrage du corps
cas 1 :
//--------------------------------------------------------------------
SetIndexBuffer(0,Line_0) ; // Affectation du tableau au tampon 0
SetIndexStyle(0,DRAW_SECTION,STYLE_DOT,1);// Style de ligne
SetIndexEmptyValue(0,0.0) ;
//--------------------------------------------------------------------
SetIndexBuffer(1,Line_1) ; // Affectation du tableau au tampon 1
SetIndexStyle(1,DRAW_ARROW,EMPTY,1) ; // Style de ligne
SetIndexArrow (1,217) ;
//--------------------------------------------------------------------
SetIndexBuffer(2,Line_2) ; // Affectation du tableau au tampon 2
SetIndexStyle (2,DRAW_ARROW,EMPTY,1) ; // Style de ligne
SetIndexArrow (2,218) ;
//--------------------------------------------------------------------
break ; // Options.
cas 2 :
//--------------------------------------------------------------------
SetIndexBuffer(0,Line_0) ; // Attribue un tableau au tampon 0
SetIndexStyle(0,DRAW_SECTION,STYLE_DOT,1);// Style de ligne
SetIndexEmptyValue(0,0.0) ;
pause ;
cas 3 :
//--------------------------------------------------------------------
SetIndexBuffer(1,Line_1) ; // Affectation du tableau au tampon 1
SetIndexStyle(1,DRAW_ARROW,EMPTY,1) ; // Style de ligne
SetIndexArrow (1,217) ;
//--------------------------------------------------------------------
SetIndexBuffer(2,Line_2) ; // Affectation du tableau au tampon 2
SetIndexStyle (2,DRAW_ARROW,EMPTY,1) ; // Style de ligne
SetIndexArrow (2,218) ;
//--------------------------------------------------------------------
pause ;
par défaut : break ; // le cas ne correspondait pas
}
int k=Bars ; // interrupteur de fin de corps

return(0) ; // Sortie spéciale init()
}
//--------------------------------------------------------------------
int start() // Fonction spéciale start()
{
//----+ vérifie le nombre de barres pour que ce soit correct.
//calculer l'indicateur
si(Histoire-1 < 15)
retour(0) ;

//+--- +==========================================+
int i, // Index de la barre
n, // paramètre formel (index)
k, // indice de l'élément d'indice du tableau d'indices
Counted_bars ; // Nombre de barres calculées
double ligne ;
iBarShift(NULL, 0, VrPostStr) ;
//Commentaire (indpostr," ",up) ;
//--------------------------------------------------------------------
/* Counted_bars=IndicatorCounted() ; // Nombre de barres calculées
//---- vérifier les erreurs éventuelles
if(Counted_bars < 0)
retour (-1) ;
i=Bars-Counted_bars-1+indicatorCounted ; // Index du premier non compté
if (i>History-1) // S'il y a beaucoup de barres, alors .
i=Histoire-1 ; // ...calculer le nombre donné
time0new=Time[0] ;
si(time0old!=time0new)
{
i=Histoire-1 ;
time0old=time0new ;
Commentaire ("Bars ",Bars,", History ",History,", i ",i) ;
}

for(i=i-1 ; i >= 3 ; i--) // Boucle sur les barres non comptées
{
si(up==0)
{
Ligne=Basse[i] ;

if (Line<Low[i-1] && Line<Low[i-2] && Bpostr<Time[i])
{
Ligne_0 [i] = Ligne[i] ;
Ligne_0 [i] = Ligne ;
Line_2[i] = Line-up_down*Point ;
up=1 ;
continuer ;
}
}
if(up==1) //construire une grille de fibo par critère de deux chandeliers rollback
{
Ligne=Haut[i] ;

if (Line>High[i-1] && Line>High[i-2]&& Bpostr<Time[i])
{
Ligne_0[i] = Ligne[i] ;
Ligne_0[i] = Ligne ;
Line_1[i] = Line+Up_down*Point ;
up=0 ;
}
}
//Calcul de l'indice de la prochaine barre
}
// WindowRedraw() ;
//--------------------------------------------------------------------
retour(0) ;
}
//--------------------------------------------------------------------
int deinit()
{

retour(0) ;
}
 
reag:


   int counted_bars=IndicatorCounted();
   if(counted_bars<0) return(-1);
   if(counted_bars>0) counted_bars--;
   limit=Bars-counted_bars;
   for(int i=0; i<limit; i++){
J'écris les indicateurs de cette façon, c'est mon début d'indicateur standard - c'est un peu étiré, mais quand je m'occupais de mql, je l'ai écrit de cette façon et c'est comme ça qu'il reste.
il est difficile de comprendre votre code - les noms de variables en lettres cyrilliques me font peur - je m'embrouille avec les commentaires
 
IgorM:
J'écris les indicateurs de cette façon, c'est mon début d'indicateur standard.
il est difficile de comprendre votre code - les noms de variables en lettres cyrilliques me font peur - je m'embrouille avec les commentaires

Oui c'est juste moi qui essaye... Cyrillique )), la combinaison de Bars et IndicatorCounted() sur une timeframe non standard ne fonctionne pas exactement, lorsque la barre max dans la fenêtre Bars est dépassée elle ne va pas plus loin.
Raison: