
Strategi ini menggunakan dua rata-rata bergerak (((MA) untuk menghasilkan sinyal perdagangan. Ketika MA dengan periode yang lebih pendek melintasi MA dengan periode yang lebih panjang dari bawah ke atas, menghasilkan sinyal beli; Ketika MA dengan periode yang lebih pendek melintasi MA dengan periode yang lebih panjang dari atas ke bawah, menghasilkan sinyal jual. Strategi ini mengatur periode perdagangan (((8-20 UTC) dan titik berhenti (((150 poin) sekaligus.
Strategi ini didasarkan pada persilangan rata-rata bergerak dari dua periode yang berbeda untuk menghasilkan sinyal perdagangan, dan berlaku untuk pasar yang sedang tren. Dengan mengatur periode perdagangan dan titik berhenti tetap, risiko dapat dikendalikan sampai batas tertentu. Namun, strategi ini mungkin tidak berkinerja baik di pasar yang bergoyang, dan titik berhenti tetap dapat membatasi ruang keuntungan strategi.
/*backtest
start: 2024-03-01 00:00:00
end: 2024-03-31 23:59:59
period: 1h
basePeriod: 15m
exchanges: [{"eid":"Futures_Binance","currency":"BTC_USDT"}]
*/
//@version=4
strategy("Moving Average Crossover Strategy", overlay=true)
// User-defined moving average periods
ma1Periods = input(5, title="First Moving Average Periods")
ma2Periods = input(20, title="Second Moving Average Periods")
// Calculate moving averages
ma1 = sma(close, ma1Periods)
ma2 = sma(close, ma2Periods)
// Plot moving averages
plot(ma1, color=color.red, linewidth=2, title="First Moving Average")
plot(ma2, color=color.blue, linewidth=2, title="Second Moving Average")
// Detect crossovers and crossunders
bullishCross = crossover(ma1, ma2)
bearishCross = crossunder(ma1, ma2)
// Define trading hours (8 AM to 2 PM UTC)
startHour = 8
endHour = 20
utcHour = hour(time, "UTC")
isMarketOpen = true
// Define profit target
profitTarget = 150
// Check if the price has closed above/below the MA for the past 4 bars
aboveMa = close[4] > ma1[4] and close[3] > ma1[3] and close[2] > ma1[2] and close[1] > ma1[1]
belowMa = close[4] < ma1[4] and close[3] < ma1[3] and close[2] < ma1[2] and close[1] < ma1[1]
// Create buy and sell signals
if (bullishCross and isMarketOpen and aboveMa)
strategy.entry("Buy", strategy.long)
strategy.exit("Sell", "Buy", profit=profitTarget)
if (bearishCross and isMarketOpen and belowMa)
strategy.entry("Sell", strategy.short)
strategy.exit("Cover", "Sell", profit=profitTarget)
// Plot shapes on crossovers
plotshape(series=bullishCross and isMarketOpen and aboveMa, location=location.belowbar, color=color.green, style=shape.labelup, text="Buy")
plotshape(series=bearishCross and isMarketOpen and belowMa, location=location.abovebar, color=color.red, style=shape.labeldown, text="Sell")