
Die Strategie ist eine dynamische Stop-Loss-Tracking-Strategie, basierend auf der doppelten EMA-Mittellinie. Sie verwendet die 9- und 20-Tage-Linie, um die Richtung des Markttrends zu bestimmen, kombiniert mit dem RSI-Indikator, der den Falschbruch filtert. Gleichzeitig werden die ATR-Indikatoren verwendet, um die dynamischen Stop-Loss- und Stop-Outs zu berechnen.
Die Strategie nutzt die 9-Tage-EMA als kurzfristige Durchschnittslinie und die 20-Tage-EMA als mittelfristige Durchschnittslinie, um die Preisentwicklung zu bestimmen. Wenn der Preis die kurzfristige Durchschnittslinie überschreitet und der Schlusskurs über dem Höchstwert des Vortages liegt, während der RSI über 30 liegt, macht er einen Plus; wenn der Preis die kurzfristige Durchschnittslinie unterschreitet und der Schlusskurs unter dem Vortagsmindestwert liegt, während der RSI unter 70 liegt, macht er einen Minus.
Die Stop-Loss-Berechnung ist auf den Schlusskurs minus das 1,5-fache des ATR-Wertes festgelegt. Die Stop-Loss-Berechnung ist auf den Schlusskurs plus das ATR-Wert multipliziert mit dem Stop-Factor. Die Trend-Tracking-Stopp-Berechnung wird gleichzeitig mit dem 2-fachen des ATR-Wertes festgelegt.
Die Strategie ist insgesamt eine eher stabile Mittel-Lang-Linie-Positionsstrategie. Sie kombiniert die wichtigsten Trends des Marktes mit der Beurteilung der Doppel-EMA, um zu vermeiden, dass die Entscheidungen von dem kurzfristigen Marktrauschen beeinflusst werden. Die Aufnahme des RSI-Indikators filtert auch zu einem gewissen Grad falsche Durchbrüche.
/*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)