Strategi ini mengoptimalkan strategi crossover rata-rata bergerak konvensional dengan menetapkan tiga rata-rata bergerak dengan periode yang berbeda, membangun pola salib emas dengan rata-rata bergerak 9 periode, 50 periode dan 100 periode. Ini menghasilkan sinyal beli ketika MA jangka pendek melintasi di atas MA jangka menengah sementara MA jangka panjang berada dalam tren naik.
Strategi ini menggunakan tiga rata-rata bergerak dengan periode 9, 50 dan 100. MA 9 periode adalah MA jangka pendek, MA 50 periode adalah MA jangka menengah, dan MA 100 periode adalah MA jangka panjang. Sinyal perdagangan dihasilkan oleh persilangan antara MA jangka pendek dan MA jangka menengah. Secara khusus, ketika MA jangka panjang berada dalam tren naik (di atas MA jangka menengah), sinyal beli dipicu ketika MA jangka pendek melintasi di atas MA jangka menengah. Sinyal jual dipicu ketika MA jangka pendek melintasi di bawah MA jangka menengah.
Dibandingkan dengan strategi crossover rata-rata bergerak ganda konvensional, strategi ini menambahkan kondisi menilai tren jangka menengah dan panjang sebelum menghasilkan sinyal perdagangan, yang secara efektif dapat menyaring beberapa sinyal yang tidak valid. Ketika tren jangka panjang tidak jelas, strategi tidak akan menghasilkan sinyal, menghindari terjebak dalam konsolidasi. Pada saat yang sama, strategi ini cocok untuk menangkap pergerakan tren dalam jangka pendek dan menengah, mengurangi kemungkinan masuk agresif.
Ketika menetapkan parameter untuk strategi ini, kombinasi periode rata-rata bergerak perlu disesuaikan. Kombinasi periode yang berbeda akan berdampak pada efektivitas strategi. Jika parameter periode tidak ditetapkan dengan benar, ada risiko menghasilkan terlalu banyak sinyal palsu. Selain itu, pedagang perlu menyadari potensi risiko sistemik dan menghentikan kerugian tepat waktu untuk mengurangi risiko.
Pertimbangkan untuk memasukkan indikator lain untuk membantu menilai tren pasar, seperti MACD, BOLL, dll., dan menetapkan kondisi masuk yang lebih ketat, atau memasukkan indikator volatilitas untuk membangun rata-rata bergerak adaptif sehingga parameter dapat menyesuaikan secara otomatis berdasarkan kondisi pasar untuk lebih mengoptimalkan strategi.
Berdasarkan crossover rata-rata bergerak ganda konvensional, strategi ini menambahkan penilaian MA jangka panjang dan kondisi filter, yang secara efektif dapat menyaring sinyal palsu dan cocok untuk menangkap pergerakan tren jangka pendek hingga menengah. Ini adalah strategi tren yang sederhana dan praktis. Namun, pedagang masih perlu memperhatikan optimasi parameter dan risiko sistemik, dan merumuskan strategi manajemen risiko ilmiah.
/*backtest start: 2022-12-12 00:00:00 end: 2023-12-18 00:00:00 period: 1d basePeriod: 1h exchanges: [{"eid":"Futures_Binance","currency":"BTC_USDT"}] */ //@version=4 strategy("Golden Cross, SMA 100, Moving Average Strategy (by Coinrule)", shorttitle="Golden_Cross_Strat_MA100_optimized", overlay=true, initial_capital = 1000,process_orders_on_close=true, default_qty_type = strategy.percent_of_equity, default_qty_value = 100) // Input switch1=input(true, title="Enable Bar Color?") switch2=input(false, title="Show Fast Moving Average") switch3=input(true, title="Show Slow Moving Average") //Calculate Moving Averages movingaverage_fast = sma(close, input(9)) movingaverage_slow = sma(close, input(100)) movingaverage_normal= sma(close, input(50)) //Backtest dates fromMonth = input(defval = 1, title = "From Month", type = input.integer, minval = 1, maxval = 12) fromDay = input(defval = 1, title = "From Day", type = input.integer, minval = 1, maxval = 31) fromYear = input(defval = 2020, title = "From Year", type = input.integer, minval = 1970) thruMonth = input(defval = 1, title = "Thru Month", type = input.integer, minval = 1, maxval = 12) thruDay = input(defval = 1, title = "Thru Day", type = input.integer, minval = 1, maxval = 31) thruYear = input(defval = 2112, title = "Thru Year", type = input.integer, minval = 1970) showDate = input(defval = true, title = "Show Date Range", type = input.bool) start = timestamp(fromYear, fromMonth, fromDay, 00, 00) // backtest start window finish = timestamp(thruYear, thruMonth, thruDay, 23, 59) // backtest finish window window() => time >= start and time <= finish ? true : false // create function "within window of time" // Calculation bullish_cross = crossover(movingaverage_fast, movingaverage_normal) bearish_cross = crossunder(movingaverage_fast, movingaverage_normal) //Entry and Exit if bullish_cross and window() and movingaverage_slow > movingaverage_normal strategy.entry("long", strategy.long) strategy.close("long", when = bearish_cross and window()) // Colors bartrendcolor = close > movingaverage_fast and close > movingaverage_slow and change(movingaverage_slow) > 0 ? color.green : close < movingaverage_fast and close < movingaverage_slow and change(movingaverage_slow) < 0 ? color.red : color.blue barcolor(switch1?bartrendcolor:na) // Output plot(movingaverage_fast, color=color.orange, linewidth=2) plot(movingaverage_slow, color=color.purple, linewidth=3) plot(movingaverage_normal, color=color.blue, linewidth=2) bgcolor(color = showDate and window() ? color.gray : na, transp = 90)