Zum Inhalt springen
View in the app

A better way to browse. Learn more.

#T/N/X/T

A full-screen app on your home screen with push notifications, badges and more.

To install this app on iOS and iPadOS
  1. Tap the Share icon in Safari
  2. Scroll the menu and tap Add to Home Screen.
  3. Tap Add in the top-right corner.
To install this app on Android
  1. Tap the 3-dot menu (⋮) in the top-right corner of the browser.
  2. Tap Add to Home screen or Install app.
  3. Confirm by tapping Install.

EA Programmierung, Trend von Indi auslesen

Geschrieben

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

Featured Replies

Geschrieben

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

Geschrieben

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.

Geschrieben
  • Autor

Vielen Dank an askerix und Tommy :tongue:

 

Ich werde das gleich mal versuchen einzubauen und zu testen, ob das

so 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.

Geschrieben
  • Autor

Sooo, hab jetzt die Tage mal genutzt um ne Weile rum zu probieren und

verschiedene 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ösungsansatz

mit den Werten 50 bzw. 100 für Buy oder Sell dann übergibt, dann würde ich den Indi bissle

umschreiben?

Geschrieben

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, denn

The 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

Geschrieben
  • Autor

Achso, das heist ich kann die Varibalen von meinem Indi über die Variablen die

als 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, dass

sie beim "reinziehen" in das Chartfenster in dem Fenster eingegeben werden können.

 

Denke ich da gerade jetzt richtig?

Geschrieben
Ich dachte bisher immer die Variablen die als extern deklariert sind, sind als extern deklariert, dass

sie 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.

Dein Kommentar

Du kannst jetzt schreiben und Dich später registrieren. Wenn Du ein Konto hast, melde Dich jetzt an, um unter Deinem Benutzernamen zu schreiben.

Gast
Auf dieses Thema antworten...

Account

Navigation

Suche

Suche

Configure browser push notifications

Chrome (Android)
  1. Tap the lock icon next to the address bar.
  2. Tap Permissions → Notifications.
  3. Adjust your preference.
Chrome (Desktop)
  1. Click the padlock icon in the address bar.
  2. Select Site settings.
  3. Find Notifications and adjust your preference.