
Strategi ini adalah strategi tracking stop loss yang dinamis berdasarkan dua garis rata-rata EMA. Strategi ini menggunakan garis 9, 20 untuk menentukan arah tren pasar, digabungkan dengan RSI untuk memfilter false breakout. Strategi ini juga digunakan untuk menghitung stop loss dan stop loss yang dinamis dengan menggunakan indikator ATR.
Strategi ini menggunakan EMA 9 hari sebagai rata-rata jangka pendek, dan EMA 20 hari sebagai rata-rata jangka menengah, untuk menentukan tren harga. Bila harga naik melewati rata-rata jangka pendek, dan harga menutup lebih tinggi dari harga tertinggi hari sebelumnya, sementara RSI lebih tinggi dari 30, maka melakukan over; Bila harga turun melewati rata-rata jangka pendek, dan harga menutup lebih rendah dari harga terendah hari sebelumnya, sementara RSI lebih rendah dari 70, maka melakukan over.
Stop loss ditetapkan sebagai harga penutupan dikurangi 1,5 kali nilai ATR, stop loss ditetapkan sebagai harga penutupan ditambah nilai ATR dikali faktor stop. Pada saat yang sama menggunakan 2 kali ATR untuk mengatur trend tracking stop loss.
Strategi ini secara keseluruhan merupakan strategi memegang posisi garis tengah dan panjang yang lebih stabil. Strategi ini menggabungkan penilaian dua EMA terhadap tren utama pasar untuk menghindari keputusan yang dipengaruhi oleh kebisingan pasar jangka pendek. Penambahan indikator RSI juga memfilter kebocoran palsu hingga batas tertentu. Selain itu, mekanisme stop loss yang dinamis juga memungkinkan strategi ini untuk menyesuaikan level stop lossnya sendiri sesuai dengan tingkat fluktuasi pasar.
/*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)