|
Startseite | Registrieren | Hilfe | Benutzerliste | Kalender | Suchen | Heutige Beiträge | Alle Foren als gelesen markieren |
Programmierung MQL4 Hier gehts rund ums Programmieren in MQL4. |
|
Themen-Optionen | Thema durchsuchen | Ansicht |
|
|||
Überlegungen zum Programmieren einer fallenden oder steigenden LInie
Schönen guten Morgen,
es werden ja oft in den EAs Nebenbedingungen eingebaut, dass zum Beispiel ein Kauf/Verkaufsignal nur dann ausgelöst wird, wenn ein andere Indikator (RSI, Stoch K usw.) einen Mindestwert hat (if StochK oder ADX < 30) usw. Jetzt macht es aber einen merklichen Unterschied, ( in diesem Beispiel Stock K) ob der Stoch K unterhalb dieser 30er Schwelle während der vorigen bars gerade, fallend oder steigend ist. Nehmen wir an ich möchte die Stochastik Nebenbedingung nur dann verwenden,wenn Stock K unter 30 ist UND während der letzten 3 M1 bars (zum close der M1 bars hin) eine positive Steigung hat. Ganz simpel würde ich das so machen, dass ich eine einfache if Bedingung einbaue, in der ich angebe, dass: Stoch K 0>Stoch K 1 und Stoch K1 >Stoch K 2 und Stoch K2 > Stock K3 ist - womit logischerweise eine steigende Linie beschrieben ist, da der folgende immer höher sein muss als der vorige. Da brauche ich kein lineares Programmieren oder sonstige komplizierte Anweisungen um eine positive Steigung zu definieren (vermute ich mal). Ich habe das noch nicht getestet, bin nur neugierig ob das vom Gedankengang her stimmen würde... |
|
|||
Das kommt so hin, nur brauchst Du Stoch K 0 nicht, weil der Wert der aktuellen Kerze noch nicht fertig ist.
Stoch K1 > Stoch K 2 und Stoch K2 > Stock K3 evtl. ergänzt um K4, weil ja auch von K4 zu K3 eine Steigung sein soll, oder? traderdoc
__________________
Ich erfülle Euch gern Eure EA-, Indikator- und Script-Programmierungswünsche auf Honorarbasis. |
|
|||
@traderdoc:
das mit Stoch 4 oder 5,6 usw. ist klar, hängt dann ab wie weit zurück ich eine steigende Linie möchte - wobei der Stochastik eher ein schlechtes Beispiel von mir war, besser ist man nimmt den RSI (der Stochastik Crossover ist ja in meinem System der Trigger), somit trift das mit der Steigung besser auf RSI oder ADX usw. als Nebenbedingung zu, vom Prinzip her ist es aber klar. Aber noch was Interessantes zum Stochastik als Trigger - das ist nämlich auch etwas was mir beim ansehen von "MQL4 Programmier-Videos" aufgefallen ist: einfach nur ein "Stochastik K crossover Stochastik D" (ich erspare jetzt die verschiedenen Befehlszeilen, die sind eh bekannt) als Trigger zu nehmen, ist viel zu unpräzise. Es macht einen großen Unterschied, ob der Stoch K den Stoch D in flachen oder steilen Winkel nach oben (long signal) oder nach unten (short signal) schneidet. Die nachfolgende Dynamik des Preises ist viel größer, wenn der Winkel "steiler" ist (laut meinen "Live-Beobachtungen" ). Als "Noch-nicht-Profi" würde ich das so programmieren, dass dieses klassische Crossover-Signal ( Stoch K0 > Stoch D0 und Stoch K1< Stoch D1 usw.) ergänzt wird, das zwar Stoch K1 < Stoch D1 bleibt, aber dann Stoch K0 > Stoch D0 um einen prozentuellen Wert ergänzt wird, um den eben Stoch K0 mindestens größer als Stoch D0 sein muss (je größer, desto steiler der Winkel beim crossing) damit der Trigger erst ausgelöst wird. Ich würde dann quasi die Befehlszeile für den 0 bar etwa so schreiben, wenn ich möchte, dass der Schnittpunkt mindestens 5% über dem Stoch D0 liegen soll (vorerst mal Menschensprache): "K0 grösser gleich D0 plus D0 mal 0,05". Damit sage ich dem Rechner, das es nicht alleine entscheidend ist, dass K0 größer als D0 sein muss, sondern dass der Trigger erst ausgelöst wird, wenn K0 mindestens 5% über D0 ist. Somit werden die ganzen "flachen Signale", wo eben der Stoch K kaum merkbar den Stoch D im 0 bar schneidet, eliminiert. Beispiel: Sagen wir Stochastik DO ist bei 30, 5% wären nach Adam Riese 1,5. Jetzt schneidet der Stoch K im O bar den Stoch D, aber ist nur bei 31 - somit wird das "signal= buy" usw. nicht ausgelöst, erst wenn der Stoch K einen Wert von mindestens 31,5 annimmt beim ersten Tick nach dem Schnittpunkt, wird "signal=buy" usw. ausgelöst Ganz grob einmal - versteht das der Rechner so? |
|
|||
Ich denke schon. Wenn der Prozentatz auf der aktuellen Kerze angewendet werden soll, dann muss die Indikatorabfrage aber auch tickweise passieren, denn während des Kerzenaufbaus kann es ja passieren, dass es zwar eine Kreuzung gab, die noch nicht zum Signal führte, aber evtl. später dann per Erreichung des Prozentsatzes doch ein Signal gibt.
traderdoc
__________________
Ich erfülle Euch gern Eure EA-, Indikator- und Script-Programmierungswünsche auf Honorarbasis. |
|
|||
Da triffst du haargenau den nächsten Schritt, der in meinem Hinterkopf schlummert - der Zeitfaktor beim Crossing in der aktuellen Kerze ist genauso wichtig
Das ideale Crossing ist nämlich, dass der K0 sofort bei "crossing-tick" mit diesen 5% crosst, und nicht erst nach dem crossen zwar über dem D0 ist aber erst nach zwei Minuten den Schwellenwert "DO plus 5% "erreicht und den Trigger dann auslöst - da ist die Dynamik weg. Da müsste ich den Rechner anweisen, nur dann das % crossing als Trigger zu nehmen, wenn der Schwellenwert SOFORT bei "crossing-tick" erreicht wird, und sonst nie... Ich vermute aber, dass ich wo einstellen kann, ob der EA Signale bei jedem Tick nimmt, oder ob er die Signale immer nur bei Beginn einer neuen Kerze kontrolliert |
|
|||
"Ich vermute aber, dass ich wo einstellen kann, ob der EA Signale bei jedem Tick nimmt, oder ob er die Signale immer nur bei Beginn einer neuen Kerze kontrolliert."
Na ja, das hängt davon ab, wie Du es programmierst. Entweder direkt in OnTick() schreiben bzw. per Sprung in eine andere Funktion oder über: if (OldCandle != iTime(..., 1)) { //Indikatorabfrage OldCandle = iTime(..., 1); } traderdoc
__________________
Ich erfülle Euch gern Eure EA-, Indikator- und Script-Programmierungswünsche auf Honorarbasis. |
Lesezeichen |
Themen-Optionen | Thema durchsuchen |
Ansicht | |
|
|