
Strategi ini adalah strategi pengesanan trend yang menggabungkan sistem persilangan dua rata-rata dengan indeks yang agak kuat (RSI). Strategi ini menangkap trend pasaran melalui persilangan purata bergerak 9 kitaran dan 21 kitaran (EMA), sambil menggunakan penunjuk RSI untuk menyaring overbought dan oversold, dan menggabungkan pengesahan jumlah pertukaran untuk meningkatkan kebolehpercayaan isyarat perdagangan.
Logik teras strategi adalah berdasarkan elemen utama berikut:
Apabila EMA cepat ke atas melintasi EMA perlahan, dan RSI lebih besar daripada 40, dan jumlah dagangan melebihi had, sistem menghasilkan isyarat banyak. Sebaliknya, apabila EMA cepat ke bawah melintasi EMA perlahan, dan RSI kurang daripada 60, dan jumlah dagangan disahkan, sistem menghasilkan isyarat kosong.
Strategi ini membina sistem pengesanan trend yang ketat secara logik melalui gabungan saintifik dan petunjuk teknikal klasik. Pelbagai mekanisme penapisan dan kaedah kawalan risiko strategi ini menjadikannya mempunyai nilai aplikasi yang kuat dalam pertempuran. Dengan arah pengoptimuman yang disyorkan, strategi ini masih mempunyai ruang untuk peningkatan lebih lanjut.
/*backtest
start: 2024-11-07 00:00:00
end: 2025-02-18 08:00:00
period: 2d
basePeriod: 2d
exchanges: [{"eid":"Binance","currency":"ETH_USDT"}]
*/
//@version=5
strategy("Call & Put Options Strategy (Optimized)", overlay=true, default_qty_type=strategy.percent_of_equity, default_qty_value=10)
// 📌 Configuration Parameters
emaShort = input(9, title="Short EMA")
emaLong = input(21, title="Long EMA")
rsiLength = input(14, title="RSI Period")
rsiOverbought = input(60, title="RSI Overbought") // Adjusted for more signals
rsiOversold = input(40, title="RSI Oversold") // More flexible to confirm buys
atrLength = input(14, title="ATR Period")
atrMult = input(1.5, title="ATR Multiplier for Stop Loss")
minVol = input(100000, title="Minimum Volume to Confirm Entry") // Volume filter
// 🔹 Indicator Calculations
emaFast = ta.ema(close, emaShort)
emaSlow = ta.ema(close, emaLong)
rsi = ta.rsi(close, rsiLength)
atr = ta.atr(atrLength)
vol = volume
// 📌 Entry Signal Conditions
condCALL = ta.crossover(emaFast, emaSlow) and rsi > rsiOversold and vol > minVol
condPUT = ta.crossunder(emaFast, emaSlow) and rsi < rsiOverbought and vol > minVol
// 🚀 Plot signals on the chart
plotshape(condCALL, location=location.belowbar, color=color.green, style=shape.labelup, title="CALL", size=size.small)
plotshape(condPUT, location=location.abovebar, color=color.red, style=shape.labeldown, title="PUT", size=size.small)
// 🎯 Alert conditions
alertcondition(condCALL, title="CALL Signal", message="📈 CALL signal confirmed")
alertcondition(condPUT, title="PUT Signal", message="📉 PUT signal confirmed")
// 📌 Risk Management - Stop Loss and Take Profit
longStop = close - (atr * atrMult)
shortStop = close + (atr * atrMult)
strategy.entry("CALL", strategy.long, when=condCALL)
strategy.exit("CALL Exit", from_entry="CALL", stop=longStop)
strategy.entry("PUT", strategy.short, when=condPUT)
strategy.exit("PUT Exit", from_entry="PUT", stop=shortStop)