Dies ist eine dynamische Trailing Stop-Strategie, die auf doppelten EMA-Linien basiert. Sie verwendet 9-Tage- und 20-Tage-EMAs, um die Markttrendrichtung zu bestimmen, kombiniert mit dem RSI-Indikator, um falsche Breaks zu filtern. Sie verwendet auch den ATR-Indikator, um dynamische Stop-Loss- und Gewinnniveaus zu berechnen. Diese Strategie eignet sich für mittelfristige bis langfristige Bestände.
Die Strategie verwendet die 9-Tage-EMA als kurzfristige Linie und die 20-Tage-EMA als mittelfristige Linie, um den Preistrend zu bestimmen. Sie geht lang, wenn der Preis über die kurzfristige Linie überschreitet und der Schlusskurs höher ist als das Vortagshöhe, wobei der RSI unter 70 liegt und der Schlusskurs höher ist als der 20-Tage-EMA minus 1 ATR. Sie geht kurz, wenn der Preis unter die kurzfristige Linie überschreitet und der Schlusskurs niedriger ist als das Vortagshöhe, wobei der RSI höher als 30 und der Schlusskurs höher als der 20-Tage-EMA minus 1 ATR ist.
Der Stop-Loss wird zum Schlusskurs minus 1,5 mal ATR gesetzt. Der Take-Profit wird zum Schlusskurs plus ATR multipliziert mit einem Take-Profit-Koeffizienten gesetzt.
Insgesamt handelt es sich um eine relativ stabile mittelfristige bis langfristige Holding-Strategie. Sie verwendet doppelte EMAs, um den großen Markttrend zu bestimmen und zu vermeiden, dass sie von kurzfristigen Geräuschen beeinflusst wird. Die Hinzufügung von RSI filtert auch falsche Breaks in gewissem Maße. Darüber hinaus ermöglicht der dynamische Stop-Loss/Take-Profit-Mechanismus der Strategie, sich anhand der Marktvolatilität anzupassen. Es gibt jedoch immer noch Risiken wie Verzögerungen bei gleitenden Durchschnitten und das Potenzial für ein Stop-Loss-Durchdringen. Wir müssen die optimale Konfiguration durch Parameter-Tuning und Optimierung während der praktischen Anwendung finden.
/*backtest start: 2024-01-01 00:00:00 end: 2024-01-31 23:59:59 period: 1h basePeriod: 15m exchanges: [{"eid":"Futures_Binance","currency":"BTC_USDT"}] */ //@version=4 strategy("CJTrade", overlay=true) short = ema(close, 9) medium = ema(close, 20) long = ema(close, 50) very_long = ema(close, 200) plot(short, color=color.gray, linewidth=1) plot(medium, color=color.red, linewidth=1) plot(long, color=color.black, linewidth=1) plot(very_long, color=color.blue, linewidth=1) rsiValue = rsi(close, 14) near20EMA = close > medium - atr(14) longCond = crossover(close[1], short) and close >= high[1] and rsiValue < 70 and near20EMA shortCond = crossunder(close[1], short) and close <= low[1] and rsiValue > 30 and near20EMA strategy.entry("Long", strategy.long, when=longCond) strategy.entry("Short", strategy.short, when=shortCond) atrValue = atr(14) stopLossLevel = close - atrValue * 1.5 // Dynamic take profit level based on ATR takeProfitMultiplier = input(2, title="Take Profit Multiplier", minval=0.1, maxval=10, step=0.1) takeProfitLevel = close + atrValue * takeProfitMultiplier // Trailing stop loss for long positions longTrailingStop = close - atrValue * 2 strategy.exit("LongTrailingStop", from_entry="Long", loss=longTrailingStop) // Trailing stop loss for short positions shortTrailingStop = close + atrValue * 2 strategy.exit("ShortTrailingStop", from_entry="Short", loss=shortTrailingStop) strategy.exit("Take Profit/Stop Loss", from_entry="Long", loss=stopLossLevel, profit=takeProfitLevel) strategy.exit("Take Profit/Stop Loss", from_entry="Short", loss=stopLossLevel, profit=takeProfitLevel)