Ini adalah strategi hentian yang dinamik berdasarkan garis EMA berganda. Ia menggunakan EMA 9 hari dan 20 hari untuk menentukan arah trend pasaran, digabungkan dengan penunjuk RSI untuk menapis pecah palsu. Ia juga menggunakan penunjuk ATR untuk mengira stop loss dinamik dan mengambil tahap keuntungan. Strategi ini sesuai untuk pegangan jangka sederhana hingga panjang.
Strategi ini menggunakan EMA 9 hari sebagai garis jangka pendek dan EMA 20 hari sebagai garis jangka sederhana untuk menentukan trend harga. Ia pergi lama apabila harga melintasi di atas garis jangka pendek dan harga penutupan lebih tinggi daripada tinggi hari sebelumnya, dengan RSI lebih rendah daripada 70 dan menutup lebih tinggi daripada EMA 20 hari tolak 1 ATR. Ia pergi pendek apabila harga melintasi di bawah garis jangka pendek dan harga penutupan lebih rendah daripada rendah hari sebelumnya, dengan RSI lebih tinggi daripada 30 dan menutup lebih tinggi daripada EMA 20 hari tolak 1 ATR.
Stop loss ditetapkan pada harga penutupan tolak 1.5 kali ATR. Ambil keuntungan ditetapkan pada harga penutupan ditambah ATR didarabkan dengan pekali mengambil keuntungan. Ia juga menggunakan 2 kali ATR untuk menetapkan trend trailing stop loss.
Secara keseluruhan, ini adalah strategi pegangan jangka menengah hingga jangka panjang yang agak stabil. Ia menggunakan EMA berganda untuk menentukan trend pasaran utama, mengelak daripada dipengaruhi oleh bunyi bising jangka pendek. Penambahan RSI juga menapis pecah palsu hingga tahap tertentu. Di samping itu, mekanisme stop loss / take profit dinamik membolehkan strategi disesuaikan berdasarkan turun naik pasaran. Walau bagaimanapun, masih ada risiko seperti ketinggalan purata bergerak dan potensi penembusan stop loss. Kita perlu mencari konfigurasi yang optimum melalui penyesuaian parameter dan pengoptimuman semasa aplikasi praktikal.
/*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)