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

 

Merci pour cela

Quel rôle joue cette ligne SetIndexStyle(0, DRAW_LINE) dans le code ci-dessus alors que nous venons d'utiliser des objets pour dessiner une ligne ? Je comprends le rôle des buffers, mais je ne sais pas pourquoi un buffer devrait être lié à un index et pourquoi un index devrait avoir un style puisque ce que nous voyons est issu de l'appel createObject avec les attributs de prix ?


Vous avez vu vous-même en utilisant le code ci-dessus que les bougies ont des bords courbés et non des rectangles purs comme le graphique des prix ?

 

Je l'ai déjà expliqué.

Si vous voulez des rectangles, dessinez des rectangles au lieu d'objets de ligne de tendance.

 

Bonjour Phy

Désolé d'être pénible, l'option RECTANGLE ne fonctionne pas, c'est pourquoi je vous dérange, merci pour votre patience et s'il vous plaît essayez ceci et faites-moi savoir, j'ai corrigé les calculs HA.

S'il vous plaît essayez une dernière fois, merci, j'espère que je peux faire fonctionner ce rectangle correctement.


#property indicator_separate_window

#property indicator_buffers 6
#property indicator_color1 CLR_NONE
#property indicator_color2 CLR_NONE


double high[] ;
double low[] ;
double open[] ;
double close[] ;
double haOpen1[] ;
double haClose1[] ;

//+------------------------------------------------------------------+
//| Fonction d'initialisation de l'indicateur personnalisé |
//+------------------------------------------------------------------+
int init()
{
SetIndexStyle(0, DRAW_LINE) ;
SetIndexStyle(1, DRAW_LINE) ;
SetIndexStyle(2, LIGNE_DROITE) ;
SetIndexStyle(3, LIGNE_DROITE) ;
SetIndexStyle(4, LIGNE_DROITE) ;
SetIndexStyle(5, DRAW_LINE) ;
SetIndexBuffer(0, high) ;
SetIndexBuffer(1, low) ;
SetIndexBuffer(2, open) ;
SetIndexBuffer(3, close) ;
SetIndexBuffer(4, haOpen1) ;
SetIndexBuffer(5, haClose1) ;
return(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=(haOpen1[i+1]+haClose1[i+1])/2;
haOpen1[i] = haOpen ;
haClose=(Open[i]+High[i]+Low[i]+Close[i])/4;
haClose1[i] = haClose ;
haHigh=MathMax(haOpen,High[i]) ;
haLow=MathMin(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, 2) ;

string name2 = "Heikin-Ashi-OC-"+i ;
if(ObjectFind(name2) != -1) ObjectDelete(name2) ;
ObjectCreate(name2, OBJ_RECTANGLE, window, Time[i], haOpen, Time[i], haClose) ;
ObjectSet(name2, OBJPROP_WIDTH, 5) ;
//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) ;
}

 

Les bougies doivent être des lignes de tendance

Largeur du corps 2 ou plus probablement, 3

Je ne sais pas ce que vous voulez dire par "arrondir" les lignes.


Montrez une image

 
Voir la photo, s'il vous plaît.
 

Parfois, lorsque vous faites défiler la page vers la gauche, vous obtenez également ceci (mélange de vert et de rouge).

 

Oui, je vois ça.

Je pense que vous avez des barres de fer à supprimer là.

 
Merci pour votre réponse, comment faire ?
 

déterminez ce qui ne va pas, puis réfléchissez à la manière dont vous pourriez le corriger. y a-t-il des barres en double, que se passe-t-il ?

 

Bonjour Phy

Si j'ai raison, le problème pourrait être dû au fait que je fais ceci

SetIndexStyle(0, DRAW_LINE) ;
SetIndexStyle(1, DRAW_LINE) ;
SetIndexStyle(2, DRAW_LINE) ;
SetIndexStyle(3, LIGNE_DROITE) ;
SetIndexStyle(4, LIGNE_DROITE) ;
SetIndexStyle(5, DRAW_LINE) ;

Je fais ce qui précède et je fais en sorte que les tampons soient dessinés et en même temps je fais ce qui suit


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, 2) ;

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, 5) ;
//ObjectSet(name2, OBJPROP_STYLE, STYLE_SOLID) ;
ObjectSet(name2, OBJPROP_RAY, 0) ;

Donc les données dans la mémoire tampon et les objets sont dessinés les uns sur les autres, est-ce correct ?

Je devrais supprimer le code de style d'index car je n'utilise le tampon que pour stocker des données et je ne veux pas le dessiner.

Ai-je raison ?

Raison: