Erster Versuch
Forums › ProRealTime Deutsch forum › ProOrder Support › Erster Versuch
- This topic has 9 replies, 2 voices, and was last updated 7 years ago by Despair.
-
-
08/05/2017 at 3:29 PM #42507
Hallo zusammen, bin ganz ganz neu hier und mache gerade die ersten Gehversuche mit einem ganz einfachen System. Aber es will einfach kein Backtest funktionieren, woran kann es liegen?
Das System: DAX, monthly. Wenn open um 250-500 Pkt kleiner als open des Vormonats, dann Long-Positioneröffnen. TP 250, SL 300, max. 30 Tage stehenlassen.
// DAX – IG Market
// Time Frame = 1 Month// general parameters
defparam cumulateorders = false
once positionSize = 1// conditions to enter long
if open < (open[-1] – 250) and open > (open[-1] – 500) then
buy positionSize contract at market
endifif longonmarket then
set stop ploss 300
set target pprofit 250
endif08/06/2017 at 4:44 PM #42546Hallo Teddy,
Wenn du das Open des vorherigen Monats haben willst ist es open[1] (keine -1). Open ohne Klammern gibt dir das Open des Monats der gerade um ist, da PRT deinen Code immer nur am Ende jeder Kerze durchgeht. Ich weiss nicht, ob du das berücksichtigt hast.
Hier dein berichtigter Code.
12345678910111213141516// DAX – IG Market// Time Frame = 1 Month// general parametersdefparam cumulateorders = falseonce positionSize = 1// conditions to enter longif open <= (open[1] – 250) and open >= (open[1] – 500) thenbuy positionSize contract at marketendifif longonmarket thenset stop ploss 300set target pprofit 250endifDa der Code wie gesagt immer am Ende jeder Kerze ausgewertet wird, hast du natürlich eine saftige Verzögerung in deinem Programm.
Bsp.: Ende diesen Monats (August) guckt das Program, ob der Dax am 1.8. 250-500 Pkte. niedriger war als am 1.7.. Wenn das der Fall war, dann gehst du long. Ich glaube, das hattest du dir anders vorgestellt.
08/07/2017 at 6:28 AM #4262208/07/2017 at 7:41 AM #42628So, nun habe ich auf Stundenbasis umgestellt, um 1 h nach Eröffnung des 1.Tages eines Monats einen Trade starten zu können. Im Backtest rührt sich dennoch nichts. Irgendwas scheint noch nicht zu stimmen?
// DAX – IG Market
// Time Frame = 1 h// general parameters
defparam cumulateorders = false
once positionSize = 1// conditions to enter long
if day = 1 and Hour = 1 and open <= (DOpen(30) – 250) and open >= (DOpen(30) – 500) then
buy positionSize contract at market
endifif longonmarket then
set stop ploss 300
set target pprofit 250
endifif day = 28 or 29 or 30 and longonmarket then
sell positionSize contract at market
endif08/07/2017 at 9:51 AM #42637Wann genau willst du das dein Program eine Position eröffnet. Du vergleichst jetzt den Kurz vom Abend (21:00) des letzten des Monats mit dem Kurs um 1:00 (nachts) am 1. des Monats. Fällt der 1. auf ein Wochenende geht’s in die Hose. Mit solchen Zeitangaben muss du immer ganz genau gucken, dass die auch dann ausgeführt werden, wenn du das willst.
Oft hilft es den Inhalt der Variablen mit “graph” ausgeben zu lassen, damit man sehen kann, was genau passiert.
08/07/2017 at 9:52 AM #4263808/07/2017 at 10:09 AM #42639Am Wochenende soll natürlich nicht versucht werden, einen Trade einzugehen 🙂
Eine Position long soll morgens (am besten gegen 09:00 h) am 1.Handelstag eines Monats eröffnet werden, wenn der Kurs am 1.Handelstag des Vormonats zur gleichen Zeit 250-500 Pkt höher war. Man muß sich ganz genau bzw. interpretationsfrei ausdrücken, dass habe ich jetzt auch schon bemerkt. Der Code ist nicht wohlwollend bzw. kann den Willen des Autors nicht umsetzen wenn es nicht zu 100 % stimmt …
08/07/2017 at 11:05 AM #42660Das ist richtig, du musst immer alle Eventualitäten berücksichtigen. Was ist, wenn der 1. ein Son- oder Feiertag ist? Hat die Umstellung von Sommer- zu Winterzeit hier Einfluß? Beim Programmieren ist es eher so, das was schiefgehen kann, tut es auch früher oder später. 🙂
08/07/2017 at 12:06 PM #42665Im Programmierhandbuch von ProOrder ist “Day” definiert mit: Gibt den Tag des aktuellen Balkens an.” Es wird leider nicht unterschieden zwischen Handelstag und Kalendertag, beides muss ja nicht identisch sein. Es stellt sich mir also die Frage, wie man den 1.Handelstag exakt anspricht, ohne Handelstag und Kalendertag zu verwechseln, sodaß eine fehlerfreie Ausführung sichergestellt ist. Despair weiß wie?
08/07/2017 at 12:34 PM #42667Es gibt leider keine PRT Variable die angibt, ob der heutige Tag ein Handelstag ist, oder nicht. Du musst das selber programmieren. currentdayoftheweek gibt dir den aktuellen Wochentag. Also muß dein Program gucken, ob der 1. ein Sontag oder Samstag ist.Wenn ja dann warte bis Montag. Dann musst du gucken, wie die Situation vor einem Monat war. So etwas fehlerfrei zu programmieren ist etwas lästig, mit 7 Tagen in einer Woche und Monaten die mal 30 und mal 31 Tage lang sind…
Aber nicht verzweifeln, es ist machbar. 🙂
-
AuthorPosts