Diese Strategie nutzt den Distance Close Bars (DCB) Indikator, um den Preistrend und den schnellen RSI Indikator als Filter zu bestimmen, implementiert einen Trailing Stop Loss für den Trend nach dem Handel.
Berechnen Sie lastg und lastr, die den letzten grünen und letzten roten Schlusspunkt darstellen.
Berechnet dist als Differenz zwischen lastg und lastr.
Berechnen Sie die Adist als 30-Perioden-SMA von dist.
Erzeugen Sie ein Handelssignal, wenn die Dist mehr als das 2-fache der Adist beträgt.
Verwenden Sie den schnellen RSI-Indikator, um das Signal zu filtern, um einen falschen Ausbruch zu vermeiden.
Eintritt der Handel zu einem festen Anteil am Eigenkapital, wenn das Signal keine Position aufweist.
Martingale nach dem Verlust.
Schließung einer Position, wenn ein Stop-Loss oder ein Take-Profit ausgelöst wird.
Der DCB-Indikator erfasst effektiv mittelfristige und langfristige Trends.
Der schnelle RSI-Filter vermeidet Verluste durch falsche Ausbrüche.
Ein Trailing-Stop verringert die Gewinne und kontrolliert die Risiken.
Martingale erhöht die Position nach Verlust für einen höheren Gewinn.
Vernünftige Parameter-Einstellungen eignen sich für verschiedene Marktumgebungen.
DCB kann falsche Signale erzeugen, braucht andere Filter.
Martingale kann Verluste vergrößern, erfordert ein strenges Risikomanagement.
Eine unsachgemäße Einstellung des Stop-Loss kann zu einem übermäßigen Verlust führen.
Die Positionsgröße sollte begrenzt sein, um eine übermäßige Hebelwirkung zu vermeiden.
Falsche Vertragseinstellungen können zu großen Verlusten auf dem Extremmarkt führen.
Optimieren Sie die DCB-Parameter für die beste Kombination.
Versuchen Sie andere Indikatoren, um den schnellen RSI-Filter zu ersetzen.
Optimieren Sie den Stop-Loss und nehmen Sie Profit für eine höhere Gewinnrate.
Optimieren Sie die Martingale-Parameter, um das Risiko zu reduzieren.
Test auf verschiedenen Produkten für eine optimale Vermögensallokation.
Verwenden Sie maschinelles Lernen, um Parameter dynamisch zu optimieren.
Dies ist eine allgemeine ausgereifte Trendfolgestrategie. DCB bestimmt die Trendrichtung und filtert schnelle RSI-Signale, um falsche Einträge zu vermeiden. Stop-Loss und Take-Profit kontrollieren effektiv Einzelhandelsverluste. Aber es gibt immer noch Risiken, Parameter müssen weiter optimiert werden, um das Risiko zu reduzieren und die Stabilität zu verbessern. Die Logik ist klar und leicht zu verstehen, geeignet für mittelfristige Trendhändler.
/*backtest start: 2023-11-07 00:00:00 end: 2023-11-14 00:00:00 period: 3m basePeriod: 1m exchanges: [{"eid":"Futures_Binance","currency":"BTC_USDT"}] */ //Noro //2018 //@version=2 strategy(title = "Noro's Distance Strategy v1.0", shorttitle = "Distance str 1.0", overlay = true, default_qty_type = strategy.percent_of_equity, default_qty_value = 100, pyramiding = 10) //Settings needlong = input(true, defval = true, title = "Long") needshort = input(true, defval = true, title = "Short") usemar = input(true, defval = true, title = "Use Martingale") capital = input(100, defval = 100, minval = 1, maxval = 10000, title = "Capital, %") usersi = input(true, defval = true, title = "Use RSI-Filter") periodrsi = input(7, defval = 7, minval = 2, maxval = 50, title = "RSI Period") limitrsi = input(30, defval = 30, minval = 1, maxval = 50, title = "RSI Limit") fromyear = input(2018, defval = 2018, minval = 1900, maxval = 2100, title = "From Year") toyear = input(2100, defval = 2100, minval = 1900, maxval = 2100, title = "To Year") frommonth = input(01, defval = 01, minval = 01, maxval = 12, title = "From Month") tomonth = input(12, defval = 12, minval = 01, maxval = 12, title = "To Month") fromday = input(01, defval = 01, minval = 01, maxval = 31, title = "From day") today = input(31, defval = 31, minval = 01, maxval = 31, title = "To day") //Fast RSI fastup = rma(max(change(close), 0), periodrsi) fastdown = rma(-min(change(close), 0), periodrsi) fastrsi = fastdown == 0 ? 100 : fastup == 0 ? 0 : 100 - (100 / (1 + fastup / fastdown)) //Distance bar = close > open ? 1 : close < open ? -1 : 0 lastg = bar == 1 ? close : lastg[1] lastr = bar == -1 ? close : lastr[1] dist = lastg - lastr adist = sma(dist, 30) plot(lastg, linewidth = 3, color = lime) plot(lastr, linewidth = 3, color = red) up = bar == -1 and dist > adist * 2 dn = bar == 1 and dist > adist * 2 //RSI Filter rsidn = fastrsi < limitrsi or usersi == false rsiup = fastrsi > 100 - limitrsi or usersi == false //Signals up1 = up and rsidn dn1 = dn and rsiup exit = ((strategy.position_size > 0 and close > open) or (strategy.position_size < 0 and close < open)) //Arrows plotarrow(up1 ? 1 : na, colorup = blue, colordown = blue) plotarrow(dn1 ? -1 : na, colorup = blue, colordown = blue) //Trading profit = exit ? ((strategy.position_size > 0 and close > strategy.position_avg_price) or (strategy.position_size < 0 and close < strategy.position_avg_price)) ? 1 : -1 : profit[1] mult = usemar ? exit ? profit == -1 ? mult[1] * 2 : 1 : mult[1] : 1 lot = strategy.position_size == 0 ? strategy.equity / close * capital / 100 * mult : lot[1] signalup = up1 if signalup if strategy.position_size < 0 strategy.close_all() strategy.entry("long", strategy.long, needlong == false ? 0 : lot, when=(time > timestamp(fromyear, frommonth, fromday, 00, 00) and time < timestamp(toyear, tomonth, today, 23, 59))) signaldn = dn1 if signaldn if strategy.position_size > 0 strategy.close_all() strategy.entry("Short", strategy.short, needshort == false ? 0 : lot, when=(time > timestamp(fromyear, frommonth, fromday, 00, 00) and time < timestamp(toyear, tomonth, today, 23, 59))) if time > timestamp(toyear, tomonth, today, 23, 59) or exit strategy.close_all()