
Strategi ini adalah sistem perdagangan trend-tracking berdasarkan moving average ((EMA) dan amplitudo pergerakan sebenar ((ATR) pelbagai indeks. Strategi ini menangkap trend pasaran dengan kerjasama kerjasama tiga EMA 20 kitaran, 50 kitaran dan 100 kitaran, dan menggunakan ATR untuk pengurusan risiko dan sasaran keuntungan yang dinamik.
Logik utama strategi ini adalah berdasarkan pada interaksi antara harga dan pelbagai EMA.
Strategi ini menggunakan gabungan sistem garis rata berganda dan kawalan angin dinamik ATR, untuk membina sistem perdagangan yang mempunyai ciri-ciri pengesanan trend dan operasi gelombang. Kelebihan strategi ini adalah sistematik dan terkawal risiko, tetapi dalam aplikasi praktikal, perlu memperhatikan kesesuaian dengan keadaan pasaran dan mengoptimumkan sasaran mengikut keadaan sebenar. Dengan penetapan parameter yang munasabah dan kawalan risiko yang ketat, strategi ini dijangka dapat mencapai kesan perdagangan yang stabil dalam kebanyakan keadaan pasaran.
/*backtest
start: 2019-12-23 08:00:00
end: 2024-12-18 08:00:00
period: 1d
basePeriod: 1d
exchanges: [{"eid":"Futures_Binance","currency":"BTC_USDT"}]
*/
//@version=6
strategy("EMA Swing Strategy with ATR", overlay=true)
// Inputs
emaShort = input.int(20, "Short EMA")
emaMid = input.int(50, "Mid EMA")
emaLong = input.int(100, "Long EMA")
rrRatio = input.float(1.5, "Risk-Reward Ratio")
contracts = input.int(5, "Number of Contracts")
// Calculations
ema20 = ta.ema(close, emaShort)
ema50 = ta.ema(close, emaMid)
ema100 = ta.ema(close, emaLong)
atr = ta.atr(14)
// Conditions
longCondition = ta.crossover(close, ema20) and close > ema50
shortCondition = ta.crossunder(close, ema20) and close < ema50
// Variables for trades
var float entryPrice = na
var float stopLoss = na
var float takeProfit = na
// Long Trades
if (longCondition)
entryPrice := close
stopLoss := close - atr
takeProfit := close + atr * rrRatio
strategy.entry("Long", strategy.long, contracts)
strategy.exit("Exit Long", from_entry="Long", stop=stopLoss, limit=takeProfit)
// Short Trades
if (shortCondition)
entryPrice := close
stopLoss := close + atr
takeProfit := close - atr * rrRatio
strategy.entry("Short", strategy.short, contracts)
strategy.exit("Exit Short", from_entry="Short", stop=stopLoss, limit=takeProfit)
// Plot EMAs
plot(ema20, color=color.green, title="EMA 20")
plot(ema50, color=color.red, title="EMA 50")
plot(ema100, color=color.white, title="EMA 100")
// Visualization for Entries
plotshape(series=longCondition, style=shape.labelup, color=color.green, location=location.belowbar, title="Long Entry")
plotshape(series=shortCondition, style=shape.labeldown, color=color.red, location=location.abovebar, title="Short Entry")