Wie lerne ich, grafische Objekte zu erstellen? MQL4. - Seite 5

 

Ich habe versucht, den EA-Code in das Skript zu übertragen.

Die Linien überlappten sich im Skript, ich verstehe nicht, warum sie im Expert Advisor nicht funktionieren?

Wem ist es gelungen, beim Start der Visualisierung des Expert Advisors Objekte im Unterfenster des Charts zu zeichnen?


 
forexman77:

Ich habe versucht, den EA-Code in das Skript zu übertragen.

Die Linien überschneiden sich im Skript, ich verstehe nicht, warum sie im EA nicht funktionieren?

Wem ist es gelungen, beim Starten der Visualisierung des Expert Advisors Objekte im Chart-Unterfenster zu zeichnen?


Geben Sie die Nummer des Teilfensters des Indikators an, in dem Sie zeichnen wollen.
 
Artyom Trishkin:
Geben Sie die Nummer des Teilfensters des Indikators an, in dem Sie zeichnen möchten.

Auf diese Weise wird im EA -1 ausgegeben. Im Skript ist alles in Ordnung, das Bild oben. Ich habe Ihren Artikel über den AD-Indikator gelesen, aber ich verstehe ihn noch nicht. Wie immer liegt der Grund in einer Kleinigkeit.

Soweit ich verstehe, wird das Fenster aus irgendeinem Grund nicht im EA erkannt, Fehler 4206.

 
forexman77:

Auf diese Weise wird im EA -1 ausgegeben. Im Skript ist alles in Ordnung, das Bild oben. Ich habe Ihren Artikel über den AD-Indikator gelesen, aber ich verstehe ihn noch nicht. Wie immer liegt der Grund in einer Kleinigkeit.

Soweit ich weiß, wird das Fenster im EA aus irgendeinem Grund nicht erkannt, Fehler 4206.

Das Indikatorfenster braucht Zeit, um erstellt zu werden. Im Indikatorfenster können Sie erst nach dem ersten Aufruf von OnCalculate() zeichnen. Möchten Sie alles in OnInit() zeichnen?
 
Karputov Vladimir:
Das Indikatorfenster braucht Zeit, um erstellt zu werden. Im Indikatorfenster können Sie frühestens ab dem ersten Aufruf von OnCalculate() zeichnen. Möchten Sie alles in OnInit() zeichnen?
Nein. Erst wenn ein Handel eröffnet wird, d.h. die Eröffnungszeilen der Position gehen vor, beginnt das Rendering, sobald die Position eröffnet ist.

Hier ist der Code im EA.

string   shortName="fraktalSDV"; 
long   chart_ID=0;        // ID графика
int win_idx=ChartWindowFind(chart_ID,shortName);
string nameobj=TimeToStr(Time[0]);       
            //--- сбросим значение ошибки
            ResetLastError();
            //--- создадим трендовую линию по заданным координатам
           if(!ObjectCreate(chart_ID,nameobj,OBJ_TREND,win_idx,Time[index],maximum1,Time[1],TRENDmax[1]))
            {
            Print(__FUNCTION__,
                  ": не удалось создать линию тренда! Код ошибки = ",GetLastError());
            return(0);
            }
ObjectSet(nameobj,OBJPROP_RAY,false); 

Im Indikator selbst befindet sich eine Linie:

IndicatorShortName("fraktalSDV");

 
forexman77:

Auf diese Weise wird im EA -1 ausgegeben. Im Skript ist alles in Ordnung, das Bild oben. Ich habe Ihren Artikel über den AD-Indikator gelesen, aber ich verstehe ihn noch nicht. Wie immer liegt der Grund in einer Kleinigkeit.

Soweit ich weiß, wird das Fenster im EA aus irgendeinem Grund nicht erkannt, Fehler 4206.

Das Teilfenster für den Indikator wird nicht gefunden. Suchen Sie das Indikatorfenster anhand des Kurznamens des Indikators, den Sie oben links im Indikatorfenster sehen. Sie dürfen nicht den ganzen Namen eingegeben haben, um danach zu suchen.
 
Artyom Trishkin:
Das Teilfenster für den Indikator wird nicht gefunden. Suchen Sie das Unterfenster des Indikators mit dem Kurznamen des Indikators, den Sie oben links im Indikatorfenster sehen. Sie geben wahrscheinlich nicht den ganzen Namen ein, um danach zu suchen.

string shortName="fraktalSDV";

Ich nenne es so. Ich habe versucht, den Namen des Indikators im Expert Advisor aufzurufen und ihn zu deaktivieren, aber es hat bisher nicht funktioniert.

Hier ist der Indikator selbst. Ich werde sie später löschen.

 
forexman77:

string shortName="fraktalSDV";

Ich nenne es so. Ich habe versucht, den Namen des Indikators im Expert Advisor aufzurufen, es hat bisher nicht funktioniert.

Versuchen

int win_idx=ChartWindowFind(chart_ID,shortName);

Ich sollte nicht die Suche des Indikators Fenster, sondern ein (gibt es nur ein Fenster auf dem Chart?)

Wenn es funktioniert, geben Sie die Fenstersuche an

long   chart_ID=0;        // ID графика

eintippen

long   chart_ID=ChartID();
 
Artyom Trishkin:

Versuchen Sie

anstelle des Indikatorfensters eine Suche eingeben (gibt es ein Fenster auf dem Chart?)

Oben im Diagramm selbst mit Anführungszeichen und unten im Trennzeichen des Indikators.
 
forexman77:
Oben befindet sich das eigentliche Diagramm mit den Kursen und unten im Separatum der Indikator.
Also tu, was sie dir sagen ;) Sie müssen nach dem Fehler suchen...