Hallo, ich habe auf der Seite von WH Selfinvest eine scheinbar profitable Strategie gesehen, die ich gerne in ProOrder selber nachbauen würde:
https://www.whselfinvest.de/de/trading_strategien_35_EUR_USD_07h30.php
Im grunde ist die Strategie Recht simpel und für jemanden wie mich (ohne Programmierkenntnisse) grad noch umsetzbar. Was mir allerdings fehlt, ist das nur Maximal 1 Trade zwischen 7:30 und 12:00 Uhr eingegangen werden soll und das beim ersten aufkommenden Signal in diesem Zeitraum. Alle weiteren aufkommenden Signale in diesem Zeitraum sollen ignoriert werden. Der Trade wird auch spätestens 12:00 Uhr geschlossen.
Kann mir da jemand helfen?
Vielen Dank im Vorraus
Nun, ich bin in der Übersetzung mit der Strategiebeschreibung verloren. Könnten Sie bitte den Link (oder die Beschreibung vielleicht) der Strategie auf Englisch finden und posten? Danke vielmals!
beebParticipant
Average
Hallo du vergibst einfach eine variable dafür.
Du lässt “onetrade” immer um 6 Uhr auf den Wert 0 setzten und wenn eine Position ausgeführt wir lässt du sie auf 1 setzen dann dürfte er keine Postion mehr eingehen wenn “onetrade” nicht auf 0 steht.
So würde ich das Programmieren :
If OpenTime = 060000 then
onetrade = 0
ENDIF
c1 = ....Die bedingungen
IF c1 AND (onetrade = 0) THEN
BUY 1 CONTRACT AT MARKET
onetrade = 1
ENDIF
Bitte vorher Testen.
Gruß Benny
Hi beeb & Nicolas,
danke für euer Feedback. @beeb, ich habe deinen Codeschnipsel fast erfolgreich integrieren können und es handelt “fast” überall nur einmal von 7:30 bis 12:00 Uhr. Ich weiß noch nicht woran es genau liegt. Vielleicht weil ich deinen Code etwas rudimentär eingebaut habe. Beim Stop habe ich doch noch meine Probleme und wollte ihn improvisatorisch durch einen 48 Donchain stop am Lowe oder upper Band festsetzen. Aber da dieser bei IG in der Simplen befehlsmaske nicht anwählbar ist bin ich mir auch mit der Umsetzung des stops im Unklaren. Daher konnte ich den Backtest noch nicht exakt nach strategie testen.
@Nicolas i try to explane this Strategie in a few words:
Timeframe: 30Min (Trade max. one (the first) signal per Day)
Buy or Sell: Just at the first signal between 7:30 and 12:00 oclock.
Long Parameters: MACD > Signal, DMI Upper Band > DMI Lower Band, Supertrend < Close
Short Parameters: MACD < Signal, DMI Upper Band < DMI Lower Band, Supertrend > Close
Take Profit: 12 pips
Stop Loss (Long/Short: The lowest low or Highest high between the last 48 Candles. The 12:00 Timecap closes the Trade
(I try to use the Donchain Lower and Upper band (48) but there is noch chance to use it in the simple programming mask (pro Realtime IG Markets) so i dont know what to do at this point.
Hier ist mal der code. Bitte nicht wundern, ich hab nicht so die Programmier-kenntnisse:
// Festlegen der Code-Parameter
DEFPARAM CumulateOrders = False // Kumulieren von Positionen deaktiviert
// Das Handelssystem wird um 0:00 Uhr alle pending Orders stornieren und alle Positionen schließen. Es werden vor der "FLATBEFORE"-Zeit keine neuen Orderaufträge zugelassen.
DEFPARAM FLATBEFORE = 073000
// Stornieren aller pending Orders und Schließen aller Positionen zur "FLATAFTER"-Zeit
DEFPARAM FLATAFTER = 120000
// Verhindert das Platzieren von neuen Ordern zum Markteintritt oder Vergrößern von Positionen vor einer bestimmten Uhrzeit
timeEnterBefore = time >= 073000
// Verhindert das Platzieren von neuen Ordern zum Markteintritt oder Vergrößern von Positionen nach einer bestimmten Uhrzeit
timeEnterAfter = time < 120000
// Verhindert das Trading an bestimmten Wochentagen
daysForbiddenEntry = OpenDayOfWeek = 6 OR OpenDayOfWeek = 0
If OpenTime = 073000 then
onetrade = 0
ENDIF
// Bedingungen zum Einstieg in Long-Positionen
indicator1 = SuperTrend[3,10]
c1 = (indicator1 < close)
indicator2 = MACDline[12,26,9](close)
indicator3 = ExponentialAverage[9](indicator2)
c2 = (indicator2 > indicator3)
indicator4 = DIplus[14](close)
indicator5 = DIminus[14](close)
c3 = (indicator4 > indicator5)
IF (c1 AND c2 AND c3) AND timeEnterBefore AND timeEnterAfter AND not daysForbiddenEntry THEN
BUY 1 CONTRACT AT MARKET
ENDIF
IF (c1 AND c2 AND c3) AND (onetrade = 0) THEN
BUY 1 CONTRACT AT MARKET
onetrade = 1
// Bedingungen zum Einstieg in Short-Positionen
indicator6 = SuperTrend[3,10]
c4 = (indicator6 > close)
indicator7 = DIminus[14](close)
indicator8 = DIplus[14](close)
c5 = (indicator7 > indicator8)
indicator9 = MACDline[12,26,9](close)
indicator10 = ExponentialAverage[9](indicator9)
c6 = (indicator9 < indicator10)
IF (c4 AND c5 AND c6) AND timeEnterBefore AND timeEnterAfter AND not daysForbiddenEntry THEN
SELLSHORT 1 CONTRACT AT MARKET
ENDIF
IF (c4 AND c5 AND c6) AND (onetrade = 0) THEN
SELLSHORT 1 CONTRACT AT MARKET
onetrade = 1
ENDIF
// Stops und Targets
SET STOP ???
SET TARGET pPROFIT 12
ENDIF
beebParticipant
Average
Hallo also wegen dem fast keine doppeltrades :
Ich bin mir nicht ganz im klaren warum du diese Position doppelt drin hast
IF (c1 AND c2 AND c3) AND timeEnterBefore AND timeEnterAfter AND not daysForbiddenEntry THEN
BUY 1 CONTRACT AT MARKET
ENDIF
IF (c1 AND c2 AND c3) AND (onetrade = 0) THEN
BUY 1 CONTRACT AT MARKET
onetrade = 1
Die erste Order wird nicht durch onetrade gestoppt sondern trotzdem ausgeführt, wenn mich nicht alles täuscht müsste es so heißen
IF (c1 AND c2 AND c3) AND timeEnterBefore AND timeEnterAfter AND not daysForbiddenEntry AND (onetrade = 0) THEN
BUY 1 CONTRACT AT MARKET
Onetrade = 1
ENDIF
Und die zweite Order weglassen, ausserdem fehlt da ein ENDIF.
Gruß Benny
Wegen dem stop muss ich mich nochmal reinlesen.
beebParticipant
Average
Zu deinem Stop teste bitte mal das hier (von mir ungetestet)
//long
IF (c1 AND c2 AND c3) AND timeEnterBefore AND timeEnterAfter AND not daysForbiddenEntry AND (onetrade = 0) THEN
BUY 1 CONTRACT AT MARKET
Onetrade = 1
stoplow = LOWEST[48](low)
mystop = close-stoplow
ENDIF
//für short
IF(c4 AND c5 AND c6) AND timeEnterBefore AND timeEnterAfter AND not daysForbiddenEntry AND (onetrade = 0) then
SELLSHORT 1 CONTRACT AT MARKET
onetrade = 1
stophigh = HIGHEST[48](high)
mystop = stophigh-close
ENDIF
//stops
Set stop loss mystop
beeb, danke fürs Feedback, deinem Hinweis und Code. Ich werds heut Abend mal versuchen zu ergänzen. 🙂
@Nicolas Here you can read the Strategy in English:
https://www.whselfinvest.de/en/trading_strategies_35_EUR_USD_07h30.php
Hallo zusammen,
hab alles mal eingebaut und laufen lassen. Ich meine nun läuft sie korrekt. Allerdings ist diese scheinbar doch nicht profitabel wie auf whs (auf 2 Jahren komplett absteigender Ast). 🙁
Meine überlegung an dieser Stelle ist, ob diese strategie nur mit einem zusätzlichen Money Management (stichwort Zinseszins) bezogen auf den 48 auskommt/funktioniert, da dieser ja vom Entry immer unterschiedlich weit weg ist, oder ob Sie so oder so einfach nicht funktioniert?
… oder vertue ich mich da grad mit dem Indikator DM und DMI ?
Hier der Code:
// Festlegen der Code-Parameter
DEFPARAM CumulateOrders = False // Kumulieren von Positionen deaktiviert
// Das Handelssystem wird um 0:00 Uhr alle pending Orders stornieren und alle Positionen schließen. Es werden vor der "FLATBEFORE"-Zeit keine neuen Orderaufträge zugelassen.
DEFPARAM FLATBEFORE = 073000
// Stornieren aller pending Orders und Schließen aller Positionen zur "FLATAFTER"-Zeit
DEFPARAM FLATAFTER = 120000
// Verhindert das Platzieren von neuen Ordern zum Markteintritt oder Vergrößern von Positionen vor einer bestimmten Uhrzeit
timeEnterBefore = time >= 073000
// Verhindert das Platzieren von neuen Ordern zum Markteintritt oder Vergrößern von Positionen nach einer bestimmten Uhrzeit
timeEnterAfter = time < 120000
// Verhindert das Trading an bestimmten Wochentagen
daysForbiddenEntry = OpenDayOfWeek = 6 OR OpenDayOfWeek = 0
If OpenTime = 073000 then
onetrade = 0
ENDIF
// Bedingungen zum Einstieg in Long-Positionen
indicator1 = SuperTrend[3,10]
c1 = (indicator1 < close)
indicator2 = MACDline[12,26,9](close)
indicator3 = ExponentialAverage[9](indicator2)
c2 = (indicator2 > indicator3)
indicator4 = DIplus[14](close)
indicator5 = DIminus[14](close)
c3 = (indicator4 > indicator5)
IF (c1 AND c2 AND c3) AND timeEnterBefore AND timeEnterAfter AND not daysForbiddenEntry AND (onetrade = 0) THEN
Buy 1 CONTRACT AT MARKET
Onetrade = 1
//Stop long
IF (c1 AND c2 AND c3) AND timeEnterBefore AND timeEnterAfter AND not daysForbiddenEntry AND (onetrade = 0) THEN
BUY 1 CONTRACT AT MARKET
Onetrade = 1
stoplow = LOWEST[48](low)
mystop = close-stoplow
ENDIF
ENDIF
// Bedingungen zum Einstieg in Short-Positionen
indicator6 = SuperTrend[3,10]
c4 = (indicator6 > close)
indicator7 = DIminus[14](close)
indicator8 = DIplus[14](close)
c5 = (indicator7 > indicator8)
indicator9 = MACDline[12,26,9](close)
indicator10 = ExponentialAverage[9](indicator9)
c6 = (indicator9 < indicator10)
IF (c4 AND c5 AND c6) AND timeEnterBefore AND timeEnterAfter AND not daysForbiddenEntry AND (onetrade = 0) THEN
SELLSHORT 1 CONTRACT AT MARKET
Onetrade = 1
ENDIF
//Stop short
IF(c4 AND c5 AND c6) AND timeEnterBefore AND timeEnterAfter AND not daysForbiddenEntry AND (onetrade = 0) then
SELLSHORT 1 CONTRACT AT MARKET
onetrade = 1
stophigh = HIGHEST[48](high)
mystop = stophigh-close
ENDIF
//stops
Set stop loss mystop
SET TARGET pPROFIT 12
Hab mir auch mal die Muehe gemacht die Strategie zu programmieren, aber sie ist auch fuer mich nicht profitabel. Weder mit festem Takeprofit (12 pips) noch mit trailing stop loss und das trotz des recht weitem stoploss (48-Perioden low). Ich glaub, das wird nichts…
Ich erleichtert den Code und verändert ein paar Zeilen, siehe unten.
Ich bekomme ziemlich nahe dem gleichen Ergebnis wie das ursprüngliche Ergebnis, aber auf der gleichen Zeit wie ihr Beispiel zwischen August 2010 und Januar 2013! Um die gleiche Gewinnkurve hat, wird es um die Ausbreitung zu ändern und / oder Zeitzone Ich denke, ..
// Festlegen der Code-Parameter
DEFPARAM CumulateOrders = False // Kumulieren von Positionen deaktiviert
// Das Handelssystem wird um 0:00 Uhr alle pending Orders stornieren und alle Positionen schließen. Es werden vor der "FLATBEFORE"-Zeit keine neuen Orderaufträge zugelassen.
DEFPARAM FLATBEFORE = 073000
// Stornieren aller pending Orders und Schließen aller Positionen zur "FLATAFTER"-Zeit
DEFPARAM FLATAFTER = 120000
// Verhindert das Platzieren von neuen Ordern zum Markteintritt oder Vergrößern von Positionen vor einer bestimmten Uhrzeit
timeEnterBefore = time >= 073000
// Verhindert das Platzieren von neuen Ordern zum Markteintritt oder Vergrößern von Positionen nach einer bestimmten Uhrzeit
timeEnterAfter = time < 120000
// Verhindert das Trading an bestimmten Wochentagen
daysForbiddenEntry = OpenDayOfWeek = 6 OR OpenDayOfWeek = 0
If OpenTime = 073000 then
onetrade = 0
ENDIF
//indis
indicator1 = SuperTrend[3,10]
c1 = (indicator1 < close)
indicator2 = MACDline[12,26,9](close)
indicator3 = ExponentialAverage[9](indicator2)
c2 = (indicator2 > indicator3)
indicator4 = DIplus[14](close)
indicator5 = DIminus[14](close)
c3 = (indicator4 > indicator5)
// Bedingungen zum Einstieg in Long-Positionen
IF (c1 AND c2 AND c3) AND timeEnterBefore AND timeEnterAfter AND not daysForbiddenEntry AND onetrade = 0 THEN
Buy 1 CONTRACT AT MARKET
Onetrade = 1
stoplow = LOWEST[48](low)
mystop = close-stoplow
ENDIF
// Bedingungen zum Einstieg in Short-Positionen
IF (not c1 AND not c2 AND not c3) AND timeEnterBefore AND timeEnterAfter AND not daysForbiddenEntry AND onetrade = 0 THEN
SELLSHORT 1 CONTRACT AT MARKET
Onetrade = 1
stophigh = HIGHEST[48](high)
mystop = stophigh-close
ENDIF
//stops
Set stop loss mystop
SET TARGET pPROFIT 12
Hallo, arbeite mich gerade erstmals in “Strategien”/autmatisiertes Trading ein.
Hab einige Versuche hinter mir und verstehe grundsätzlich nicht, dass ich bei meinen codes häufig entweder keinen einzigen oder nur einen einzigen Trade oder nur verlusttrades hinbekomme.
Habe mir deshalb den obigen Code, um diesen an meine Indikatoren anzupassen, bzw. meine Indikatoren einzusetzen.
Leider ohne Erfolg. Also hab ich einfach mal den Code oben, also den von Niclas (06/15/2017 at 2:49 PM) kopiert ohne etwas anzupassen und einen Dax-Backtest durchlaufen lassen. Keine Fehlermeldung, aber wieder wurde kein einziger Trade eröffnet. Habe verschieden Zeiteinheiten und lange Zeiträume ausprobiert…
Kann mir jemand sagen woran das liegen könnte?
Schöne Grüße
Micha
Habe es mal ausprobiert. Nur copy/paste von Nicolas Code und unverändert auf EURUSD mini 30min laufen lassen.
Angehängt das Resultat. Nicht berauschend, aber 1602Trades…