Golden Cross Optimized Moving Average Crossover Strategi Perdagangan

Penulis:ChaoZhang, Tarikh: 2023-12-19 13:37:33
Tag:

img

Ringkasan

Strategi ini mengoptimumkan strategi crossover purata bergerak konvensional dengan menetapkan tiga purata bergerak dengan tempoh yang berbeza, membina corak salib emas dengan purata bergerak 9 tempoh, 50 tempoh dan 100 tempoh.

Logika Strategi

Strategi ini menggunakan tiga purata bergerak dengan tempoh 9, 50 dan 100. MA 9 tempoh adalah MA jangka pendek, MA 50 tempoh adalah MA jangka sederhana, dan MA 100 tempoh adalah MA jangka panjang. Isyarat perdagangan dihasilkan oleh persilangan antara MA jangka pendek dan MA jangka sederhana. Khususnya, apabila MA jangka panjang berada dalam trend menaik (di atas MA jangka sederhana), isyarat beli diaktifkan apabila MA jangka pendek melintasi di atas MA jangka sederhana. Isyarat jual diaktifkan apabila MA jangka pendek melintasi di bawah MA jangka sederhana.

Analisis Kelebihan

Berbanding dengan strategi crossover purata bergerak berganda konvensional, strategi ini menambah syarat menilai trend jangka menengah dan panjang sebelum menghasilkan isyarat perdagangan, yang secara berkesan dapat menapis beberapa isyarat yang tidak sah. Apabila trend jangka panjang tidak jelas, strategi tidak akan menghasilkan isyarat, mengelakkan terperangkap dalam penyatuan. Pada masa yang sama, strategi ini sesuai untuk menangkap pergerakan trend dalam jangka pendek dan sederhana, mengurangkan kemungkinan kemasukan agresif.

Analisis Risiko

Apabila menetapkan parameter untuk strategi ini, gabungan tempoh purata bergerak perlu diselaraskan. Kombinasi tempoh yang berbeza akan memberi kesan kepada keberkesanan strategi. Jika parameter tempoh tidak ditetapkan dengan betul, terdapat risiko menghasilkan terlalu banyak isyarat palsu. Di samping itu, peniaga perlu menyedari potensi risiko sistemik dan menghentikan kerugian tepat pada masanya untuk mengurangkan risiko.

Arahan pengoptimuman

Pertimbangkan untuk memasukkan penunjuk lain untuk membantu menilai trend pasaran, seperti MACD, BOLL, dan lain-lain, dan menetapkan syarat kemasukan yang lebih ketat, atau menggabungkan penunjuk turun naik untuk membina purata bergerak adaptif supaya parameter dapat menyesuaikan diri secara automatik berdasarkan keadaan pasaran untuk mengoptimumkan lagi strategi.

Kesimpulan

Berdasarkan persilangan purata bergerak berganda konvensional, strategi ini menambah penilaian MA jangka panjang dan syarat penapis, yang dapat menapis isyarat palsu dengan berkesan dan sesuai untuk menangkap pergerakan trend jangka pendek hingga sederhana. Ini adalah strategi trend yang mudah dan praktikal. Walau bagaimanapun, peniaga masih perlu memberi perhatian kepada pengoptimuman parameter dan risiko sistemik, dan merumuskan strategi pengurusan risiko saintifik.


/*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)

Lebih lanjut