Hi,
ich habe folgende Idee, mir fehlt aber die Expertise wie genau es zu programmieren gilt, ... ab Punkt 3 steh ich auf dem Schlauch und hoffe ihr könnt mir helfen.
1. Warte auf ein Signal (zB: kaufen)
2. Ermittle einen vorläufigen StopLoss-Level --> Bid - (ATR*2)*_Point
3. gehe die letzten 1.000 Bars durch --> suche die Bars raus, die diesen vorläufigen StopLoss-Level kreuzen ( sprich: High>SL-Level UND Low<SL-Level )
4. Suche aus diesen selektierten Bars das LowestLow raus --> finaler StopLoss Level ist gefunden
Ich bekomme es zar hin, dass er mir die Bars raus sucht, die den vorläufigen StopLoss-Level kreuzen, aber ab diesem Punkt weiß ich nicht weiter...
Kann/Muss/Soll ich diese ermittelten Bars in einem Array sammeln und dann das LowestLow aus diesem Array raus suchen? (Falls ja einen Vorschlag wie könnte der Code lauten , Arrays sind nicht meine Stärke)
danke vorab für Vorschläge
Oha das ist verwirrend. Also ich gehe mal davon aus, dass Du ganz sicher gehen möchtest, dass Dein Stoploss groß genug ist. Der Gedanke ist an sich nicht mal schlecht, aber da sind ein paar Denkfehler drin:
Wenn Du einfach nur das ArrayMinimum von den Low Werten der letzten tausend Bars nehmen würdest, das wäre sehr willkürlich. Schau mal das Lowest Low aus tausend an und ich bezweifle, dass Du das als Regel für Deine Stoplevel nutzen willst.
Wenn wir über das Verhältnis zwischen dem aktuellen Ask/Bid Preis und dem Stoplevel als Ergebnis des ATR Werts (und vielleicht noch einem Faktor) reden, ist klar, dass der Bar noch nicht abgeschlossen ist. Bei zurückliegenden Bars stellt sich die Frage von welchem Ask/Bid Preis Du als Referenz ausgehen möchtest. Der Close wäre zum Beispiel recht willkürlich. Viellleicht der Mittelwert des jeweiligen Bars? Vielleicht...
Hast Du schon einmal einfach nur nach "ATR Stoplevel" gesucht und das umgesetzt? Dann siehst Du mal was rauskommt und das kannst Du später immer noch anpassen. Eigentlich liegt das ja auf dem Weg.
Der Artikel hier ist ziemlich gut: https://www.mql5.com/de/articles/567
Zu guter Letzt zum Rumprobieren:
//+------------------------------------------------------------------+ //| ArrayMinimum.mq5 | //| Copyright 2021, MetaQuotes Ltd. | //| https://www.mql5.com | //+------------------------------------------------------------------+ #property copyright "Copyright 2021, MetaQuotes Ltd." #property link "https://www.mql5.com" #property version "1.00" double LowArray[], HighArray[]; int MaxIndex, MinIndex, Referenzzeitraum=1000; int OnInit() { //--- ArraySetAsSeries(LowArray,true); ArraySetAsSeries(HighArray,true); //--- return(INIT_SUCCEEDED); } //+------------------------------------------------------------------+ //| Expert deinitialization function | //+------------------------------------------------------------------+ void OnDeinit(const int reason) { //--- } //+------------------------------------------------------------------+ //| Expert tick function | //+------------------------------------------------------------------+ void OnTick() { //--- CopyLow(_Symbol,_Period,0,Referenzzeitraum,LowArray); CopyHigh(_Symbol,_Period,0,Referenzzeitraum,HighArray); MaxIndex=ArrayMaximum(HighArray,0,WHOLE_ARRAY); //hier wird der Index zurückgegeben MinIndex=ArrayMinimum(LowArray,0,WHOLE_ARRAY); Comment("Maximum aus tausend: ",HighArray[MaxIndex], //hier siehst Du ja dann die Werte die "\nMinimum aus tausend: ",LowArray[MinIndex]); //durch die Indizes aus den Arrays auf- } //gerufen werden. //+------------------------------------------------------------------+
Ups da ist mir nachträglich ein Fehler aufgefallen. Der ist jetzt korregiert. Der Fehler war, dass ArrayMaximum() Dir nur die Indizes zurückgibt, darüber kannst Du Dir aber die Werte aus dem Arra holen. Gruß
- www.mql5.com
@Pennyhunter hat dir ja schonmal eine Tipp gegeben.
Mir fällt gerade ein, dass man auf eine änliche weise preislevels finden könnte. Man müsste mit einer Funktion verschiedene Preise (beispielSchrittweite: 100 Points) durchgehen und überprüfen, wie viele der letzten 1000 Kerzen das jeweilige Level gecrosst hat. Haben z.B 700 von 1000 Kerzen dieses Level gekreuzt, oder berührt, könnte man von einer harten Resi sprechen.
- Freie Handelsapplikationen
- Über 8.000 Signale zum Kopieren
- Wirtschaftsnachrichten für die Lage an den Finanzmärkte
Sie stimmen der Website-Richtlinie und den Nutzungsbedingungen zu.
Hi,
ich habe folgende Idee, mir fehlt aber die Expertise wie genau es zu programmieren gilt, ... ab Punkt 3 steh ich auf dem Schlauch und hoffe ihr könnt mir helfen.
1. Warte auf ein Signal (zB: kaufen)
2. Ermittle einen vorläufigen StopLoss-Level --> Bid - (ATR*2)*_Point
3. gehe die letzten 1.000 Bars durch --> suche die Bars raus, die diesen vorläufigen StopLoss-Level kreuzen ( sprich: High>SL-Level UND Low<SL-Level )
4. Suche aus diesen selektierten Bars das LowestLow raus --> finaler StopLoss Level ist gefunden
Ich bekomme es zar hin, dass er mir die Bars raus sucht, die den vorläufigen StopLoss-Level kreuzen, aber ab diesem Punkt weiß ich nicht weiter...
Kann/Muss/Soll ich diese ermittelten Bars in einem Array sammeln und dann das LowestLow aus diesem Array raus suchen? (Falls ja einen Vorschlag wie könnte der Code lauten , Arrays sind nicht meine Stärke)
danke vorab für Vorschläge