Purata pergerakan dwi landasan dan strategi mengikut arah aliran


Tarikh penciptaan: 2023-11-06 15:41:23 Akhirnya diubah suai: 2023-11-06 15:41:23
Salin: 0 Bilangan klik: 561
1
fokus pada
1621
Pengikut

Purata pergerakan dwi landasan dan strategi mengikut arah aliran

Gambaran keseluruhan

Strategi ini menggunakan purata bergerak cepat dan purata bergerak perlahan untuk membina sistem dua hala, menggabungkan indeks trend ADX untuk menilai trend, dan indeks bergerak DMI untuk menentukan arah trend, untuk menjejaki trend selepas trend ditubuhkan, keluar tepat pada masanya apabila trend berbalik, dan mengelakkan kejatuhan. Di samping itu, digabungkan dengan ujian jangka masa, dapat mengukur keberkesanan strategi dalam tempoh masa yang berbeza.

Prinsip Strategi

  1. Rata-rata bergerak cepat dengan rata-rata bergerak perlahan membina sistem dua hala. Apabila bergerak cepat di atas rata-rata bergerak bergerak bergerak perlahan, sebagai isyarat garpu emas, buat lebih masuk; apabila bergerak perlahan di bawah rata-rata bergerak bergerak, sebagai isyarat garpu mati, keluar dari lapangan.

  2. ADX digunakan untuk menilai kehadiran dan kekuatan trend. Apabila ADX lebih besar daripada nilai utama yang ditetapkan, dianggap bahawa trend ada dan trendnya kuat. Hanya apabila trendnya kuat, isyarat perdagangan dihasilkan.

  3. DI+ dalam DMI digunakan untuk menentukan arah trend. Apabila DI+ adalah positif, ia menunjukkan trend naik; apabila DI+ adalah negatif, ia menunjukkan trend menurun.

  4. Digabungkan dengan ujian jangka masa, anda boleh mengkaji semula kesan strategi dalam tempoh masa yang berbeza untuk mengesahkan strategi tersebut.

Analisis kelebihan

  1. Dengan menggunakan sistem dua hala, penembusan boleh disaring, mengelakkan kerosakan akibat penembusan palsu.

  2. Menggunakan ADX untuk menilai kewujudan dan kekuatan trend, dan mengelakkan perdagangan yang kerap dalam keadaan goyah.

  3. Menggunakan DMI untuk menentukan arah trend, memastikan operasi mengikut trend, dan mengelakkan dagangan berlawanan arah.

  4. Ujian julat masa boleh mengesahkan sama ada parameter strategi berfungsi untuk keadaan yang berbeza, dan mengoptimumkan tetapan parameter.

Analisis risiko

  1. Sistem dua hala mudah terbentuk perangkap tanpa kepala atau perangkap berbilang kepala, yang memerlukan harga yang berhati-hati untuk menyesuaikan kembali kerosakan.

  2. ADX menilai terdapat kelewatan dan mungkin kehilangan peluang pada awal trend, yang boleh menurunkan nilai kritikal.

  3. Arah penilaian DMI juga terlewat, juga mungkin terlepas pada awal trend, dan dapat memendekkan parameter kitaran.

  4. Tetapan parameter mungkin perlu disesuaikan dalam tempoh masa yang berbeza, dan parameter perlu dioptimumkan untuk menyesuaikan diri dengan keadaan.

Arah pengoptimuman

  1. Anda boleh menguji kombinasi parameter untuk tempoh panjang yang berbeza untuk mencari parameter terbaik.

  2. Ia boleh digabungkan dengan petunjuk lain seperti garis blur untuk penapisan berganda, meningkatkan kualiti isyarat.

  3. Anda boleh menambah strategi stop loss untuk mengelakkan kerugian daripada berkembang.

  4. Ia boleh dioptimumkan secara automatik melalui kaedah pembelajaran mesin.

  5. Anda boleh menggabungkan faktor-faktor lain seperti penunjuk emosi, muka surat, dan lain-lain untuk meningkatkan kesan strategi.

ringkaskan

Strategi ini menggabungkan kelebihan rata-rata bergerak, indeks trend dan indeks pergerakan, untuk menilai dan mengesan trend. Walaupun mengesahkan keberkesanan parameternya, ia masih perlu terus dioptimumkan untuk menyesuaikan diri dengan lebih banyak keadaan pasaran, untuk menyesuaikan parameter, menghentikan strategi kerugian, dan sintesis pelbagai faktor, untuk meningkatkan kestabilan dan keuntungan strategi. Secara keseluruhan, strategi ini menyediakan strategi pengesanan trend yang boleh dipercayai untuk perdagangan kuantitatif.

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

//@version=4
// author: codachang0726
strategy(title = "(S)MA+ADX+DI+time", shorttitle = "(S)MA+ADX+DI+time", overlay = true)

// === INPUT MA LENGTHS ===
fastMA    = input(defval = 7,   title = "FastMA",          minval = 1, step = 1)
slowMA    = input(defval = 14,   title = "SlowMA",          minval = 1, step = 1)

// === INPUT BACKTEST RANGE ===
fromMonth = input(defval = 9,    title = "From Month",      minval = 1, maxval = 12)
fromDay   = input(defval = 1,    title = "From Day",        minval = 1, maxval = 31)
fromYear  = input(defval = 2020, title = "From Year",       minval = 1970)
thruMonth = input(defval = 1,    title = "Thru Month",      minval = 1, maxval = 12)
thruDay   = input(defval = 1,    title = "Thru Day",        minval = 1, maxval = 31)
thruYear  = input(defval = 2022, title = "Thru Year",       minval = 1970)

// === INPUT SHOW PLOT ===
showDate  = input(defval = true, title = "Show Date Range", type = input.bool)

// === FUNCTION EXAMPLE ===
start     = timestamp(fromYear, fromMonth, fromDay, 00, 00)        // backtest start window
finish    = timestamp(thruYear, thruMonth, thruDay, 23, 59)        // backtest finish window
window()  => true       // create function "within window of time"

// === MA LOGIC ===
crossOv   =  sma(close, fastMA) > sma(close, slowMA)     // true when fastMA over slowMA
crossUn   =  sma(close, fastMA) < sma(close, slowMA)     // true when fastMA under slowMA

// DI+ADX
adxlen      = input(14, title="ADX Smoothing")
dilen       = input(14, title="DI Period")
keyLevel    = input(20, title="Keylevel for ADX")
[diplus, diminus, adx] = dmi(dilen, adxlen)
di = (diplus - diminus)

buy = di > 0 and crossOv and adx > keyLevel
sell = di < 0 and crossUn and adx > keyLevel

buy_time = buy and not buy[1]
sell_time = sell and not sell[1]

// === EXECUTION ===
strategy.entry("L", strategy.long, when = window() and buy_time)    // enter long when "within window of time" AND crossover
strategy.close("L", when = window() and sell_time)                   // exit long when "within window of time" AND crossunder         

// === PLOTTING ===
bgcolor(color = showDate and window() ? color.gray : na, transp = 90)                                     // plot "within window of time"
plot(sma(close, fastMA), title = 'FastMA', color = color.yellow, linewidth = 2, style = plot.style_line)  // plot FastMA
plot(sma(close, slowMA), title = 'SlowMA', color = color.aqua,   linewidth = 2, style = plot.style_line)  // plot SlowMA