Strategi Kuantitatif Gabungan EMAS Bergerak Dinamik


Tarikh penciptaan: 2024-01-22 12:34:33 Akhirnya diubah suai: 2024-01-22 12:34:33
Salin: 1 Bilangan klik: 536
1
fokus pada
1617
Pengikut

Strategi Kuantitatif Gabungan EMAS Bergerak Dinamik

Gambaran keseluruhan

Strategi ini adalah strategi gabungan garis purata bergerak yang dinamik dengan pelbagai tempoh masa. Ia menggunakan purata bergerak indeks dengan panjang yang berbeza (EMA) untuk membuat keputusan trend dan masuk dan keluar.

Prinsip Strategi

Strategi ini menggunakan 7 EMA dengan kelajuan yang berbeza, dari yang paling cepat hingga yang paling perlahan: 3 kitaran, 15 kitaran, 19 kitaran, 50 kitaran, 100 kitaran, 150 kitaran dan 200 kitaran EMA. Tujuh EMA ini membentuk susunan tangga.

Di samping itu, strategi ini menggabungkan kedua-dua syarat untuk mengesahkan isyarat kedudukan panjang dengan harga inovasi tinggi dan harga penutupan yang menembusi titik tertinggi sejarah, menggunakan isyarat kedudukan pendek dengan inovasi rendah dan harga penutupan yang menembusi titik rendah sejarah, untuk mengelakkan penembusan palsu.

Syarat kedudukan terhad memerlukan harga tutup berturut-turut dari EMA cepat ke EMA perlahan, yang menunjukkan pembalikan trend; atau harga terendah atau tertinggi pada garis K terkini memecahkan 4 EMA, yang menunjukkan bahawa perdagangan harus segera diletakkan.

Analisis kelebihan

  • Menggunakan 7 EMA berkelajuan berbeza untuk membentuk tangga, titik perubahan trend dapat ditentukan dengan lebih tepat
  • Mengambil keputusan mengenai kedudukan panjang dengan menggabungkan kedudukan tinggi inovatif dan kedudukan tinggi bersejarah, kedudukan rendah inovatif dan kedudukan rendah bersejarah untuk menentukan kedudukan pendek, dan mengelakkan penembusan palsu
  • Syarat-syarat kedudukan terpadat berganda lebih ketat dan boleh menghentikan kerugian tepat pada masanya

Analisis risiko

  • Tiada setup stop loss, risiko kerugian besar
  • Keadaan dua kali imbang boleh menyebabkan penarikan diri awal
  • EMA jangka pendek mudah menimbulkan lebih banyak bunyi, meningkatkan frekuensi perdagangan dan kos bayaran.

Penyelesaian:

  1. Tetapkan Hentikan Tetap dan Hentikan Bergerak
  2. Menyesuaikan panjang EMA untuk mengurangkan ketegasan syarat-syarat untuk kedudukan yang sama
  3. Meningkatkan panjang EMA dan mengurangkan frekuensi dagangan

Arah pengoptimuman

  • Menambah strategi penutupan kerugian, seperti penutupan peratusan tetap, penutupan bergerak dan sebagainya
  • Menyesuaikan parameter EMA untuk mencari kombinasi parameter terbaik
  • Menambah penapis untuk penunjuk lain, seperti MACD, ATR, KDJ, dan lain-lain untuk meningkatkan kualiti isyarat
  • Menggabungkan strategi gelombang untuk menangkap turun naik kecil dalam trend
  • Pertimbangkan untuk menyertakan modul pengurusan wang

ringkaskan

Strategi ini mempunyai pemikiran keseluruhan yang jelas, menggunakan 7 EMA yang berbeza untuk menilai trend, dan mempunyai syarat setinggi dua, yang dapat membuat keputusan yang lebih sensitif terhadap perubahan trend. Tetapi strategi itu sendiri tidak menetapkan hentian, terdapat risiko kerugian yang sangat besar, selain itu mudah menyebabkan masalah keluar terlalu awal.

Kod sumber strategi
/*backtest
start: 2023-12-01 00:00:00
end: 2023-12-31 23:59:59
period: 1h
basePeriod: 15m
exchanges: [{"eid":"Futures_Binance","currency":"BTC_USDT"}]
*/

//@version=4
strategy(title="Crypto MAX Trend", shorttitle="Crypto MAX", overlay = true  )
Length = input(3, minval=1)
Length2 = input(15, minval=1)
Length3 = input(19, minval=1)
//Length33 = input(25, minval=1)
Length4 = input(50, minval=1)
Length44 = input(100, minval=1)
Length5 = input(150, minval=1)
Length6 = input(171, minval=1)
Length66 = input(172, minval=1)

xPrice = input(close)

xEMA1 = ema(xPrice, Length)
xEMA2 = ema(xPrice, Length2)
xEMA3 = ema(xPrice, Length3)
//xEMA33 = ema(xPrice, Length33)
xEMA4 = ema(xPrice, Length4)
xEMA44 = ema(xPrice, Length44)
xEMA5 = ema(xPrice, Length5)
xEMA6 = ema(xPrice, Length6)
xEMA66 = ema(xPrice, Length66)

// plot(xEMA1, color=color.white)
// plot(xEMA2, color=color.red)
// plot(xEMA3, color=color.green)
// plot(xEMA4, color=color.purple)
// plot(xEMA44, color=color.gray)
// plot(xEMA5, color=color.maroon)
// plot(xEMA6, color=color.blue)
// plot(xEMA66, color=color.orange)


fromDay = input(defval = 1, title = "From Day", minval = 1, maxval = 31)
fromMonth = input(defval = 1, title = "From Month", minval = 1, maxval = 12)
fromYear = input(defval = 2000, title = "From Year", minval = 1970)
 //monday and session 
// To Date Inputs
toDay = input(defval = 31, title = "To Day", minval = 1, maxval = 31)
toMonth = input(defval = 12, title = "To Month", minval = 1, maxval = 12)
toYear = input(defval = 2020, title = "To Year", minval = 1970)

startDate = timestamp(fromYear, fromMonth, fromDay, 00, 00)
finishDate = timestamp(toYear, toMonth, toDay, 00, 00)
time_cond = true



long = close >  xEMA1 and xEMA1 > xEMA2 and xEMA2 > xEMA3  and xEMA3 > xEMA4  and xEMA4 > xEMA44 and xEMA44 > xEMA5 and xEMA5> xEMA6  and xEMA6> xEMA66  and close > high[1] and high[1] > high[2] and close > high[3] and close > high[4] and close > high[5] and high[5] > high[6] and time_cond
short = close < xEMA1 and xEMA1 < xEMA2 and xEMA2 < xEMA3  and xEMA3 < xEMA4  and xEMA4 < xEMA44 and xEMA44 < xEMA5 and xEMA5< xEMA6 and  xEMA6< xEMA66 and close < low[1] and low[1] < low[2] and close < low[3] and close < low[4] and close< low[5] and low[5] < low[6] and time_cond

notlong = close < xEMA1
strategy.entry("long",1,when=long)
strategy.entry("short",0,when=short)


exitlong1 = xEMA1 < xEMA2 and xEMA2 < xEMA3 and xEMA3 < xEMA4
exitlong2 = crossunder(low,xEMA1) and crossunder(low,xEMA2) and crossunder(low,xEMA3) and crossunder(low,xEMA4)
exitshort1 = xEMA1 > xEMA2 and xEMA2 > xEMA3 and xEMA3 > xEMA4
exitshort2 = crossover(high,xEMA1) and crossover(high,xEMA2) and crossover(high,xEMA3) and crossover(high,xEMA4)

strategy.close("long", when = exitlong1 or exitlong2)
strategy.close("short", when= exitshort1 or exitshort2)