ICustom-Funktion - Seite 8

 
 

Werfen Sie einen Blick auf die iCustom-Funktion in der MQL-Hilfe, sie tut genau das, was Sie benötigen

 

Das war's!

Danke!

 

iCustom

Hallo zusammen,

Manchmal muss sich der Betrieb eines meiner Indikatoren geringfügig unterscheiden, wenn der Indikator als Ergebnis eines Aufrufs von iCustom ausgeführt wurde, im Gegensatz dazu, wie der Indikator normalerweise laufen würde, wenn er an ein Diagramm angehängt wäre.

Gibt es eine einfache Funktion oder Methode innerhalb von MQL, die man innerhalb eines Indikators verwenden kann, um festzustellen, ob der Indikator explizit ausgeführt wurde, weil er an ein Diagramm angehängt war, oder ob der Indikator als Ergebnis eines Aufrufs an iCustom ausgeführt wurde?

Als Trick habe ich meinen Indikatoren einen booleschen Parameter namens "Custom" mit dem Standardwert "false" hinzugefügt. Wenn ich iCustom aufrufe, um den Indikator auszuführen, setze ich diesen Parameter stattdessen auf true. Auf diese Weise kann ich innerhalb meines Indikators feststellen, ob der Indikator als Ergebnis eines Aufrufs an iCustom läuft.

Sicherlich muss es eine Funktion wie z.B. IsCustom() geben, die true zurückgibt, wenn der Indikator über iCustom ausgeführt wurde, oder false, wenn nicht.

Hat jemand eine elegante, einfache Methode, um festzustellen, ob ein Indikator als Ergebnis eines Aufrufs über iCustom ausgeführt wurde?

Mit freundlichen Grüßen,

Laurence.

 

Ich danke Ihnen allen für Ihre Hilfe!

aj

 

icustom Frage

Ich habe versucht, einen Indikator zu erstellen, der nur einen anderen Indikator per icustom aufruft. Ich habe diese Code-Zeile erstellt;

double COG=iCustom(NULL,0, "COGpoint1",50,3000,0,true);

Ich habe versucht, die Zeile an verschiedenen Stellen des Codes zu platzieren und ich habe mit dem Namen des Double gespielt, ich habe viele Tutorials gelesen und gelesen. Ich denke, dass mabey ich muss etwas am Anfang wie Anzahl der Puffer setzen!? mabey es sollte nicht ein Doppel sein?

So wie es aussieht, bekomme ich Fehler beim Kompilieren;

'init' - Komma oder Semikolon erwartet

'init' - Ausdruck im globalen Bereich nicht erlaubt

Kann mir bitte jemand helfen, dies mit einem benutzerdefinierten Indikator zu verstehen? weil ich das Gefühl habe, dass die Tutorials, die ich gelesen habe (und ich glaube, ich habe sie alle) mir die Codezeile für icustom gegeben haben, aber es funktioniert nicht einfach, indem man die Zeile auf seine eigene, ich weiß, es muss für jeden Indikator geändert werden, aber es gibt einige Dinge aus der Erklärung fehlen.

 

Ive hatte einen großen Versuch auf diese Im bin ziemlich stolz auf mich! Ich bekam einige Code von Codersguru, ich änderte es für einen Indikator. lol es sieht gut aus hat keine Fehler beim kompilieren (zum ersten Mal überhaupt!!!!!) aber ... es macht metatrader "nicht reagieren", wenn Sie es zu einem Diagramm hinzufügen.

Ich habe alle Namen der Puffer der Indikatoren geändert (von val1, val2, val3, val4. zu value1, value2...etc), weil ich dachte, dass sie sich gegenseitig stören, als ich mir den Code von Codersguru genauer angesehen habe (er hat einen Code für den Aufruf von supertrend mit icustom gemacht), er hat die Namen der Puffer geändert, also dachte ich, dass es daran liegen muss, aber nein, er reagiert immer noch nicht.

//+------------------------------------------------------------------+

//| COG call.mq4 |

//| |

//| |

//+------------------------------------------------------------------+

#Eigenschaft indicator_separate_window

#Eigenschaft indicator_buffers 4

#property indicator_color1 Kalk

#eigenschaft indicator_color2 Rot

#Eigenschaft indicator_color3 CLR_NONE

#Eigenschaft indicator_color4 CLR_NONE

//---- Puffer

double wert1[];

double wert2[];

double wert3[];

double value4[];

//+------------------------------------------------------------------+

//| Benutzerdefinierte Indikator-Initialisierungsfunktion |

//+------------------------------------------------------------------+

int init()

{

//---- Indikatoren

SetIndexStyle(0,DRAW_LINE,STYLE_SOLID,1,Lime);

SetIndexPuffer(0,Wert1);

SetIndexStyle(1,DRAW_LINE,STYLE_SOLID,1,Rot);

SetIndexBuffer(1,Wert2);

SetIndexStyle(2,DRAW_NONE);

SetIndexBuffer(2,Wert3);

SetIndexStyle(3,DRAW_NONE);

SetIndexBuffer(3,Wert4);

//----

return(0);

}

//+------------------------------------------------------------------+

//| Benutzerdefinierte Funktion zur Deinitialisierung des Indikators |

//+------------------------------------------------------------------+

int deinit()

{

//----

//----

return(0);

}

//+------------------------------------------------------------------+

//| Benutzerdefinierte Indikator-Iterationsfunktion |

//+------------------------------------------------------------------+

int start()

{

int counted_bars=IndicatorCounted();

//---- Prüfung auf mögliche Fehler

if (gezählte_Balken<0) return(-1);

//---- zuletzt gezählte Balken werden neu gezählt

if (gezählte_Balken>0) gezählte_Balken--;

int pos=Balken-gezählt_Balken;

while(pos>=0)

{

wert1[pos]=iCustom(NULL,0, "COGpoint1",50,3000,0,true);

Wert2[pos]=iCustom(NULL,0, "COGpoint1",50,3000,0,true);

Wert3[pos]=iCustom(NULL,0, "COGpoint1",50,3000,0,true);

wert4[pos]=iCustom(NULL,0, "COGpoint1",50,3000,0,true);

}

return(0);

}

//+------------------------------------------------------------------+

 

Dies ist der Thread, in dem ich den Code von Codersguru erhalten habe;

https://www.mql5.com/en/forum/173108

Ich habe bemerkt, dass ich einen Teil meines Codes ausgelassen habe: pos an den Enden und pos--;

value1[pos]=iCustom(NULL,0, "COGpoint1",50,3000,0,true,pos);

wert2[pos]=iCustom(NULL,0, "COGpoint1",50,3000,0,true,pos);

Wert3[pos]=iCustom(NULL,0, "COGpoint1",50,3000,0,true,pos);

Wert4[pos]=iCustom(NULL,0, "COGpoint1",50,3000,0,true,pos);

pos--;

Probieren wir es aus!

 

LOL LOL LOLLLLLLLLL hahaha! oh mein Gott

ok ich habe Fortschritte gemacht ich habe die Hälfte meines Indikators auf dem Bildschirm (nur der rote Teil des Indikators, lol wo ist der grüne Teil?) das ist das erste was ich jemals zur Hälfte zum Laufen gebracht habe obwohl ich es nicht glauben kann hahaha! weiß jemand was ich falsch gemacht habe?

 

hmm ich habe am ende 0,1,2,3 als experiment hinzugefügt. ich weiß nicht warum? aber es hat etwas bewirkt, jetzt habe ich eine flache rote linie und grün!!!!

juhu! es ist nicht richtig, vielleicht noch schlimmer, das ist seltsam! hilf mir bitte jemand... alle schlafen zzz zzz zzz außer mir!

Grund der Beschwerde: