Abfrage der Werte der letzten Kerze bei neuer Kerze
Liste der Anhänge anzeigen (Anzahl: 1)
Hallo liebe User,
habe folgendes Problem, das mir beim Backtest im MT4 nach einer neuen Kerze die Werte der letzten Kerze nicht zurückgegeben werden. weder mit High[1] noch mit iHigh() hier mein Code Code:
void OnTick(){ isNewBar Funktion Methode 1: Code:
bool isNewBar(){ Funktion isNewBar Methode 2: Code:
bool IsNewBar() Ich bekomme immer die Werte der vorletzten Kerze! bei i = 2 bei i = 1 und bei i=0 Diesen kommischen Fehler bekomme ich beim Tester. Funktion TrailingStopp: Code:
//+------------------------------------------------------------------+ Ich hab diesen zusätztlichen Unsinn: "if (High[i]<sellSLPrice) sellSLPrice=High[i];" mal testweise in die Funktion zusätzlich eingesetzt. Da nicht die Werte der letzten Kerze zurückgegeben werden, entstehen unnötige Fehltrades, wenn die letzte Kerze höher, bzw. tiefer als die vorletzte Kerze war. Siehe Nr. 1 und 2 auf angehängter Grafik "NewBar". Für Infos wäre ich dankbar. Gruß Günter |
Abfrage bei jedem Tick: funktioniert
Noch zur Info,
mache ich die Stoppabfrage bei jedem Tick und nicht nur, wenn eine neue Kerze anfägt, dann funktioniert es interssanter weise richtig. Dies wäre aber blod, da man dann in besonderen Situationen den Stopp nicht selber eventuell manuell weiter wegzogenen werden kann, ohne bei dem nächsten Tick wieder angepasst zu werden. Gruß Günter |
Mein Standardcode dazu wäre:
Code:
if (OldTime != Time[0]) { traderdoc |
Dank für die Info,
hab es auch gleich ausprobiert, aber genau das gleiche Problem mit dem Strategietester. Ist halt Schade, da der Backtest dadurch nicht mehr so ganz stimmt. Hab es auch auf dem Live-Konto im 1-min-Chart getestet. Da existiert das Problem nicht. Trozdem danke. Gruß Günter |
Liste der Anhänge anzeigen (Anzahl: 1)
Das funktioniert wirklich immer.
traderdoc |
Hallo Traderdok, hab's so eingebunden und funktioniert auch nicht korrekt. Der Fehler tritt nur im Backtest auf.
Code:
void OnTick(){ Code:
Bei jedem Tick: Prüfung ob neue Kerze => Wenn nein, nichts Neue Kerze => Trade wird eröffnet, => Inital-SL u. TP werden gesetzt, => SL wird falsch gesetzt, falls die letzte Kerze die höchste oder tiefste Kerze war, da die Berechnung des Stopps im Backtest anscheinend immer ab der vorletzten Kerze beginnt. Der Shitfwert wird eigentlich von der Variable "i" aus der Funktion myCandleStop bestimmt. Gruß Günter |
Noch was, man kann zwar beim Backtest die Funktion myCandleTrail bei jedem Tick aufrufen, weil dann funktioniert die Stoppstetzung korrekt, aber dann dauert ein Backtest auch entsprechend länger.
Gruß Günter |
Keine Ahnung, was in Deinem Code nicht stimmt, aber das von mir angehängte Bild resultierte aus dem Backtest mit der Abfrage über
High[1] und Low[1] gemäß meines Codeschnipsels. Und am Bild und den Kommentarzeilen des Terminals sind die korrekten Werte dafür ablesbar. traderdoc |
Hallo Traderdoc,
es funktioneren alle 3 Möglichkeiten(Funktionen isNewBar) nun. Der Fehler lag an der Variablenzuweisung. Code:
string myCandleTrail(double buySLPrice,double sellSLPrice){ Trotzdem vielen Dank für deine Mühe. Gruß Günter |
Alle Zeitangaben in WEZ +1. Es ist jetzt 15:58 Uhr. |
Powered by vBulletin® Version 3.8.5 (Deutsch)
Copyright ©2000 - 2024, Jelsoft Enterprises Ltd.
SEO by vBSEO 3.6.1
Powered by vBCMS® 2.7.0 ©2002 - 2024 vbdesigns.de
Copyright ©2009 - 2023 by Expert-Advisor.com - Das Metatrader Forum