Strategi jalur ganda rata-rata bergerak dan mengikuti tren


Tanggal Pembuatan: 2023-11-06 15:41:23 Akhirnya memodifikasi: 2023-11-06 15:41:23
menyalin: 0 Jumlah klik: 561
1
fokus pada
1621
Pengikut

Strategi jalur ganda rata-rata bergerak dan mengikuti tren

Ringkasan

Strategi ini menggunakan rata-rata bergerak cepat dan rata-rata bergerak lambat untuk membangun sistem dual track, yang dikombinasikan dengan indeks tren ADX untuk menilai tren, dan indeks bergerak DMI untuk menilai arah tren, untuk melacak tren setelah tren terbentuk, dan untuk keluar tepat waktu ketika tren berbalik, untuk menghindari kejatuhan.

Prinsip Strategi

  1. Rata-rata bergerak cepat dengan rata-rata bergerak lambat membangun sistem dua jalur. Ketika rata-rata bergerak cepat melewati rata-rata bergerak lambat, sebagai sinyal garpu emas, lakukan lebih banyak masuk; Ketika rata-rata bergerak cepat melewati rata-rata bergerak lambat, sebagai sinyal garpu mati, keluar dari posisi rata-rata.

  2. ADX digunakan untuk menilai keberadaan dan kekuatan tren. Ketika ADX lebih besar dari nilai kunci yang ditetapkan, dianggap bahwa tren ada dan tren kuat. Hanya ketika tren kuat, sinyal perdagangan dihasilkan.

  3. DI+ dalam DMI digunakan untuk menentukan arah tren. Ketika DI+ positif, berarti tren naik; Ketika DI+ negatif, berarti tren turun. Hanya jika keputusan sesuai dengan arah tren, sinyal perdagangan akan dihasilkan.

  4. Digabungkan dengan pengujian jangka waktu, strategi dapat diukur kembali dalam periode waktu yang berbeda untuk memvalidasi strategi.

Analisis Keunggulan

  1. Dengan menggunakan sistem dual track, penembusan dapat disaring untuk menghindari kerugian akibat penembusan palsu.

  2. Menggunakan ADX untuk menilai keberadaan dan intensitas tren, dan menghindari perdagangan yang sering terjadi dalam situasi yang bergolak.

  3. Menggunakan DMI untuk menentukan arah tren, memastikan sesuai dengan operasi tren, dan menghindari perdagangan berlawanan arah.

  4. Pengujian rentang waktu dapat memverifikasi apakah parameter strategi bekerja untuk situasi yang berbeda, dan mengoptimalkan pengaturan parameter.

Analisis risiko

  1. Sistem dual-track mudah terbentuk di dalam airhead trap atau multi-head trap, yang memerlukan harga yang waspada untuk melakukan penyesuaian kembali dari stop loss.

  2. ADX menilai ada keterlambatan dan kemungkinan kehilangan peluang di awal tren, yang dapat menurunkan nilai kritis.

  3. DMI menilai arah juga ada keterlambatan, juga mungkin kehilangan awal tren, dapat mempersingkat parameter siklus.

  4. Pengaturan parameter mungkin perlu disesuaikan dalam berbagai rentang waktu, dan perlu dioptimalkan agar sesuai dengan situasi.

Arah optimasi

  1. Kombinasi parameter dapat diuji untuk periode panjang yang berbeda untuk menemukan parameter yang optimal.

  2. Hal ini dapat digabungkan dengan indikator lain seperti blur line untuk melakukan double filtering dan meningkatkan kualitas sinyal.

  3. Anda dapat menambahkan strategi stop loss untuk menghindari kerugian yang lebih besar.

  4. Pengaturan parameter dapat dioptimalkan secara otomatis melalui metode pembelajaran mesin.

  5. Ada banyak faktor lain yang dapat digabungkan untuk meningkatkan efektivitas strategi, seperti indikator emosi, profil berita, dan lain sebagainya.

Meringkaskan

Strategi ini mengintegrasikan keuntungan dari moving average, trend index, dan dynamic index, dan memungkinkan penilaian dan pelacakan tren. Sementara memverifikasi efektivitas parameternya, masih perlu terus dioptimalkan untuk menyesuaikan lebih banyak situasi pasar, untuk menyesuaikan parameter, strategi stop-loss, dan sintesis multi-faktor lebih lanjut, sehingga meningkatkan stabilitas dan profitabilitas strategi. Secara keseluruhan, strategi ini memberikan strategi pelacakan tren yang andal untuk perdagangan kuantitatif.

Kode 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