system mit mit KO Derivaten nachbilden
Forums › ProRealTime Deutsch forum › ProOrder Support › system mit mit KO Derivaten nachbilden
- This topic has 3 replies, 2 voices, and was last updated 6 days ago by
Iván.
-
-
08/22/2025 at 9:15 AM #249971
Hallo,
ich handle die Systeme die ich in Prorelatime gebacktestet habe nun mit Ko Zertifikaten nach… Knockout Zertifikate.
Jetz habe ich das Problem, dass ich ja im Code genau das nicht reinschreiben kann, denn ich kann ja nur schreiben 1 contrakt at Marktet oder die Anzahl berechnen lassen.
Wenn mein Stopp Loss nun das tiefste LOW der letzten 200 Kerzen ist, dann würde ja bei einem Trade mit einem Knockout produkt genau da die Konckout-Schwelle liegen. So wie der Trade beendet wird, verfällt das Zertifikat wertlos. Der Trade endet mit dem Totalverlust, der investierten Summe.
Kann ich das im Code irgendwie nachbilden, dass im Backtest der Abstand zwischen Tradeprice und Stop Loss 500 € oder $ sind??
Im Code selbst ist das kein Problem jedoch wenn ich das System im DAX Perf Index laufen lasse, würde wegen dem hohen Punktwert kein Trade eröffnet werden??
Kann man das irgentwie im Code umrechnen, oder anders schreiben so dass das Ergebnis dem nachgehandelten signalen entspricht.
Im Bild ist ein Trade im DAX Perf Index zu sehen, der wenn ich ein Contrakt at Market gekauft habe, mit 110 € im Gewinn gewesen wäre.
Wenn man sich nun aber unterstellt, dass der Abstand von Tradeprice bis zum Stop Loss (hier die Orangene Linie unten, im code ls= lowest[200](low) ), 500 € gewesen wären, dann müsste der Gewinn im Trade wesentlich kleiner sein.
Wie schon geschrieben, der hohe Punktwert lässt aber einen Trade mit nur 500 e Risiko nicht zu.
Geht das zu codieren, das ich im Ergebnis sehen kann, was die Strategie gebracht hätte wenn ich je Trade im Dax Indes 500 ,€ riskiert hätte.
Vielen Dank
08/25/2025 at 10:42 AM #250038Entschuldigung. Ich glaube, das haben wir bereits in einem früheren Beitrag besprochen: https://www.prorealcode.com/topic/backtest-mit-anderem-moneymanagement/
Wie ich dir damals schon gesagt habe, lässt sich diese Strategie im Backtester von ProRealTime nicht simulieren.
Was du stattdessen tun kannst, ist, das Trading mit Knock-Out-Zertifikaten zu simulieren, basierend auf dem folgenden Code.
Dieser aktualisiert das Eigenkapital in Echtzeit (Mark-to-Market) bei jeder Kerze: Solange die Position offen ist, wird der Floating-PnL zum Eigenkapital addiert. Wenn die KO-Schwelle (das Tief der letzten N Kerzen) erreicht wird, wird der Verlust genau auf das eingesetzte Kapital festgesetzt.Das Beispiel ist nur für Long-Positionen programmiert, aber du kannst es erweitern oder die Ein-/Ausstiegsbedingungen und Parameter nach Bedarf anpassen.
12345678910111213141516171819202122232425262728293031323334353637383940414243444546474849505152535455565758596061626364656667686970717273747576777879808182838485868788899091929394959697// =====================================================// KO Simulator (Long Only) - Live Equity (mark-to-market)// - Risks 'capitalRisk' per trade with a fixed KO barrier// - KO triggers when low <= stopPx (LOWEST[lookback](low) at entry)// - Live equity updates on every bar (unrealized PnL while in trade)// =====================================================// ---------- Parameters ----------capitalRisk = 500 // € risked per trade (KO => total loss of this amount)lookback = 200 // window to compute KO barrier (lowest low)slippagePts = 0 // slippage in underlying points (optional)maPeriod = 50 // example entry logic: close crosses over SMA(maPeriod)startEquity = 10000 // starting simulated equity// ---------- Long-only signal (replace with your own) ----------ma = Average[maPeriod](close)goLong = close CROSSES OVER ma // entryexitLong = close CROSSES UNDER ma // exit if no KO// ---------- Simulation state ----------ONCE inTrade = 0ONCE entryPx = 0.0ONCE stopPx = 0.0 // fixed KO barrier set at entryONCE qtyKO = 0.0 // fractional "equivalent size" vs underlyingONCE equityReal = startEquity // realized equity (updated only on trade close)ONCE equityLive = startEquity // live equity (mark-to-market each bar)// ---------- KO barrier (fixed at entry) ----------barrierLong = LOWEST[lookback](low)// ---------- Entry (long only) ----------IF inTrade = 0 THENIF goLong THENentryPx = closestopPx = barrierLongdistance = entryPx - stopPxIF distance > 0 THEN// Ensure KO hit => loss ≈ capitalRisk:// distance * qtyKO * (POINTVALUE/POINTSIZE) ≈ capitalRiskqtyKO = capitalRisk / (distance * (POINTVALUE / POINTSIZE))inTrade = 1DRAWARROWUP(barindex, equityReal) COLOURED("green")ENDIFENDIFENDIF// ---------- In-trade management (mark-to-market) ----------IF inTrade = 1 THEN// 1) Check KO first (intra-bar barrier touch)hitKO = 0IF low <= stopPx THENhitKO = 1exitPx = stopPx - slippagePts * POINTSIZEENDIF// 2) If no KO, check discretionary exitIF hitKO = 0 AND exitLong THENexitPx = closeENDIF// 3) Compute live equity (mark-to-market) BEFORE committing a close:// - If KO happens on this bar, equityLive must jump to equityReal - capitalRisk.// - Else, while trade is open, equityLive = equityReal + floatingPnL.IF hitKO = 1 THEN// KO: realized loss equals exactly capitalRiskequityLive = equityReal - capitalRiskELSE// No KO yet: mark-to-market with current closefloatingPnL = (close - entryPx) * qtyKO * (POINTVALUE / POINTSIZE)equityLive = equityReal + floatingPnLENDIF// 4) Execute exit if KO or signal exit, updating realized equity and resetting stateIF hitKO = 1 OR exitLong THENIF hitKO = 1 THENpnl = -capitalRiskDRAWARROWDOWN(barindex, equityLive) COLOURED("red")ELSEpnl = (exitPx - entryPx) * qtyKO * (POINTVALUE / POINTSIZE)DRAWARROWDOWN(barindex, equityLive) COLOURED("blue")ENDIFequityReal = equityReal + pnlequityLive = equityReal// Reset stateinTrade = 0qtyKO = 0.0ENDIFELSE// Not in trade: live equity equals realized equityequityLive = equityRealENDIF// ---------- Output ----------RETURN equityLive AS "KO_Equity_Live"1 user thanked author for this post.
08/25/2025 at 6:24 PM #250053WOw es kann sein, das ich das vergessen habe, Sorry
Vielen Dank für den Code.
Ich bin leider nicht so gut und kann kaum verstehen, was da im Code steht.
Bei mir werden in Zeile 42 und 45 Fehler angezeigt??
Verstehe ich das richtig, das das Einstiegssignal, die Kreuzung des average 50 ist?
Danke Ihnen
08/26/2025 at 6:22 AM #250061 -
AuthorPosts
Find exclusive trading pro-tools on