Strategi pemilihan rentang waktu pengujian ulang adaptif berdasarkan superposisi MA ganda


Tanggal Pembuatan: 2024-01-05 12:12:10 Akhirnya memodifikasi: 2024-01-05 12:12:10
menyalin: 0 Jumlah klik: 589
1
fokus pada
1621
Pengikut

Strategi pemilihan rentang waktu pengujian ulang adaptif berdasarkan superposisi MA ganda

Ringkasan

Gagasan inti dari strategi ini adalah untuk mewujudkan sebuah kerangka kerja yang memungkinkan fleksibilitas dalam memilih rentang waktu pengamatan, yang memungkinkan pengguna untuk mengatur waktu mulai pengamatan secara otomatis atau manual sesuai dengan kebutuhan yang berbeda.

Strategi menyediakan empat pilihan rentang tanggal dengan parameter input: menggunakan semua data historis, hari terakhir yang ditentukan, minggu terakhir yang ditentukan, atau rentang tanggal yang ditentukan secara manual. Strategi akan secara dinamis mengatur jendela pengembalian berdasarkan rentang tanggal yang dipilih, sementara logika perdagangan tetap sama, sehingga dapat membandingkan perbedaan kinerja strategi di bawah jendela waktu yang berbeda.

Prinsip Strategi

Strategi ini terdiri dari modul pilihan jangka waktu retrospektif dan modul strategi perdagangan MA ganda.

Modul pilihan rentang tanggal deteksi

  1. Ada empat pilihan rentang tanggal yang tersedia: data sepanjang sejarah (ALL), hari terakhir (DAYS), minggu terakhir (WEEKS), dan rentang tanggal manual (MANUAL).
  2. Sesuai dengan ruang lingkup yang dipilih, pengukuran waktu mulai dan berhenti dapat dilakukan dengan mengonversi pengaturan dinamis pada layar waktu.
  3. Fungsi kondisi waktu window() memfilter garis K, hanya untuk melakukan retesting pada kisaran tanggal yang dipilih.

Modul strategi perdagangan MA ganda

  1. FastMA adalah fastMA, default 14; slowMA adalah slowMA, default 28.
  2. Ketika MA cepat melewati MA lambat, lakukan lebih banyak; ketika MA cepat melewati MA lambat, posisi kosong.
  3. Menggambar kurva MA dengan cepat.

Analisis Keunggulan Strategi

  1. Fleksibilitas dalam memilih berbagai rentang waktu pengujian, tanpa batasan, untuk memenuhi kebutuhan eksperimen yang berbeda.
  2. Efek dari parameter siklus yang berbeda dapat diuji dalam rentang waktu yang sama, dan hasilnya dapat dibandingkan.
  3. Memodifikasi logika perdagangan sederhana, dapat digunakan sebagai kerangka untuk strategi lain.
  4. Strategi Dual MA sederhana dan mudah dimengerti.

Analisis Risiko dan Solusi

  1. Strategi MA ganda lebih kasar, ada masalah sering membeli dan menjual. Anda dapat mempertimbangkan untuk menambahkan optimasi seperti mekanisme stop loss.
  2. Anda harus berhati-hati untuk mengatur tanggal secara manual dan menghindari tanggal yang salah.
  3. Terlalu lama untuk melakukan retesting sepanjang sejarah akan meningkatkan periode pengujian. Anda dapat mempertimbangkan untuk menambahkan slippoint atau mengurangi biaya untuk transaksi yang lebih sering.

Arah optimasi strategi

  1. Meningkatkan penilaian logika stop loss dan mengurangi risiko kerugian.
  2. Menambahkan filter kolam saham, memilih saham yang relevan dengan indeks, meningkatkan stabilitas.
  3. Menambahkan filter sinyal perdagangan, memfilter sinyal yang tidak stabil dalam periode tertentu, mengurangi transaksi yang tidak perlu.
  4. Uji kinerja saham yang terkait dengan berbagai indeks klasifikasi untuk menemukan varietas terbaik.

Meringkaskan

Strategi ini berfungsi sebagai kerangka jangka waktu pengukuran ulang umum, dengan kelebihan fleksibilitas dan kustomisasi yang dapat memenuhi kebutuhan pengujian yang berbeda dari pengguna. Dengan logika perdagangan MA ganda yang sederhana dan efektif, strategi dapat dengan cepat diverifikasi dan dibandingkan.

Kode Sumber Strategi
/*backtest
start: 2022-12-29 00:00:00
end: 2024-01-04 00:00:00
period: 1d
basePeriod: 1h
exchanges: [{"eid":"Futures_Binance","currency":"BTC_USDT"}]
*/

//@version=4

strategy(title = "How To Auto Set Date Range", shorttitle = " ", overlay = true)

// Revision:        1
// Author:          @allanster 

// === INPUT MA ===
fastMA = input(defval = 14, title = "FastMA", type = input.integer, minval = 1, step = 1)
slowMA = input(defval = 28, title = "SlowMA", type = input.integer, minval = 1, step = 1)

// === INPUT BACKTEST RANGE ===
useRange     = input(defval = "WEEKS", title = "Date Range", type = input.string, confirm = false, options = ["ALL", "DAYS", "WEEKS", "MANUAL"])
nDaysOrWeeks = input(defval = 52, title = "# Days or Weeks", type = input.integer, minval = 1)
FromMonth    = input(defval = 9, title = "From Month", minval = 1, maxval = 12)
FromDay      = input(defval = 15, title = "From Day", minval = 1, maxval = 31)
FromYear     = input(defval = 2019, title = "From Year", minval = 2014)
ToMonth      = input(defval = 12, title = "To Month", minval = 1, maxval = 12)
ToDay        = input(defval = 31, title = "To Day", minval = 1, maxval = 31)
ToYear       = input(defval = 9999, title = "To Year", minval = 2014)

// === FUNCTION EXAMPLE ===
window() => true

// === LOGIC ===
buy  = crossover(sma(close, fastMA), sma(close, slowMA))         // buy when fastMA crosses over slowMA
sell = crossunder(sma(close, fastMA), sma(close, slowMA))        // sell when fastMA crosses under slowMA

// === EXECUTION ===
strategy.entry("L", strategy.long, when=window() and buy)        // buy long when "within window of time" AND crossover
strategy.close("L", when=window() and sell)                      // sell long when "within window of time" AND crossunder         

// === PLOTTING ===
plot(sma(close, fastMA), title = 'FastMA', color = color.aqua, linewidth = 2, style = plot.style_line)    // plot FastMA
plot(sma(close, slowMA), title = 'SlowMA', color = color.yellow, linewidth = 2, style = plot.style_line)  // plot SlowMA