
Strategi ini adalah strategi perdagangan kuantitatif yang berdasarkan pada persilangan purata bergerak dan stop loss ATR yang dinamik. Strategi ini menggunakan purata bergerak sederhana ((SMA) dari dua tempoh yang berbeza untuk menghasilkan isyarat perdagangan, sambil menggunakan purata purata pergerakan sebenar ((ATR) untuk menetapkan stop dan stop loss secara dinamik untuk mengawal risiko dengan lebih baik.
Prinsip teras strategi ini adalah menggunakan persilangan purata bergerak untuk menangkap perubahan trend harga. Apabila purata bergerak cepat melintasi rata-rata bergerak perlahan dari bawah ke atas, ia menghasilkan isyarat beli; apabila purata bergerak cepat melintasi rata-rata bergerak perlahan dari atas ke bawah, ia menghasilkan isyarat jual.
Strategi ini adalah strategi yang mudah difahami untuk menangkap trend harga dengan menyeberangi purata bergerak, dan menggunakan ATR untuk mengawal risiko. Walaupun terdapat risiko tertentu dalam strategi ini, anda dapat meningkatkan lagi kestabilan dan keuntungan strategi dengan pengoptimuman dalam aspek pengoptimuman parameter, penapisan isyarat, dan pengurusan risiko.
/*backtest
start: 2024-04-01 00:00:00
end: 2024-04-30 23:59:59
period: 2h
basePeriod: 15m
exchanges: [{"eid":"Futures_Binance","currency":"BTC_USDT"}]
*/
//@version=5
strategy("Enhanced Moving Average Crossover Strategy", overlay=true)
// Input parameters
fastLength = input(10, title="Fast MA Length")
slowLength = input(50, title="Slow MA Length")
atrLength = input(14, title="ATR Length")
riskPerTrade = input(1, title="Risk Per Trade (%)") / 100
// Time-based conditions
isLondonSession = hour >= 8 and hour <= 15
isAsianSession = hour >= 0 and hour <= 7
isEuropeanSession = hour >= 7 and hour <= 14
// Moving Averages
fastMA = ta.sma(close, fastLength)
slowMA = ta.sma(close, slowLength)
// Average True Range (ATR) for dynamic stop loss and take profit
atr = ta.atr(atrLength)
// Buy and Sell Conditions
buySignal = ta.crossover(fastMA, slowMA)
sellSignal = ta.crossunder(fastMA, slowMA)
// Dynamic stop loss and take profit
stopLoss = close - atr * 1.5
takeProfit = close + atr * 3
// Strategy Logic
if (buySignal and isEuropeanSession)
strategy.entry("Buy", strategy.long)
strategy.exit("Take Profit/Stop Loss", "Buy", limit=takeProfit, stop=stopLoss)
if (sellSignal and isEuropeanSession)
strategy.entry("Sell", strategy.short)
strategy.exit("Take Profit/Stop Loss", "Sell", limit=takeProfit, stop=stopLoss)
// Plotting
plot(fastMA, color=color.blue, title="Fast MA")
plot(slowMA, color=color.red, title="Slow MA")
plotshape(series=buySignal, location=location.belowbar, color=color.green, style=shape.labelup, text="BUY")
plotshape(series=sellSignal, location=location.abovebar, color=color.red, style=shape.labeldown, text="SELL")