Metatrader Forum | Forex Expert-Advisor | Broker & Forex Tools
Zurück   Metatrader Forum | Forex Expert-Advisor | Broker & Forex Tools > Metatrader 4 > Programmierung MQL4

Programmierung MQL4 Hier gehts rund ums Programmieren in MQL4.


Portalsuche


Werbung

Login
Benutzername:
Kennwort:


Statistik
Themen: 3823
Beiträge: 36902
Benutzer: 6.071
Aktive Benutzer: 494
Links: 80
Wir begrüßen unseren neuesten Benutzer: Roerich
Mit 483 Benutzern waren die meisten Benutzer gleichzeitig online (21.04.16 um 17:12).
Neue Benutzer:
vor 18 Stunden
- Roerich
vor 19 Stunden
- John_Liver...
vor 19 Stunden
- harry1001
vor einem Tag
- supadog
vor 2 Tagen
- POCJonah7

Onlineuser
'Wer ist online' anzeigen Benutzer: 1
Gäste: 41
Gesamt: 42
Team: 0
Team:  
Benutzer:  Stier
Freunde anzeigen

Empfehlungen

Werbung

Thema geschlossen
 
Themen-Optionen Thema durchsuchen Ansicht
  #1 (permalink)  
Alt 05.08.14
Mitglied
 
Registriert seit: Aug 2014
Ort: Hessen
Beiträge: 101
Dick_Turpin befindet sich auf einem aufstrebenden Ast
Standard Non Repainting SuperTrend richtig auslesen

Hallo an alle,

ich möchte gern den aktuellen Trend (buy oder sell) aus o.g. NRST-Indikator auslesen.

Nun habe ich versucht, den NRST-Indikator über die ICustom-Funktion auszulesen aber es funktioniert nicht so richtig. Sehr oft bekomme ich nur den Default EMPTY-VALUE 2147483647 angezeigt.
Ich vermute, dass das Problem bei der Angabe des Shift-Parameters liegt. Wie ich schon festgestellt habe, wird bei Shift 0 immer nur der EMPTY-VALUE ausgegeben, erst ab Shift 1 aufwärts werden Werte angezeigt.

Ich kann im NRST folgende 4 Werte auslesen:
SetIndexBuffer(0,TrendUp)
SetIndexBuffer(1,TrendDown)
SetIndexBuffer(2,UpBuffer)
SetIndexBuffer(3,DnBuffer)

Wenn der Trend wechselt, wird dies immer durch einen roten oder blauen Pfeil angezeigt. Ich denke, dass die beiden Werte "UpBuffer" und "DnBuffer" für diese beiden Pfeile stehen, und die Werte "TrendUp" und "TrendDn" stehen für die beiden Linien, bin mir aber nicht sicher...
Manchmal werden im Abwärtstrend auch Kurse im "TrendUp" oder "UpBuffer" angezeigt?

Kann mir jemand sagen, wie ich die o.g. 4 Werte richtig auslesen kann?

Anbei der MQL4-Code des NRST-Indikators und meines TEST01-EA's.

Gruß
Dick
Angehängte Dateien
Dateityp: mq4 TEST01.mq4 (5,1 KB, 10x aufgerufen)
Dateityp: mq4 Non_Repainting_SuperTrend.mq4 (6,4 KB, 34x aufgerufen)
  #2 (permalink)  
Alt 05.08.14
Mitglied
 
Registriert seit: Aug 2014
Ort: Hessen
Beiträge: 101
Dick_Turpin befindet sich auf einem aufstrebenden Ast
Standard

Habe eben den ersten Fehler gefunden:

Bei der Definition der Parameter für den NRST haben die Werte für die einzelnen Parameter gefehlt...

Gruß
Dick
  #3 (permalink)  
Alt 05.08.14
Benutzerbild von fxdaytrader
Premium Mitglied
 
Registriert seit: Dec 2013
Ort: hier und dort
Beiträge: 433
fxdaytrader befindet sich auf einem aufstrebenden Ast
Standard

iCustom - MQL4 Documentation das ist der Befehl, am besten mal EAs suchen die auch den supertrend-indikator nutzen und schauen wie das dort geregelt wurde ...
__________________
krank im Kopf aber sonst ganz nett
build 509 mql4 editor download
  #4 (permalink)  
Alt 06.08.14
Mitglied
 
Registriert seit: Aug 2014
Ort: Hessen
Beiträge: 101
Dick_Turpin befindet sich auf einem aufstrebenden Ast
Standard

@fxdaytrader: Danke für Deine Antwort.

Mittlerweile meine ich, nach einigem Testen, folgendes zu den 4 auslesbaren Werten des Supertrend herausgefunden:

SetIndexBuffer(0,TrendUp): hier ist ab der letzten abgeschlossenen Periode (Shift 1) ein Wert enthalten, wenn ein Aufwärtstrend aktiv ist

SetIndexBuffer(1,TrendDown): hier ist ab der letzten abgeschlossenen Periode (Shift 1) ein Wert enthalten, wenn ein Abwärtstrend aktiv ist

SetIndexBuffer(2,UpBuffer): Hier ist nur in dem Moment ein Wert zu finden, wenn der Trend vom Abwärtstrend zum Aufwärtstrend wechselt. Man kann diesen Wert auch erst ab der letzten abgeschlossenen Periode (Shift 1) abfragen. Man kann aber auch, wenn man mit dem Shift-Parameter entsprechend weit zurück geht, z.B. Shift 14 o.ä., diesen Wert noch im nachhinein abfragen.

SetIndexBuffer(3,DnBuffer): Hier ist nur in dem Moment ein Wert zu finden, wenn der Trend vom Aufwärtstrend zum Abwärtstrend wechselt. Man kann diesen Wert auch erst ab der letzten abgeschlossenen Periode (Shift 1) abfragen. Hier kann man auch, wenn man mit dem Shift-Parameter entsprechend weit zurück geht, z.B. Shift 14 o.ä., diesen Wert noch im nachhinein abfragen.

Gruß
Dick
  #5 (permalink)  
Alt 12.08.14
Mitglied
 
Registriert seit: Aug 2014
Ort: Hessen
Beiträge: 101
Dick_Turpin befindet sich auf einem aufstrebenden Ast
Standard

Also so richtig zufrieden bin ich mit dem Supertrend nicht...

Habe seit einigen Tagen einen EA am laufen, wo nur morgens zwischen 07:30 und 08:00 Uhr im EURUSD gekauft werden soll (Long oder Short, je nachdem, ob Aufwärts- oder Abwärts-Trend aktiv ist). Gegengeprüft wird das ganze dann noch mit ADX und RSI. Soweit funktioniert der EA auch und macht was er soll. Nur der Supertrend hat mich bzw. meinen EA heute angeschmiert

Und zwar läuft und tradet der EA im M15 Chart. Im M15 Chart stand der Supertrend heute schon seit ca. 90 Perioden auf Abwärtstrend. Aber mein EA hat eine Long-Order ausgeführt??? Bis jetzt steht der Supertrend im M15 Chart immer noch unverändert auf Abwärtstrend.
Im M5 Chart stand der Supertrend zum Zeitpunkt des Kaufs mal kurz auf Aufwärtstrend bevor er wieder auf Abwärtstrend gewechselt ist.
Kann es sein, dass der Supertrend zum Zeitpunkt des Kaufs zwischen Aufwärts- und Abwärts-Trend hin und her gerissen war

Ich habe auch schon beobachtet, dass wenn ich den Supertrend im Chartfenster aktiviert habe, es manchmal so aussieht, als ob der Trend wechselt, weil schon die andere Trendrichtung angezeigt wird. Aber wenn ich kurz aus dem Fenster raus und wieder rein gehe, dann ist der ursprüngliche Trend durchgehend intakt und kein Trendwechsel da.

Kann mir vielleicht jemand etwas dazu sagen?

Gruß
Dick
  #6 (permalink)  
Alt 12.08.14
Benutzerbild von fxdaytrader
Premium Mitglied
 
Registriert seit: Dec 2013
Ort: hier und dort
Beiträge: 433
fxdaytrader befindet sich auf einem aufstrebenden Ast
Standard

Der holy grail ist das sicher nicht.

ich kopiere mal ein bisserl code, das lässt sich in einem Ea nutzen:

variablen:
Code:
//
extern bool TradeOnSuperTrendUpDnSignals   = true;
extern bool TradeIfSuperTrendDirectionIsOk = true;
//
extern int    SuperTrendAtrPeriod      = 13;
extern double SuperTrendAtrMultiplier  = 3.5;
string iCustomSuperTrendName = "NonRepaintingSuperTrend";
functions:
Code:
int GetIndicatorValues() {
 int type=99;

 if (TradeIfSuperTrendDirectionIsOk) {
  if (SuperTrendNRPOk(OP_BUY)) return(OP_BUY);
  if (SuperTrendNRPOk(OP_SELL)) return(OP_SELL);
 }
 
 if (TradeOnSuperTrendUpDnSignals) {
  if (SuperTrendNRPSignalOk(OP_BUY)) return(OP_BUY);
  if (SuperTrendNRPSignalOk(OP_SELL)) return(OP_SELL);
 }
 
 return(type);
}

bool SuperTrendNRPOk(int type) {
 double tup = iCustom(Symbol(),0,iCustomSuperTrendName,SuperTrendAtrPeriod,SuperTrendAtrMultiplier,0,SignalCandle);
 double tdn = iCustom(Symbol(),0,iCustomSuperTrendName,SuperTrendAtrPeriod,SuperTrendAtrMultiplier,1,SignalCandle);
 if (type==OP_BUY && tup!=EMPTY_VALUE && tdn==EMPTY_VALUE) return(true);
 if (type==OP_SELL && tup==EMPTY_VALUE && tdn!=EMPTY_VALUE) return(true);
 return(false);
}

bool SuperTrendNRPSignalOk(int type) {
 double tup = iCustom(Symbol(),0,iCustomSuperTrendName,SuperTrendAtrPeriod,SuperTrendAtrMultiplier,2,SignalCandle);
 double tdn = iCustom(Symbol(),0,iCustomSuperTrendName,SuperTrendAtrPeriod,SuperTrendAtrMultiplier,3,SignalCandle);
 if (type==OP_BUY && tup!=EMPTY_VALUE && tdn==EMPTY_VALUE) return(true);
 if (type==OP_SELL && tup==EMPTY_VALUE && tdn!=EMPTY_VALUE) return(true);
 return(false);
}
Angehängte Dateien
Dateityp: ex4 NonRepaintingSuperTrend.ex4 (5,5 KB, 15x aufgerufen)
__________________
krank im Kopf aber sonst ganz nett
build 509 mql4 editor download
  #7 (permalink)  
Alt 12.08.14
Mitglied
 
Registriert seit: Aug 2014
Ort: Hessen
Beiträge: 101
Dick_Turpin befindet sich auf einem aufstrebenden Ast
Standard

Danke für den Code!

Leider bekomme ich von folgenden Aufrufen immer nur 0 zurück und keine Kurse:

double tup = iCustom(Symbol(),0,iCustomSuperTrendName,SuperTren dAtrPeriod,SuperTrendAtrMultiplier,0,1);
double tdn = iCustom(Symbol(),0,iCustomSuperTrendName,SuperTren dAtrPeriod,SuperTrendAtrMultiplier,1,1);
double tup = iCustom(Symbol(),0,iCustomSuperTrendName,SuperTren dAtrPeriod,SuperTrendAtrMultiplier,2,1);
double tdn = iCustom(Symbol(),0,iCustomSuperTrendName,SuperTren dAtrPeriod,SuperTrendAtrMultiplier,3,1);

Mich wundert, dass in der iCustom-Definition nicht alle Input-Parameter angegeben sind, sondern nur die Periode und der Multiplier. Wenn ich die Doku richtig gelesen habe, dann müssen ALLE Input-Parameter des Indikators angegeben sein.

Noch eine Frage: Was bedeutet SignalCandle als Shift-Parameter in der iCustom-Definition? Wenn ich das so kompiliere bekomme ich die Fehlermeldung "'SignalCandle' - undeclared identifier", deshalb habe ich hier jeweils eine 1 eingesetzt.

Ich habe bei mir den iCustom so definiert, incl. aller Input-Parameter:

double TrendUp_current = iCustom(NULL,0,"Non_Repainting_SuperTrend",Nbr_Per iods,Multiplier,sidFontSize,sidFontName,NoteRedGre enBlue,sidRed,sidGreen,sidBlue,sidXPos,sidYPos,tag DisplayText,tagText,tagFontSize,tagFontName,tagRed ,tagGreen,tagBlue,tagXPos,tagYPos,0,1);
double TrendDn_current = iCustom(NULL,0,"Non_Repainting_SuperTrend",Nbr_Per iods,Multiplier,sidFontSize,sidFontName,NoteRedGre enBlue,sidRed,sidGreen,sidBlue,sidXPos,sidYPos,tag DisplayText,tagText,tagFontSize,tagFontName,tagRed ,tagGreen,tagBlue,tagXPos,tagYPos,1,1);

double Up_current = iCustom(NULL,0,"Non_Repainting_SuperTrend",Nbr_Per iods,Multiplier,sidFontSize,sidFontName,NoteRedGre enBlue,sidRed,sidGreen,sidBlue,sidXPos,sidYPos,tag DisplayText,tagText,tagFontSize,tagFontName,tagRed ,tagGreen,tagBlue,tagXPos,tagYPos,2,1);
double Dn_current = iCustom(NULL,0,"Non_Repainting_SuperTrend",Nbr_Per iods,Multiplier,sidFontSize,sidFontName,NoteRedGre enBlue,sidRed,sidGreen,sidBlue,sidXPos,sidYPos,tag DisplayText,tagText,tagFontSize,tagFontName,tagRed ,tagGreen,tagBlue,tagXPos,tagYPos,3,1);

Comment ("TrendUp_cur: " + TrendUp_current, " TrendDn_cur: " + TrendDn_current, " Up_current: " + Up_current, " Dn_current: " + Dn_current);
  #8 (permalink)  
Alt 12.08.14
Benutzerbild von fxdaytrader
Premium Mitglied
 
Registriert seit: Dec 2013
Ort: hier und dort
Beiträge: 433
fxdaytrader befindet sich auf einem aufstrebenden Ast
Standard

SignalCandle ist gleich candleshift, also 0 heisst aktuelle Kerze, 1 die vorhergehende, etc.
im header bspw. int SignalCandle=1; einfügen.

Du mußt den von mir angehängten indikator verwenden, der kommt nämlich mit 2 input-parametern aus (ich habe alle nicht benötigten Parameter entfernt).
Daß das funktioniert sieht man an dem gerade von mir angefertigten screenshot
Angehängte Grafiken
Dateityp: jpg supertrendtest.jpg (17,0 KB, 16x aufgerufen)
__________________
krank im Kopf aber sonst ganz nett
build 509 mql4 editor download
  #9 (permalink)  
Alt 12.08.14
Benutzerbild von fxdaytrader
Premium Mitglied
 
Registriert seit: Dec 2013
Ort: hier und dort
Beiträge: 433
fxdaytrader befindet sich auf einem aufstrebenden Ast
Standard

Als Anhang ein EA, er verwendet zur Signalgenerierung die Logik wie von mir oben publiziert.
Weiter benötigt der EA den indikator aus post Non Repainting SuperTrend richtig auslesen ...
Angehängte Dateien
Dateityp: ex4 SuperTrendNRP EA.ex4 (26,9 KB, 17x aufgerufen)
__________________
krank im Kopf aber sonst ganz nett
build 509 mql4 editor download
  #10 (permalink)  
Alt 13.08.14
Mitglied
 
Registriert seit: Aug 2014
Ort: Hessen
Beiträge: 101
Dick_Turpin befindet sich auf einem aufstrebenden Ast
Standard

Hi fx,

ich hatte gestern abend zwar Deinen Supertrend-Indikator installiert aber meinen alten Supertrend-Indikator nicht deinstalliert. Vielleicht lags daran. Das kann ich aber erst heute abend noch mal testen...

Bei Tests heute morgen habe ich festgestellt, dass der Supertrend durchaus auch mal in beide Richtungen gleichzeitig einen Trend anzeigt Besonders, wenn in den kleineren Zeiteinheiten eine andere Trendrichtung aktiv ist oder ein Trendwechsel stattfindet. Deswegen auch mein Fehltrade gestern, wo im M15 Chart der Abwärtstrend schon seit ca. 90 Kerzen aktiv war aber im M5 Chart der Trend kurzzeitig von Abwärts auf Aufwärts schwankte und mein EA trotz aktivem Abwärtstrend im M15 Chart einen Buy ausgeführt hat.

Für mich heißt das, dass die vorletzte Kerze (candleshift 1), welche ich immer für die aktuell aktive Trendrichtung abfrage, nicht stabil ist und noch die Trendrichtung wechseln kann. Wäre es nun besser, anstatt die vorletzte Kerze (candleshift 1) die vor-vorletzte Kerze (candleshift 2) für die Abfrage der Tendrichtung zu verwenden, in der Hoffnung, dass sich hier die Trendrichtung nicht mehr ändert?

Und noch ne kleine Frage: Wo finde ich die Experten-Logfiles? Die Journal-Logfiles habe ich gefunden aber leider nicht die Experten-Logfiles. Und da hier die ganzen Print-Ausgaben der EA's reinlaufen, hätte ich auch gern diese Logiles.

Gruß
Dick
Thema geschlossen

Lesezeichen

Stichworte
indikator, indikator auslesen, non repainting supertrend, nrst, nrst indikator, programmierung, programmierung metatrader, supertrend


Themen-Optionen Thema durchsuchen
Thema durchsuchen:

Erweiterte Suche
Ansicht

Forumregeln
Es ist Ihnen nicht erlaubt, neue Themen zu verfassen.
Es ist Ihnen nicht erlaubt, auf Beiträge zu antworten.
Es ist Ihnen nicht erlaubt, Anhänge hochzuladen.
Es ist Ihnen nicht erlaubt, Ihre Beiträge zu bearbeiten.

BB-Code ist an.
Smileys sind an.
[IMG] Code ist an.
HTML-Code ist aus.
Trackbacks are aus
Pingbacks are aus
Refbacks are aus




Alle Zeitangaben in WEZ +1. Es ist jetzt 10:33 Uhr.



Der Wavesnode - Spam Firewall
-----------------------------------------------------------------------------------------------------------------------------
Powered by vBulletin® Version 3.8.5 (Deutsch)
Copyright ©2000 - 2017, Jelsoft Enterprises Ltd.
Powered by vBCMS® 2.7.0 ©2002 - 2017 vbdesigns.de
SEO by vBSEO 3.6.1
Copyright ©2009 - 2017 by Expert-Advisor.com - Das Metatrader Forum
MetaTrader bzw. MetaTrader 4 und MetaTrader 5 sind eingetragene Marken der MetaQuotes Software Corp.
-----------------------------------------------------------------------------------------------------------------------------