Klappt das so?
Hi, mir geht es um die erste Zeile. Der EA (noch lange nicht fertig;D) soll später mal die Eröffnung des Dax traden.
if(TimeCurrent()>=StrToTime("9:00") && TimeCurrent()<StrToTime("10:00") && iHigh(NULL,60,1) < Bid) { LongSignal = true; } else LongSignal = false; Ist die Uhrzeitabfrage so richtig implementiert oder fehlt noch was? |
Das ist korrekt!
Sofern iHigh(NULL,60,1) < Bid true ist, liegt aber dann in der Stunde zwischen 09:00 und 10:00 evtl. permanent ein LongSignal an. Nicht dass das dann zu mehreren Öffnungen von Orders führt. traderdoc |
Ja, da hab ich grad dran gearbeitet, sieht jetzt so aus:
int OnInit() { //--- PeriodenStartZeit = Time[0]; Tag = TimeDay(); TradeOK = true; NeuerTag = false; //--- return(INIT_SUCCEEDED); } void OnTick() { //Überprüfen ob neuer Periodenbeginn vorliegt if(PeriodenStartZeit != Time[0]) { NeuePeriodeBegonnen = true; PeriodenStartZeit = Time[0]; } else NeuePeriodeBegonnen = false; //Überprüfen ob neuer Tag vorliegt if (Tag != TimeDay()) { NeuerTag = true; Tag = TimeDay(); } //Nur 1 Trade pro Tag if (LongOrder >= 1 || ShortOrder >= 1 && TradeOK == true) { TradeOK = false; } if (TradeOK == false && NeuerTag == true) { TradeOK = true; } //Handelssignale ermitteln if(NeuePeriodeBegonnen == true) //In einer "if" Klause müssen 2 gleichzeichen gesetzt werden um eine Abfrage zu starten { //Buy Signal if(TradeOK == true && TimeCurrent()>=StrToTime("9:00") && TimeCurrent()<StrToTime("10:00") && iHigh(NULL,60,1) < Bid) { LongSignal = true; } else LongSignal = false; } Auch OK?? |
Das geht bedeutend kürzer, jedoch bereits mit der OrderSend()-Funktion ausgestattet:
Code:
bool Trade; |
Ist "!Trade" das gleiche wie "Trade = false" ?
|
Ja, das kann man damit abkürzen:
!Trade entspricht false Trade entspricht true traderdoc |
Ok, dank dir. Werde mich mal weiter durcharbeiten..
|
Bekomme jetzt den Fehler "TimeDay - wrong parameters count". Ne Idee, was da nicht stimmt?
|
Da haben wir was vergessen. Überall wo TimeDay() steht,
muss stehen: TimeDay(TimeCurrent()); traderdoc |
Ok, aber ändert sich TimeDay dann nicht sekündlich?
Ich hab das ganze gestern noch mit DayOfWeek() probiert und es hat funktioniert. Sollte ich es trotzdem noch abändern? |
Das Ergebnis TimeDay(TimeCurrent()) wird sich nur ändern, wenn tatsächlich eine neuer Tag angebrochen ist. Die Werte von Tag liegen zwischen 1 und 31.
Bei DayOfWeek() liegen sie zwischen 0 und 6, je nach Wochentag. traderdoc |
Alles klar, habs noch geändert und läuft. Im Moment mit TP 10 und SL 5, ab durchbruch der Eröffnungsrange. Mit Profitfaktor 2.8 von Ende 2015 bis Anfang 2017. Bei dem Test liefen aber Sell Positionen. Mit Buy Positionen wird der Gewinn natürlich nochmal schöner, aber das Diagramm geht mitte 2016 auch mal ordentlich nach unten.. Hoffe, dass ich den Test noch mit älteren Daten zum Laufen bekomme, hat bisher nicht geklappt..
Nächste Challenge wird der Trailingstop :D |
Hey, habe den Trailingstop jetzt zum Laufen gebracht.
Bekomme keine Fehler, aber diese Warnungen: return value of "OrderModify" should be checked Was bedeutet das? Außerdem steht im Journal hin und wieder der Fehler "OrderModify error 130". Ich benutze im OrderModify legiglich den Stoploss über den programmierten Trailingstop. An der Stelle für den Takeprofit habe ich lediglich OrderTakeProfit() hingeschrieben, was aber keine Werte enthält.. Ist das das Problem? |
bool res = OrderModify(...);
130 - Invalid StopLoss Den Fehler zu finden, ginge nur, wenn man den Code dazu sieht. traderdoc |
***Code wurde wegen versehentlichem postens entfernt ***
Hier ist der Code. Hälst du Ihn für "sicher"? Ich hab die Befürchtung, dass ich aus irgendeinem Grund, der mir nicht bewusst ist auf einmal 5000 Euro weniger aufm Konto habe.. Ich hab z.B. nirgendwo "return" stehen und weiß auch nicht genau wofür das gut ist.. Und evtl. gibts da noch weitere Kleinigkeiten, die ich vergessen habe? |
Der Fehler 130 ist jetzt weg. Evtl lags am Broker? Bei XM zeigte er mir noch den Fehler an, jetzt bei FXPro nicht mehr..
Kann ich die Zeile sonst so lassen, wenns keine Fehler mehr gibt? Also ich meine speziell den Teil wo der TakeProfit reingehört, weil der ja nicht zugewiesen ist im Code, weil ich ja nur mit dem Trailingstop in dem Stoploss Teil arbeite.. res = OrderModify(OrderTicket(),OrderOpenPrice(),Bid-TrailingStopAbstand,OrderTakeProfit(),0,Blue); Wäre super, wenn du nochmal grob über den Code guckst, und mir bezüglich möglicher fehlender Grundeinstellungen, bzw. Codes die wichtig für einen reibungslosen Ablauf sind, nochmal einen Hinweis gibst. Durch deinen Code von Seite eins bin ich leider noch nicht komplett durchgestiegen und um alles noch so umzuschreiben, reicht mein Wissenstand noch nicht aus. Hab mir halt das rausgezogen, womit ich was anfangen kann und nicht noch nen Monat Informationen für einholen müsste.. Hoffe das ist OK.. Bin dir aber schon jetzt sehr dankbar und happy, dass ich jetzt den EA soweit habe.. Die Performance ist sicherlich auch nicht die schlechteste, zumindest bin ich ganz zufrieden, was der Strategietester so auswirft.. |
Das OrderTakeProfit () kann da so drin bleiben. Wenn man keinen TakeProfit gesetzt hat, dann könnte da auch eine stehen.
Ansonsten ist es am Besten, wenn Du den EA in allen Variablensituationen testest und den Verlauf mit dem programmierten Handelssytem abgleichst. Gibt es Differenzen, dann muss der Code nachbearbeitet werden, gibt es keine, dann ist die Umsetzung in Code optimal gelungen. traderdoc |
Habe noch eine variable Lotanpassung einprogrammiert. Bei der 0 am Ende bin ich mir nicht sicher. Hab den Code ausm Internet. Vorher stand da ne 2. Dann wurden die Lots aber mit Nachkommastelle ausgegeben und so kamen dann beim Dax keine Orders zustande. Jetzt passt vom Ablauf alles. Die Begrenzung bei 100 Lots, weil das die Maximale Lotgröße vom Broker ist.. Stimmt das alles so? Es soll z.B. nur 1% vom Kapital riskiert werden, wenn der Stoploss angelaufen wird..
//TradeLots berechnen double TradeLots=NormalizeDouble(( AccountFreeMargin()*RiskinPercent/100/ErsterStopLoss),0); if(TradeLots >100) { TradeLots=100; } Achso und noch ne Frage zu der Lotgröße. Habe mal ein Video von Birger Schäfermeier gesehen, wo er den Dax Future tradet. Als der Kurs das Kursziel erreicht hat, dauerte es noch fast ne halbe Minute, bis alle Kontrakte verkauft waren, weil er so eine große Kontraktgröße hatte und der Markt nicht so Volatil war.. Kann das bei 100 Lots im Dax CFD während der Eröffnung auch passieren oder sind das noch "kleine Fische", wo sofort ein Gegenpart gefunden wird? |
Alle Zeitangaben in WEZ +2. Es ist jetzt 14:45 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