Je suis un débutant et je veux obtenir HA dans une nouvelle fenêtre.. - page 2

 
Vous dessinez dans une fenêtre séparée en spécifiant le numéro de la fenêtre dans la fonction ObjectCreate().
 

Bonjour Phy

J'ai essayé depuis ce matin, rien n'apparaît à l'écran. Votre code serait vraiment utile pour que je puisse commencer à me concentrer sur les autres.

j'ai utilisé l'objet create

avec le type rectangle, grand et petit, rien n'apparaît à l'écran. Je ne sais pas comment spécifier le temps et les niveaux de prix et obtenir un modèle de chandelier.

S'il vous plaît, fournissez votre code ou un exemple pour obtenir un chandelier en utilisant la fonction de création d'objet.

 
Voici un exemple :

Il dessine des barres simples.

#property indicator_separate_window
 
#property indicator_buffers 2
#property indicator_color1 CLR_NONE
#property indicator_color2 CLR_NONE
 
 
double high[];
double low[];
//+------------------------------------------------------------------+
//| Custom indicator initialization function                         |
//+------------------------------------------------------------------+
int init()
  {
    SetIndexBuffer(0, high);
    SetIndexBuffer(1, low);
    SetIndexStyle(0, DRAW_LINE);
    SetIndexStyle(1, DRAW_LINE);
   return(0);
  }
//+------------------------------------------------------------------+
//| Custom indicator deinitialization function                       |
//+------------------------------------------------------------------+
int deinit()
  {
 
   return(0);
  }
//+------------------------------------------------------------------+
//| Custom indicator iteration function                              |
//+------------------------------------------------------------------+
int start(){
  
   string basename = "test";
   IndicatorShortName(basename);
   int window = WindowFind(basename);
  
   for (int i = Bars-100; i >= 0; i--){
  
       // these two indexes are used to control the size of the subwindow
       // they are not visible
       high[i] = High[i];
       low[i] = Low[i];
 
       string name = basename+i;
  
       if(ObjectFind(name) != -1) ObjectDelete(name);
       ObjectCreate(name, OBJ_TREND, window, Time[i], High[i], Time[i], Low[i]);
       ObjectSet(name, OBJPROP_RAY, 0);
   }
   return(0);
  }
 

Bonjour Phy merci pour le code, mais le code ne crée pas de barres de bâton de bougie, il crée une barre de ligne. J'ai besoin de quelque chose pour les barres de chandelier plzz..zzz,>.

Je suis tellement perplexe, pourquoi est-il si difficile de créer une barre de chandelier en utilisant ces fonctions?

Merci de m'aider.

Merci pour votre aide

 
Alors ajoutez le corps :


...
...
string name = basename+i;
  
   if(ObjectFind(name) != -1) ObjectDelete(name);
       ObjectCreate(name, OBJ_TREND, window, Time[i], High[i], Time[i], Low[i]);
       ObjectSet(name, OBJPROP_RAY, 0);
   }
   name = basename+"Body"+i;
  
   if(ObjectFind(name) != -1) ObjectDelete(name);
       ObjectCreate(name, OBJ_TREND, window, Time[i], Open[i], Time[i], Close[i]);
       ObjectSet(name, OBJPROP_WIDTH, 3);
       ObjectSet(name, OBJPROP_RAY, 0);

   }
...
...
 

Enfin merci beaucoup J'ai réussi à le faire fonctionner mais le corps de la bougie est tout écrasé en haut et en bas pourquoi ? une idée ? et pire encore autour des 20 dernières bougies....


#property indicator_separate_window

#property indicator_buffers 5
#property indicator_color1 CLR_NONE
#property indicateur_color2 CLR_NONE


double high[] ;
double low[] ;
double open[] ;
double close[] ;
//+------------------------------------------------------------------+
//| Fonction d'initialisation de l'indicateur personnalisé |
//+------------------------------------------------------------------+
int init()
{
SetIndexStyle(0, DRAW_LINE) ;
SetIndexStyle(1, DRAW_LINE) ;
SetIndexStyle(2, LIGNE_DROITE) ;
SetIndexStyle(3, DRAW_LINE) ;
SetIndexBuffer(0, high) ;

SetIndexBuffer(1, low) ;
SetIndexBuffer(2, open) ;
SetIndexBuffer(3, close) ;


retour(0) ;
}
//+------------------------------------------------------------------+
//| Fonction personnalisée de désinitialisation de l'indicateur |
//+------------------------------------------------------------------+
int deinit()
{

return(0) ;
}
//+------------------------------------------------------------------+
//| Fonction d'itération de l'indicateur personnalisée |
//+------------------------------------------------------------------+
int start(){

string basename = "Heikin-Ashi" ;
IndicatorShortName(basename) ;
int window = WindowFind(basename) ;

for (int i = Bars-100 ; i >= 0 ; i--){

// ces deux indices sont utilisés pour contrôler la taille de la sous-fenêtre.
// ils ne sont pas visibles
high[i] = High[i] ;
low[i] = Low[i] ;
double haOpen, haHigh, haLow, haClose,haDiffCo ;
haOpen=(Open[i+1]+Close[i+1])/2;
open[i] = haOpen ;
haClose=(Open[i]+High[i]+Low[i]+Close[i])/4;
close[i] = haClose ;
haHigh=MathMax(haOpen,High[i]) ;
haLow=MathMax(haOpen,Low[i]) ;
string name1 = "Heikin-Ashi-HL-"+i ;

if(ObjectFind(name1) != -1) ObjectDelete(name1) ;
ObjectCreate(name1, OBJ_TREND, window, Time[i], haHigh, Time[i], haLow) ;
ObjectSet(name1, OBJPROP_STYLE, STYLE_SOLID) ;
ObjectSet(name1, OBJPROP_RAY, 0) ;
ObjectSet(name1, OBJPROP_WIDTH, 1) ;

string name2 = "Heikin-Ashi-OC-"+i ;
if(ObjectFind(name2) != -1) ObjectDelete(name2) ;
ObjectCreate(name2, OBJ_TREND, window, Time[i], haOpen, Time[i], haClose) ;
ObjectSet(name2, OBJPROP_WIDTH, 3) ;
//ObjectSet(name2, OBJPROP_STYLE, STYLE_SOLID) ;
ObjectSet(name2, OBJPROP_RAY, 0) ;

if (haOpen < haClose) {
ObjectSet(name1, OBJPROP_COLOR, Chartreuse) ;
ObjectSet(name2, OBJPROP_COLOR, Chartreuse) ;
}sélection{
ObjectSet(name1, OBJPROP_COLOR, Red) ;
ObjectSet(nom2, OBJPROP_COLOR, Rouge) ;
}

}

return(0) ;
}

 
Qu'est-ce que "smugged" ?

De plus, je remarque qu'il n'y a pas de queues inférieures en utilisant votre code.
Je ne pense pas que votre calcul de l'AH soit entièrement correct.
 

Merci phy

pour votre aimable réponse, smugged signifie que les corps ne sont pas de vrais rectangles, les bords sont courbés. Vous avez également raison, il n'y a pas de queue de pie... Je me demande pourquoi tout cela.


Comment puis-je faire des corps rectangulaires parfaits comme un graphique de prix ?


Question :

1. Nous déclarons les indicateurs et les tampons en haut et ensuite nous disons que le style de l'index est DRAW_LINE. Puis nous disons insérer une ligne de tendance avec cette largeur et cette couleur pour représenter un indicateur. Nous utilisons donc les tampons pour peindre l'objet (ligne de tendance). Devons-nous déclarer les indicateurs en haut et définir le style d'index comme draw_line ?

C'est un peu confus d'avoir à la fois drawline et insérer l'objet trendline ?


S'il vous plaît vos commentaires d'expert et serait apprecite si vous pouvez corriger ma pensée ?

 

C'était le problème avec les queues,

haLow=MathMax(haOpen,Low[i]) ;

devrait être

haLow=MathMin(haOpen,Low[i]) ;

Ma question précédente est toujours là.

Pour votre aimable réponse, smugged signifie que les corps ne sont pas des rectangles corrects, les bords sont courbés. Comment puis-je faire des corps rectangles parfaits comme le graphique de prix ?

Question :

1. Nous déclarons les indicateurs et les tampons en haut et ensuite nous disons que le style de l'index est DRAW_LINE. Puis nous disons insérer une ligne de tendance avec cette largeur et cette couleur pour représenter un indicateur. Nous utilisons donc les tampons pour peindre l'objet (ligne de tendance). Devons-nous déclarer les indicateurs en haut de l'écran et définir le style d'index comme draw_line ?

C'est un peu confus d'avoir à la fois drawline et insérer l'objet trendline ?

S'il vous plaît vos commentaires d'expert et serait apprecite si vous pouvez corriger ma pensée ?

 
La fenêtre de l'indicateur peut avoir une taille spécifiée, en utilisant #property indicator_maximum et #property indicator_minumum.

Si ces propriétés ne sont pas spécifiées (ce qui n'est pas le cas dans mon exemple), la fenêtre de l'indicateur se redimensionne en fonction des valeurs affichées les plus hautes et les plus basses de l'un des indices de l'indicateur.
valeurs les plus hautes et les plus basses de l'un des indices de l'indicateur.

On ne dit jamais "insérer une ligne de tendance"... Les objets sont dessinés avec des attributs de temps et de prix spécifiques.

Les tampons d'index sont là (mais invisibles) pour dimensionner de manière appropriée la sous-fenêtre lorsque les prix changent dans le temps.