Saluran Rata-rata Bergerak Ganda dengan Strategi Pelacakan Tren

Penulis:ChaoZhang, Tanggal: 2023-11-06 15:41:23
Tag:

img

Gambaran umum

Strategi ini menggunakan rata-rata bergerak cepat dan lambat untuk membangun sistem dual-rail, dikombinasikan dengan indeks tren ADX untuk penilaian tren dan indeks arah DMI untuk menentukan arah tren, untuk melacak tren setelah ditetapkan dan keluar tepat waktu ketika tren berbalik, menghindari mengejar puncak dan menjual dasar.

Logika Perdagangan

  1. Rata-rata bergerak cepat dan lambat membangun sistem saluran dual-rail. Ketika MA cepat melintasi MA lambat, itu adalah sinyal masuk salib emas untuk waktu yang lama. Ketika MA cepat melintasi di bawah MA lambat, itu adalah sinyal keluar salib kematian.

  2. ADX menilai keberadaan dan kekuatan tren. Ketika ADX berada di atas level kunci, itu menunjukkan bahwa tren ada dan kuat. Sinyal perdagangan hanya dihasilkan ketika tren kuat.

  3. DI+ dari DMI menentukan arah tren. Ketika DI+ positif, itu menunjukkan tren naik. Ketika DI+ negatif, itu menunjukkan tren turun. Sinyal perdagangan hanya dihasilkan ketika arah tren cocok.

  4. Pengujian rentang waktu menguji kembali efektivitas strategi selama periode waktu yang berbeda untuk verifikasi.

Analisis Keuntungan

  1. Sistem dual-rail menyaring breakout untuk menghindari sinyal palsu.

  2. ADX menghindari perdagangan yang berlebihan selama konsolidasi dengan membutuhkan tren.

  3. DMI memastikan perdagangan sesuai dengan arah tren, mencegah perdagangan yang bertentangan dengan tren.

  4. Pengujian rentang waktu memverifikasi parameter dan mengoptimalkan pengaturan.

Analisis Risiko

  1. Saluran-saluran ini dapat membentuk perangkap, yang membutuhkan pemberhentian untuk menghindari cambukan.

  2. ADX lag mungkin kehilangan peluang awal, yang membutuhkan tingkat kunci yang lebih rendah.

  3. Kelewatan arah DMI juga dapat melewatkan tren awal, membutuhkan periode yang lebih pendek.

  4. Parameter mungkin perlu disesuaikan di berbagai rentang waktu.

Optimalisasi

  1. Uji kombinasi parameter untuk menemukan pengaturan optimal.

  2. Tambahkan filter seperti Bollinger Bands untuk kualitas sinyal.

  3. Menggabungkan stop loss untuk membatasi kerugian.

  4. Otomatis mengoptimalkan parameter dengan pembelajaran mesin.

  5. Sertakan lebih banyak faktor seperti sentimen dan berita.

Kesimpulan

Strategi ini menggabungkan kekuatan rata-rata bergerak, indeks tren dan indeks arah untuk mengidentifikasi dan melacak tren. Sementara memverifikasi validitas parameter, optimasi berkelanjutan diperlukan untuk beradaptasi dengan kondisi pasar yang lebih banyak dengan menyesuaikan parameter, menambahkan stop, mensintesis lebih banyak faktor, dan sebagainya, untuk meningkatkan ketahanan dan profitabilitas. Secara keseluruhan, ini memberikan tren yang dapat diandalkan mengikuti metodologi untuk perdagangan kuantitatif.


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


Lebih banyak