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.

Filter für Einstiegssignale

Geschrieben
Egal ob SAR, SuperTrend, Silvertrend oder wie sie alle heissen, der Ansatz die Waves mal kurz oder lang abzugreifen, dann noch mit statischem Verhalten des Signalverwertens genügt leider nicht. Wenn es so einfach wäre, wäre hier im Board alles vergoldet :full: Ein paar sinnvolle Filter, die über die Auswertung des übergeordneten Trends hinausgehen, ein bisschen Moneymanagement und die Sache sieht ganz anders aus. Habe mir selbst diese Indikatoren angeschaut ... :scare3:

 

 

Kannst Du mir einen Tipp geben in Sachen Filter ? Welche sind Deiner Meinung nach zu empfehlen ?

Bearbeitet von ronner
Ausgelagert von http://www.tom-next.com/community/Programmierung-EA-t55894.html

Featured Replies

Geschrieben
Kannst Du mir einen Tipp geben in Sachen Filter ? Welche sind Deiner Meinung nach zu empfehlen ?

 

da gibt es tausend Sachen, auf jeden Fall sollte es nicht zu 100% nur von diesem SAR-Signal abhängen, viele nutzen den RSI, Momentum, ADX o.a.

und steigen nur ein, wenn ein bestimmter Wert unter/überschritten wurde

 

Insbesondere solltest du wirklich in Ruhe die gehandelte Signale manuell durchlaufen und jeweils entscheiden, ob du das dann

hättest handeln wollen oder nicht. Im Negativfall wäre der nächste Schritt zu schauen, inwieweit du für alle diese Signale

ein Kriterium findest, womit du dann im EA diese herausfiltern kannst. Beispiel: wenn der SAR extrem schnell hin und herwechselt,

wie beim S&P500 (Daily) in den letzten Tagen zu sehen, sollte dein System dann besser keine Signale liefern, da zu viele Fehltrades.

Eine einfache Sache das zu filtern wäre z.B. die Frequenz der Richtungswechsel zu berechnen, optimal in einer etwas kleineren Zeiteinheit.

D.h. wenn das System 1h nutzt, die Berechnung auf 30, besser 45 Minutenbasis ausführen. Hast du das, muss man natürlich auch schauen, ob

durch diese Filterung nicht zuviele gute Signale ebenfalls herausgefiltert werden ...

Ein anderes Beispiel wäre die Prüfung auf Spikes o.ä., was den SAR schnell mal in die andere Richtung ziehen kann, wenn dann zeitlich

die ATR sehr stark angewachsen ist und die Richtung nicht eindeutig, dann würde ich den EA in Wartestellung bringen,

da dieses wilde Hin- und Herzappeln den wenigsten Systemen gut tut ...

 

Weiterhin sollte man nicht nur schlechte Signale oder 'Zeiten mit schlechten Signalen' herusfiltern, man sollte auch mal auf die guten

Signale schauen. anders gesagt prüfen, unter welchen Umsänden die Signalqualität am besten ist.

 

Z.B. ausserhalb der Londoner und / oder US-Session sowie des Nachts Londoner Zeit dürfte dein Tradingansatz

eher schwergängig sein, abgesehen vom höheren Spread ... Während der Londoner Session, kurz davor und zu Beginn der NY-Session

dürfte die Signalqualität wesentlich besser sein. Aber auch hier kann es zur Mittagszeit mal zum Einschlafen an der Böre

kommen, was man schön am Chart sehen kann, über die ATR oder mit anderen Dingen schnell berechenbar.

Bei anderen Tradingansätzen (wie z.B. einem Breakout-Indikator) warte ich regelrecht auf solches Seitwärtsbereiche, da es ein

Einschlafen der Martkzeilnehmer oder aber ein Ansammeln an noch zu handelnden Kontrakten bedeutet, für die SAR-Geschichte

jedoch eher ungünstig.

 

Du kannst auch mal versuchen über die Parametrisierung des Systems herauszufinden, welche Parameterbereiche grundsätzlich

in die gewünschte Richtung gehen. Da natürlich immer sehr vorsichtig sein und die Sache nicht überoptimieren. Was

man auf diese Weise aber gut machen kann, nämlich ausloten, in welchen Bereichen ein System grundsätzlich Sinn macht.

In der unten beigefügten Grafik ein MT4-Beispiel, wo man mit den dunkleren Bereichen sehen kann, welche Bereiche der Parameter

grundsätzlich Sinn machen.

 

Weiter kann man sich Chartpattern als zusätzliche Signalgber berechnen lassen, die dann entsprechend das SAR-Signal unterstützen oder eben nicht.

 

das vielleicht ein paar Beispiele, wo man ansetzen könnte ... :full: :full: :full:

MT4_Parameterbereiche.png

Geschrieben
  • Autor
da gibt es tausend Sachen, auf jeden Fall sollte es nicht zu 100% nur von diesem SAR-Signal abhängen, viele nutzen den RSI, Momentum, ADX o.a.

und steigen nur ein, wenn ein bestimmter Wert unter/überschritten wurde

 

Ein guter Beitrag, den Du hier verfaßt hast. Wir würde denn die Berechnung der Chartpattern in der Praxis aussehen ? Ich habe sowas noch nicht gemacht und wüßte gar nicht, wie ich da vorgehen müsste. Vielleicht kannt Du auch näher erklären, wie diese Frequenzberechnung praktisch ausgeführt wird. Deine Grafik ist beeindruckend, habe aber leider keine Ahnung wie sowas erstellt wird.

 

Danke für Deine Hilfe

Bearbeitet von ronner
Zitat gekürzt - bitte sparsam benutzen

Geschrieben
...

kannt Du auch näher erklären, wie diese Frequenzberechnung praktisch ausgeführt wird. Deine Grafik ist beeindruckend, habe aber leider keine Ahnung wie sowas erstellt wird.

...

Wikipedia --> Frequenz --> Häufigkeit eines sich regelmäßig wiederholenden Vorgangs ...

Je höher die Frequenz, desto mehr SAR-Wechsel ... also im Code die Anzahl der Wechsel in den vergangenen N-Kerzen berechnen. N muss dann an die Größe der abzugreifenden Wellenbewegungen angepasst werden. Ich würde mir die Frequenz berechnen lassen und als Indikator beim Backtest anzeigen lassen. Dann siehst du bei welchen Werten viele gute Signale kommen bzw. wo viele Fehlsignale kommen.

 

...

Wir würde denn die Berechnung der Chartpattern in der Praxis aussehen ? Ich habe sowas noch nicht gemacht und wüßte gar nicht, wie ich da vorgehen müsste.

...

Bei größeren Pattern eher aufwendig, bei kleineren, die aus wenigen Kerzen bestehen einfach Open/Close/High/Low der jeweiligen Kerzen prüfen, ob diese dem gesuchten Pattern entsprechen. Das können klassische Candlepattern wie Hammer, Doji, BullishEngulfing, etc. sein oder eigengestrickte.

Um CandlePattern zu finden berechne ich mir zu Beginn verschiedene Parameter der letzten 5-10 Kerzen (Bsp. BodySizeRelativ, BodySizePt, LowerShadowSize, UpperShadowSize, RangeRelativ, RangePt, Color, ... ). Danach prüfe ich diese Parameter, ob damit die Kriterien für ein zu suchendes Pattern erfüllt werdn können. Jedes Pattern hat eine bestimmte Signalstärke (MorningStar ist z.B. gewichtiger als BullishEngulfing) und diese Signalstärke wird dann subsumiert in Form einer einzigen Zahl, die mir dann als Richtungsweiser dient, wenn ich Long/Short gehe.

 

Hast du ein Pattern gefunden, dass eine Long-Indikation anzeigt, dieses Pattern im Code merken und nach einer bestimmten Zeit ungültig werden lassen. Wenn während des Gültigkeitszeitraums dein SAR-Ansatz ebenfalls Long anzeigt ist die Wahrscheinlichkeit umso höher, dass Long sinnvoll ist.

 

Diese grüne Grafik habe ich eingefügt, weil du das wirklich machen kannst, einfach in MT4 im StrategyTester bei Optimierung das Häkchen setzen, dann beim Buttun 'Experten Eigenschaften' im bereich 'Input' bei mdst. zwei Parameter ein Häkchen setzen, wobei die Werte für 'Anfangswert,Schritt, Stop' sinnvoll sein sollten. Dann wieder im StrategyTester im Bereich 'Optimierte Grafik' mit der rechten Maustaste im Menu '2D' anklicken oder Space-Taste ...

 

Sicherlich ist das ein wenig viel für dich, kostet eben alles ein wenig Arbeit ... :scare3: :secret: und irgendwann fängt jeder mal an ...

Geschrieben

@Maerl,

 

:scare3:

 

@trading-hunter,

 

bitte nutze die Zitatfunktion ökonomischer - Du zitierst generell immer den kompletten Beitrag des Vorredners. Dadurch bläht sich der Thread unnötig extrem auf und die Lesbarkeit wird erschwert.

 

Einfach die überschüssigen Zeilen zwischen den {quote}-Klammern löschen und nur den Text stehen lassen den man "anspricht".

Geschrieben
  • Autor
Einfach die überschüssigen Zeilen zwischen den {quote}-Klammern löschen und nur den Text stehen lassen den man "anspricht".

 

Hab ich nicht gewußt,

 

Danke

Geschrieben
Hab ich nicht gewußt

 

Wäre nett, wenn Du Dir diesbezüglich etwas mehr Mühe geben könntest.

Das Eingrenzen der Zitate auf die eigentliche Länge/ resp. Keywords dauert keine 3 Sekunden,

erspart andererseits aber unseren Moderatoren jede Menge Arbeit.

 

 

Danke vorab! :scare3:

Geschrieben
  • Autor
Ich würde mir die Frequenz berechnen lassen und als Indikator beim Backtest anzeigen lassen.

 

Wie macht man das in der Praxis (Frequenz berechnen lassen) ?

Geschrieben
Wie macht man das in der Praxis (Frequenz berechnen lassen) ?

 

Wikipedia --> Frequenz --> Häufigkeit eines sich regelmäßig wiederholenden Vorgangs ...

 

jedesmal wenn der SAR die Richtung wechselt (nur am Ende der Kerze vom EA zu prüfen, was vermutlich aktuell so ist) den Wechsel mit einer Gültigkeitsdauer merken. Beim nächsten Wechsel wieder eins hinzuzählen usw. usf. Ist die Gültigkeitsdauer abgelaufen eins abziehen.

Umsetzen kann man das z.B. mittels zweier Zahlen, de die Anzahl der Wechsel und die den gültigkeitsbasierten Wert enthält, der mit jeder Kerze angepasst wird.

 

Die Gültigkeitsdauer müsste man eruieren, für M15 könnte 8-9 Candles passen, im Beispie habe ich 10 genommen. Das wäre dann die Basis, zu der die Anzahl der Wechsel berechnet wird. D.h. in dem Fall würden wir von der Annahme ausgehen, dass das Abgreifen der Wellen mit einer Kerzenanzahl von 8-9 optimal ist. Ein Wechsel innerhalb dieser Zeit würde dann 1/Basis ergeben, zwei Wechsel entsprechend 2/Basis. Es genügt die Anzahl zu speichern, also 1, 2 ... Die '/Basis' kürzen wir einfach weg und als Zielbereich für gute Signale mit dem SAR hätte man eine Frequenz, die sich im Bereich um 0 ... 1 befindet. Da bisher nur ganzzählige Wechsel gespeichert werden schrieb ich vorhin die kleinere Zeiteinheit wie 30mins, besser 45mins zu nutzen. Besser noch man lässt einen gespeicherten Wechsel nicht nach der Gültigkeit komplett verfällen, sondern mit jeder Kerze ein Stück, damit hätte man dann Werte wie 1,45 Wechsel / Basis, was deutlich besser wäre. D.h. in H1 wäre der Zielbereich der berechneten Frequenz dann (sehr grob geschätzt) 0 ... 1,4. Begründung: wir wollten uns Bereiche heraussuchen, in denen entweder gar kein Wechsel oder nur sehr wenig Wechsel stattgefunden haben.

 

Programmieren tue ich das hier nicht, das musst du schon selbst, aber das ist bei der Systementwicklung meist das geringste Problem.

Nur ansatzweise:

 

// diese Länge extern definieren, da eine sinnvolle Zahl erst bestimmt werden muss
// was somit wesentlich einfacher ist
extern int Frq.BaseLength = 10;

double cntChanges = 0;
double sarFrq = 0;

// ---- Mit jeder neuen Candle folgende Berechnung ausführen ----

// mit jeder Kerze die Gültigkeit ein wenig verfallen lassen
// bei einer Basislänge von 10 verfällt hiermit jeder Wechsel mit jeder neuen Kerze um 0.1
if(sarFrq > 0) {
 cntChanges -= 1/Frq.BaseLength;
 sarFrq -= MathCeil(cntChanges) * (1/Frq.BaseLength);
}

// Wenn der SAR wechselt die beiden Zahlen entsprechend inkrementieren
// SARChange heisst nur, dass ein Wechsel stattgefunden hat
if(SARChange == true) {
 cntChanges += 1;
 sarFrq     += 1;
}

// ----

// Der zu berechnende Wert ist jetzt in sarFrq, welcher nun durch den EA auszuwerten ist
// Ein Bereich von 0 ... 1.4 (auf jeden Fall ein Wert < 2) ist zu empfehlen

Geschrieben

ich war so neugierig und wollte selbst mal sehen, wie das in echt aussieht ... also code von oben eingebaut und angepasst (sarFrq war überflüssig), ich lass mir im Indikator drei verschiedene Basislängen anzeigen.

 

double cntChanges1 = 0, 
double cntChanges2 = 0;
double cntChanges3 = 0;

for(i=limit-1; i>=0; i--) {

    psar0 = iSAR(NULL, 0, psarParam1, psarParam2, i);
    psar1 = iSAR(NULL, 0, psarParam1, psarParam2, i+1);
    if((psar0 > Close[i] && psar1 < Close[i+1]) ||
       (psar0 < Close[i] && psar1 > Close[i+1]))
       {
        cntChanges1 += 1;
        cntChanges2 += 1;
        cntChanges3 += 1;
       }
 
   if(cntChanges1 > 0) { cntChanges1 -= NormalizeDouble(1, 0)/Frq.BaseLength1; }
   if(cntChanges2 > 0) { cntChanges2 -= NormalizeDouble(1, 0)/Frq.BaseLength2; }
   if(cntChanges3 > 0) { cntChanges3 -= NormalizeDouble(1, 0)/Frq.BaseLength3; }
   
   ExtMA1Buffer[i] = cntChanges1;
   ExtMA2Buffer[i] = cntChanges2;
   ExtMA3Buffer[i] = cntChanges3;
}

 

In den Grafiken sieht man das ein schnelles und / oder häufiges Wechseln der SAR-Richtung (also up oder down) für Systeme, die darauf basieren, das Handelssystem erstmal in Wartestellung bringen sollten. Als Zielbereich wurde 0 ... 1.4 angenommen, aktuell scheint 0 ... 1 ganz ok zu sein. Mit einer Basislänge von 5 (durchgezogene blaue Linie), 6 (gestrichelte blaue Linie), und 7 (gepunktete Linie) (oben hatte ich 8-9 als sinnvolle Basislänge geschätzt) hat man dann die angezeigten Ergebnisse. Bei Werten oberhalb des Zielbereichs sollte das Signal vom EA nur mit Vorsicht genossen werden.

 

Was klar ist, ist dass in Wartestellung befindliche Systeme zumindest das erste gute Signal nicht mitnehmen können, das ist aber typisch und geht auch nicht anders, das System muss erst wieder in Gang kommen. Im Detail müsste man sich mit etwas mehr Zeit die Ergebnisse in den Charts anschauen, aber im Großen und Ganzen war das die Idee.

SARFrq1.png

SARFrq2.png

Geschrieben
  • Autor

 

Danke, sehr aufschlußreich. Ich muß dennoch nochmal kurz auf meine SAR- Indikation zurück kommen, da ich noch eine Frage habe:

wenn ich beim Backtest alle Order´s einzeln durchgehe, dann fällt mir auf daß jede einzelne Order zu spät eröffnet wird.

Was müsste ich denn schreiben, wenn ich folgende Bedingung zusätzlich einfügen möchte: wenn Anfangskurs des neuen Stabes gleich dem Schlußkurs des alten Stabes gleich, dann sofort neue Order eröffnen.

Geschrieben
Danke, sehr aufschlußreich. Ich muß dennoch nochmal kurz auf meine SAR- Indikation zurück kommen, da ich noch eine Frage habe:

wenn ich beim Backtest alle Order´s einzeln durchgehe, dann fällt mir auf daß jede einzelne Order zu spät eröffnet wird.

Was müsste ich denn schreiben, wenn ich folgende Bedingung zusätzlich einfügen möchte: wenn Anfangskurs des neuen Stabes gleich dem Schlußkurs des alten Stabes gleich, dann sofort neue Order eröffnen.

 

if(Open[i] == Close[i+1]) {
DoSomething();
}

das müsstest du schreiben, aber ich bezweifle, dass das irgendwas bewegt. Solch eine Abfrage macht eigentlich nie Sinn. Der Anfangskurs vom 'neuen Stab' ist der nächste Tick nach dem letzten Tick vom 'alten Stab', der gleich sein kann oder mit einem / zwei Pips Unterschied.

Geschrieben
Dann wieder im StrategyTester im Bereich 'Optimierte Grafik' mit der rechten Maustaste im Menu '2D' anklicken oder Space-Taste ...

 

@Maerl

Hallo zusammen ich habe da eine Frage,wo finde ich im StrategyTester den Bereich " Optimierte Grafik "

um da im Menü 2D einzustellen ?

Danke

 

 

Oh Entschuldigung ich habs gefunden.

Bearbeitet von karlos10

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.