Strategi ini menggunakan dua purata bergerak (MA) untuk menjana isyarat dagangan. Apabila MA jangka pendek melintasi di atas MA jangka panjang, isyarat beli dihasilkan; apabila MA jangka pendek melintasi di bawah MA jangka panjang, isyarat jual dihasilkan. Strategi ini juga menetapkan tempoh masa dagangan (8 AM hingga 20 PM UTC) dan sasaran keuntungan (150 mata).
Strategi ini menghasilkan isyarat perdagangan berdasarkan persilangan dua purata bergerak dengan tempoh yang berbeza, sesuai untuk pasaran yang sedang berkembang. Dengan menetapkan tempoh perdagangan dan sasaran keuntungan tetap, ia dapat mengawal risiko hingga tahap tertentu. Walau bagaimanapun, strategi mungkin tidak berfungsi dengan baik di pasaran yang bergolak, dan sasaran keuntungan tetap mungkin mengehadkan potensi keuntungan strategi. Pada masa akan datang, seseorang boleh mempertimbangkan memasukkan lebih banyak penunjuk teknikal, mengoptimumkan penetapan sasaran keuntungan dan stop loss, menggabungkan maklumat struktur mikro pasaran, dan mengamalkan tetapan parameter yang berbeza untuk keadaan pasaran yang berbeza untuk mengoptimumkan strategi ini.
/*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")