![MQL5 - Langage des stratégies de trading intégré au terminal client MetaTrader 5](https://c.mql5.com/i/registerlandings/logo-2.png)
Vous manquez des opportunités de trading :
- Applications de trading gratuites
- Plus de 8 000 signaux à copier
- Actualités économiques pour explorer les marchés financiers
Inscription
Se connecter
Vous acceptez la politique du site Web et les conditions d'utilisation
Si vous n'avez pas de compte, veuillez vous inscrire
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
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à.
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 ?