Strategi Dagangan Kuantitatif Berdasarkan SMA dan EMA

Penulis:ChaoZhang, Tarikh: 2023-12-12 12:31:25
Tag:

img

I. Ringkasan Strategi

Strategi ini dinamakan Quantitative Trading Strategy Based on SMA and EMA. Idea utamanya adalah menggabungkan garis SMA dan garis EMA dengan parameter yang berbeza untuk membina isyarat perdagangan.

II. Prinsip Strategi

  1. Mengira SMA9, SMA50, SMA180 harga penutupan dan EMA20.

  2. Menentukan isyarat beli dan jual berdasarkan hubungan antara harga dekat dan sokongan sup dan resistansi res. Menjana isyarat beli BuySignal apabila menutup pecah melalui sup, dan menjana isyarat jual SellSignal apabila menutup pecah melalui res.

  3. Apabila membeli isyarat mencetuskan, melaksanakan strategi kedudukan panjang; apabila menjual isyarat mencetuskan, tutup kedudukan panjang.

  4. Apabila menjual isyarat pemicu, melaksanakan strategi kedudukan pendek; apabila membeli isyarat pemicu, tutup kedudukan pendek.

III. Analisis Kelebihan

  1. Menggabungkan pelbagai purata bergerak untuk membentuk isyarat perdagangan meningkatkan ketepatan dan kestabilan.

  2. Mengira sokongan dan rintangan dinamik menjadikan isyarat perdagangan lebih boleh dipercayai.

  3. Menggunakan purata bergerak volatiliti tinggi, sederhana dan rendah mengambil kira kedua-dua trend jangka panjang dan terobosan jangka pendek, meningkatkan keuntungan strategi.

  4. Menyokong kedua-dua kedudukan panjang dan pendek boleh memperoleh keuntungan di pasaran trend dan sampingan.

IV. Analisis Risiko

  1. SMA mempunyai kesan kelewatan, yang boleh menunda isyarat beli dan jual dan menjejaskan prestasi strategi.

  2. Tanpa mekanisme stop loss, kerugian boleh berkembang.

  3. Data backtesting yang tidak mencukupi, parameter perlu diselaraskan mengikut pasaran.

  4. Bergantung pada petunjuk teknikal, tidak dapat mengatasi peristiwa black swan.

Penyelesaian:

  1. Sesuaikan tempoh SMA dengan betul.
  2. Tetapkan stop loss yang munasabah.
  3. Meningkatkan saiz sampel untuk backtesting, menyesuaikan parameter.
  4. Meningkatkan mekanisme kawalan risiko.

V. Pengoptimuman

  1. Tambah stop loss berdasarkan turun naik untuk mengawal kerugian tunggal.

  2. Tambah model pembelajaran mesin untuk membantu penilaian trend dan penjanaan isyarat.

  3. Tambah analisis harga utama untuk meningkatkan ketepatan sokongan dan rintangan.

  4. Uji kombinasi parameter yang berbeza untuk mencari parameter yang lebih baik.

VI. Ringkasan

Strategi ini menggabungkan penunjuk teknikal SMA dan EMA untuk membina isyarat perdagangan, dan mengira sokongan dan rintangan dinamik untuk membentuk logik beli dan jual yang lengkap. Kelebihannya adalah parameter fleksibel, perdagangan dua hala, dapat disesuaikan dengan pasaran yang berbeza, tetapi juga menghadapi masalah seperti ketinggalan dan kerugian berhenti yang tidak mencukupi. Pengoptimuman masa depan boleh dibuat dalam aspek seperti kerugian berhenti, trend penilaian, analisis harga utama untuk meningkatkan kestabilan dan keuntungan.

]


/*backtest
start: 2023-12-10 00:00:00
end: 2023-12-11 00:00:00
period: 3m
basePeriod: 1m
exchanges: [{"eid":"Futures_Binance","currency":"BTC_USDT"}]
*/

//@version=4
strategy(title="StrategySMA 9/50/180 | EMA 20 | BUY/SELL", overlay=true, initial_capital=10000, default_qty_type=strategy.percent_of_equity, default_qty_value=100)

//SMA and EMA code
smaInput1 = input(9, title="SMA1")
smaInput2 = input(50, title="SMA2")
smaInput3 = input(180, title="SMA3")
emaInput1 = input(20, title="EMA1")
sma1 = sma(close, smaInput1)
sma2 = sma(close, smaInput2)
sma3 = sma(close, smaInput3)
EMA1 = ema(close, emaInput1)
plot(sma1, color= color.red , title="SMA1")
plot(sma2, color = color.blue, title="SMA2")
plot(sma3, color= color.white, title="SMA3")
plot(EMA1, color = color.yellow, title="EMA1")

no=input(3,title="BUY/SELL Swing")
Barcolor=input(false,title="BUY/SELL Bar Color")
Bgcolor=input(false,title="BUY/SELL Background Color")
res=highest(high,no)
sup=lowest(low,no)
avd=iff(close>res[1],1,iff(close<sup[1],-1,0))
avn=valuewhen(avd!=0,avd,0)
tsl=iff(avn==1,sup,res)

// Buy/sell signals
BuySignal = crossover(close, tsl)
SellSignal = crossunder(close, tsl)

// Enter long position
strategy.entry("Buy", strategy.long, when=BuySignal)

// Exit long position
strategy.exit("Sell", "Buy", when=SellSignal)

// Enter short position
strategy.entry("Sell", strategy.short, when=SellSignal)

// Exit short position
strategy.exit("Buy", "Sell", when=BuySignal)

colr = close>=tsl ? color.green : close<=tsl ? color.red : na
plot(tsl, color=colr)


Lebih lanjut