Geschrieben 17. Februar 201016 Jr. comment_94382 Hallo zusammen, ich hirne grad schon ne Weile rum, ich habe einen Inidcator und den möchte ich anhand der ICustom auslesen.Das Problem dabei ist aber dass er mit immer einen wirren Wert zurück gibt. Der Indicator zeichnet mit einen Pfeil und bei dem Pfeil möchte ich ein Buy oder Sell Signal auslösen. Anbei der EA und Indi Code. Wäre nett wenn mir da jemand bisschen unter die Arme greifen kann :-) Um die Funktionen geht es: UP_Entry=iCustom(NULL, 0, "Arrozaq_Jens",CrossUp,0,1);Down_Entry=iCustom(NULL, 0, "Arrozaq_Jens",CrossDown,1,1);EA_Jens.mq4Arrozaq_Jens.mq4 Melden
Geschrieben 17. Februar 201016 Jr. comment_94384 Hi Jensxx, du musst die Buffer deines Indikators so ansprechen: //Indikatorberechnung UP_Entry=iCustom(NULL, 0, "Arrozaq_Jens",0,1); // CrossUp Down_Entry=iCustom(NULL, 0, "Arrozaq_Jens",1,1); // CrossDown falls du die EMA-Parameter über den EA steuern willst wäre der Aufruf so: UP_Entry=iCustom(NULL, 0, "Arrozaq_Jens",6,15,false,0,1); - für EMA6,15, sound=false Grüsse,askerix Melden
Geschrieben 17. Februar 201016 Jr. comment_94385 Ein paar weitere Anmerkungen von mir. Der komische Wert den du vermutlich als Rückgabewert gesehen hast (2147483647) ist der Standardwert wenn der Buffer keinen Wert zugewiesen bekommt. Das kannst du wenn du willst so belassen und eben diesen Wert als Filter verwenden oder im init vom Indikator folgendes einfügen, dann wird 0 an Stelle von 214748364 zurückgegeben, damit dein EA Code so funktioniert wie du es jetzt implementiert hast: SetIndexEmptyValue(0,0); SetIndexEmptyValue(1,0); Du verwendest in deinem Code einen Bereich so das nur der erste Tick pro Bar verwendet wir und ein Flag setzt, damit nur da gehandelt wird. Falls du nicht noch weitere Berechnungen bei jedem Tick machen willst/musst, würde ich dir empfehlen noch folgendes einzufügen. Dann wird die Berechnung wirklich nur beim ersten Tick durchgeführt, und sonst abgebrochen. Und du ersparst dir auch das Flag firsttrade. if (Balken!= Bars) { Balken=Bars; firsttrade=true; } else return (0); Der Indikator versucht außerdem in die Zukunft zu sehen, weil er auch auf -1 zugreift, und die letzten 2 Bars neu berechnet. Also ist das was du als Indikator siehst nicht das was er bei laufenden Ticks an Signalen liefern wird, wenn du ihn zB. in einem EA oder Backtest einsetzt.Also solltest du UP_Entry=iCustom(NULL, 0, "Arrozaq_Jens",0,2); verwenden. Dann wird für die Berechnung der EMAs bis Close[1], Close[2], Close[3] verwendet die auf jeden Fall abgeschlossen sind und daher korrekte (gleich wie im Indikator) Signale liefert. Melden
Geschrieben 17. Februar 201016 Jr. Autor comment_94390 Vielen Dank an askerix und Tommy Ich werde das gleich mal versuchen einzubauen und zu testen, ob dasso hinhaut wie ich mir das vorstelle. Eigentlich würde mir ja fast eine Variable im Indikator reichen, die was mir dann z.B. den Wert Var=50 für sell und Var=100 für Buy oder so ausgibt, die ich dann wieder nach dem Buy oder Sell zurücksetzte. Melden
Geschrieben 19. Februar 201016 Jr. Autor comment_94499 Sooo, hab jetzt die Tage mal genutzt um ne Weile rum zu probieren undverschiedene Codelösungen zu testen aber leider bekomme ich noch immer nichts rüber wenn der Indi einen Pfeil zeichnet ... :-( Jetzt meine Frage, kann man nicht eine globale Variable deklarieren wo dann den Lösungsansatzmit den Werten 50 bzw. 100 für Buy oder Sell dann übergibt, dann würde ich den Indi bissle umschreiben? Melden
Geschrieben 19. Februar 201016 Jr. comment_94502 Hi, Wenn du das Ding testest: was steht denn im Journal bzw. ExpertLog? Hast du inzwischen was an dem EA geändert, bzw. am Indikatoraufruf? Weil die gepostete Variante würd mich ehrlich gesagt wundern wenn sie funktioniert, dennThe passed parameters and their order must correspond with the declaration order and the type of extern variables of the custom indicator. Dein Indi hat 3 Parameter: int, int und bool. Du übergibst ihm aber nur 1 double. Wenn du den Wert vom 1. Buffer in deinem Indi haben willst (also den mit Index 0) müsstest du so einen Aufruf machen: int FasterEMA = 5; int SlowerEMA = 13; bool SoundON= false; CrossUp= iCustom(NULL, 0, "Arrozaq_Jens",FasterEMA,SlowerEMA,SoundON,0,1); Zu deiner 50/100 Variante: Ja, das Problem bei solchen Indikatoren ist meist das ein Indi der für den "menschlichen" Gebrauch gedacht ist (also zB der Pfeile in den Chart zeichnet), ungemütlicher für die automatische Umsetzung ist.Du könntest natürlich den Indi für die automatische Umsetzung umschreiben das er nur mehr 1 Buffer hat und in dem steht 1 wenn ein Long Signal ist, 0 wenn kein Signal ist und -1 für ein ShortSignal. Das wäre etwas schöner automatisch umsetzbar, aber möglich ist natürlich auch die aktuelle Variante. hth Melden
Geschrieben 19. Februar 201016 Jr. Autor comment_94505 Achso, das heist ich kann die Varibalen von meinem Indi über die Variablen dieals extern deklariert sind von meinem EA beim Aufruf steuern bzw muss nicht die vorher im Indi eingegebenen verwenden? Ich dachte bisher immer die Variablen die als extern deklariert sind, sind als extern deklariert, dasssie beim "reinziehen" in das Chartfenster in dem Fenster eingegeben werden können. Denke ich da gerade jetzt richtig? Melden
Geschrieben 19. Februar 201016 Jr. comment_94507 Ich dachte bisher immer die Variablen die als extern deklariert sind, sind als extern deklariert, dasssie beim "reinziehen" in das Chartfenster in dem Fenster eingegeben werden können. Es stimmt beides. Die Variablen die du als extern definierst sind die Parameter deines Indis. Wenn du den Indi alleine verwendest (also ihn direkt auf den Chart ziehst) kannst du als Benutzer diese Parameter setzen.Wenn der EA den Indi aufruft, kann/muss der EA als "Benutzer des Indis" natürlich auch die Parameter setzen. Ein EA verwendet halt kein eigenes Fenster (er sieht ja nix ;) sondern übergibt dem Indi direkt beim Aufruf die Parameter. Du als Benutzer des EA kannst natürlich hergehen und dem EA Parameter geben die der EA dann an den Indi weitergibt und somit von außen entscheiden welche Parameter der Indi verwenden soll, musst du aber nicht.In jedem Fall muss aber der Indi seine Parameter kriegen, sonst weiß er nicht was er tun soll. Melden
Hallo zusammen,
ich hirne grad schon ne Weile rum, ich habe einen Inidcator und den möchte ich anhand der ICustom auslesen.
Das Problem dabei ist aber dass er mit immer einen wirren Wert zurück gibt.
Der Indicator zeichnet mit einen Pfeil und bei dem Pfeil möchte ich ein Buy oder Sell Signal auslösen.
Anbei der EA und Indi Code.
Wäre nett wenn mir da jemand bisschen unter die Arme greifen kann :-)
Um die Funktionen geht es:
UP_Entry=iCustom(NULL, 0, "Arrozaq_Jens",CrossUp,0,1);
Down_Entry=iCustom(NULL, 0, "Arrozaq_Jens",CrossDown,1,1);
EA_Jens.mq4
Arrozaq_Jens.mq4