Ich bin ein Neuling und möchte HA in einem neuen Fenster erhalten.. - Seite 3

 

Vielen Dank dafür

Welche Rolle spielt diese Zeile SetIndexStyle(0, DRAW_LINE) in dem obigen Code, wenn wir gerade Objekte zum Zeichnen von Linien verwendet haben? Müssen wir sie überhaupt erwähnen, ich verstehe die Rolle von Puffern, aber ich weiß nicht, warum ein Puffer mit einem Index verknüpft sein sollte und warum ein Index einen Stil haben sollte, da das, was wir sehen, aus dem createObject-Aufruf mit Preisattributen stammt?


Haben Sie selbst mit obigem Code gesehen, dass die Kerzen geschwungene Kanten haben und keine reinen Rechtecke wie im Preisdiagramm?

 

Ich habe es bereits erklärt.

Wenn Sie Rechtecke wünschen, zeichnen Sie Rechtecke anstelle von Trendlinienobjekten.

 

Hallo Phy

Tut mir leid, dass ich eine Nervensäge bin, die Option RECHTECK funktioniert nicht, deshalb belästige ich dich, danke für deine Geduld und bitte versuche es und lass es mich wissen, ich habe die HA-Berechnungen korrigiert.

Bitte versuchen Sie ein letztes Mal danke, ich wünschte, ich kann dieses Rechteck richtig funktionieren.


#property indicator_separate_window

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


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

//+------------------------------------------------------------------+
//| Benutzerdefinierte Indikator-Initialisierungsfunktion |
//+------------------------------------------------------------------+
int init()
{
SetIndexStyle(0, DRAW_LINE);
SetIndexStyle(1, DRAW_LINE);
SetIndexStyle(2, DRAW_LINE);
SetIndexStyle(3, DRAW_LINE);
SetIndexStyle(4, DRAW_LINE);
SetIndexStyle(5, DRAW_LINE);
SetIndexBuffer(0, hoch);
SetIndexBuffer(1, niedrig);
SetIndexBuffer(2, open);
SetIndexBuffer(3, close);
SetIndexBuffer(4, haOpen1);
SetIndexBuffer(5, haClose1);
return(0);
}
//+------------------------------------------------------------------+
//| Benutzerdefinierte Funktion zur Deinitialisierung des Indikators |
//+------------------------------------------------------------------+
int deinit()
{

return(0);
}
//+------------------------------------------------------------------+
//| Benutzerdefinierte Indikator-Iterationsfunktion |
//+------------------------------------------------------------------+
int start(){

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

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

// diese beiden Indizes werden zur Steuerung der Größe des Teilfensters verwendet
// sie sind nicht sichtbar
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);
}else{
ObjectSet(name1, OBJPROP_COLOR, Rot);
ObjectSet(name2, OBJPROP_COLOR, Rot);
}

}

return(0);
}

 

Die Kerzen sollten Trendlinien sein

Körperbreite 2 oder wahrscheinlicher 3

Ich weiß nicht, was Sie mit "Abrundung" der Linien meinen.


Zeigen Sie ein Bild

 
Siehe Bild plz.
 

Wenn Sie nach links scrollen, sehen Sie manchmal auch dies (gemischt grün und rot)

 

Ja, das sehe ich.

Ich glaube, Sie haben dort einige alte Balken zu löschen.

 
Vielen Dank für Ihre Antwort, wie kann ich das machen?
 

Finden Sie heraus, was falsch ist, und überlegen Sie dann, wie Sie es beheben können. Gibt es doppelte Balken, was passiert?

 

Hallo Phy

Wenn ich richtig liege, könnte das Problem auf die Tatsache zurückzuführen sein, dass ich folgendes mache

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

Ich tue das oben genannte und mache die Puffer zu zeichnen und zur gleichen Zeit mache ich


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

Also werden sowohl die Daten im Puffer als auch die Objekte übereinander gezeichnet, habe ich Recht?

Ich sollte die Einstellung des Index-Stil-Codes entfernen, da ich den Puffer nur zur Datenspeicherung verwende und ihn nicht zeichnen möchte?

Liege ich richtig?