[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 314

 
Je ne comprends pas bien. Lorsque je dessine l'indicateur Kon dans la fenêtre, il fonctionne bien. Expliquez...
 
kon12 >> :
Je ne comprends pas bien ? Lorsque je dessine l'indicateur Kon dans la fenêtre, il fonctionne bien. Expliquez...

lorsque vous dessinez dans la fenêtre, vous obtenez des barres d'histogramme de couleur olive ou verte. la première correspond au buffer up et la seconde au dn. si seul dn est dessiné sur la barre 0, et que vous accédez à l'indicateur iCustom(0,0, "Kon",10,0,0), c'est-à-dire que le paramètre mode est 0 (regardez votre 0 est en haut - SetIndexBuffer(0,up) ;), alors le résultat de l'appel de fonction sera très probablement EMPTY_VALUE.


C'est plus clair ?

 

J'ai essayé de changer le numéro de la mémoire tampon en 1 et 2, mais cela n'a rien changé.

 

vérifier si la chaîne "Kon" de l'appel iCast correspond au nom du fichier mq4, y compris la casse des caractères.

et quelle valeur la fonction produit-elle de toute façon ?

 

La question est très simple. J'essaie de faire référence à l'indicateur OsMA, qui fait partie de l'ensemble standard des indicateurs personnalisés. Je veux simplement dessiner une ligne de cet indicateur dans la fenêtre des indicateurs. L'indicateur OsMA a les paramètres 12,26,9 et est dessiné sur le tampon 0. Qu'est-ce qui ne va pas dans ce code ? La ligne 0 est dessinée dans la fenêtre de l'indicateur et c'est tout.

#property indicator_separate_window
#property indicator_buffers 1
#property indicator_level1 0.0
#property indicator_color1 Olive

double z;
//+------------------------------------------------------------------+
//| Custom indicator initialization function                         |
//+------------------------------------------------------------------+
int init()
  {
   SetIndexBuffer(0, z);
   SetIndexStyle(0,DRAW_HISTOGRAM);
    return(0);
  }
//+------------------------------------------------------------------+
//| Custom indicator deinitialization function                       |
//+------------------------------------------------------------------+
int deinit()
  {
//----
   
//----
   return(0);
  }
//+------------------------------------------------------------------+
//| Custom indicator iteration function                              |
//+------------------------------------------------------------------+
int start()
  { z= iCustom(NULL,0,"OsMA",12,26,9,0,0); 
  //----
   return(0);
  }
 
kon12 >> :

La question est très simple. J'essaie d'utiliser la fonction OsMA qui se trouve dans l'ensemble standard des indicateurs personnalisés. Je veux simplement dessiner une ligne de cet indicateur dans la fenêtre des indicateurs. L'indicateur OsMA a les paramètres 12,26,9 et est dessiné en utilisant le tampon 0. Qu'est-ce qui ne va pas dans ce code ? La ligne 0 est dessinée dans la fenêtre de l'indicateur et c'est tout.

Non, ça ne marche pas comme ça.

Le z est un tableau et les données doivent y être écrites élément par élément. Par exemple :

for(i=100;i>=0;i--)

{

z[i]= iCustom(NULL,0,"OsMA",12,26,9,0,i);

}

 
Yay, ça a marché ! Merci pour votre aide, les premiers pas sont les plus difficiles...
 

Une autre question sur mon sujet. Supposons que je dessine une courbe sur le graphique, par exemple MA. Ensuite, j'utilise un indicateur personnalisé qui utilise cette MA via la fonction iCustom. Peut-on les lier de manière à ce que la période MA dans le graphique soit automatiquement modifiée lorsque la période МА dans l'indicateur personnalisé est modifiée ?

 

Pouvez-vous me conseiller, je travaille sur un programme quotidien.

Et je veux accéder aux données des minutes. S'agit-il de données actualisées ou anciennes ?

 

Question - comment cela fonctionne-t-il (optimisation de l'indicateur) :


if( MA_Fast[ i+1]> MA_Slow[ i+1]) {
   string RectangleSell = StringConcatenate("RECTANGLE_", StartBoxTime);
   ObjectDelete( RectangleSell);
   ObjectCreate( RectangleSell, OBJ_RECTANGLE, 0,  StartBoxTime, BoxLow,  EndBoxTime, BoxHigh);
   ObjectSet( RectangleSell, OBJPROP_STYLE, STYLE_SOLID);
   ObjectSet( RectangleSell, OBJPROP_RAY, False);
   ObjectSet( RectangleSell, OBJPROP_WIDTH, 1);
   ObjectSet( RectangleSell, OBJPROP_BACK , True);
   ObjectSet( RectangleSell, OBJPROP_COLOR, ColorSell);
}


Est-ce que je comprends bien qu'à chaque nouveau tic, le même rectangle

(même taille avec un nombre égal de barres) seront supprimées et redessinées ?

Est-il utile d'ajouter une vérification du nombre de barres (s'il y a plus de barres, le redessin ne se fera que dans ce cas) ?

pour soulager le processeur de l'ordinateur ou le gain sera-t-il minime et ne vaudra-t-il pas la peine de s'en préoccuper ?