![MQL5 - Sprache von Handelsstrategien, eingebaut ins Kundenterminal MetaTrader 5](https://c.mql5.com/i/registerlandings/logo-2.png)
Sie verpassen Handelsmöglichkeiten:
- Freie Handelsapplikationen
- Über 8.000 Signale zum Kopieren
- Wirtschaftsnachrichten für die Lage an den Finanzmärkte
Registrierung
Einloggen
Sie stimmen der Website-Richtlinie und den Nutzungsbedingungen zu.
Wenn Sie kein Benutzerkonto haben, registrieren Sie sich
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
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.
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?