Strategi pemilihan julat masa ujian belakang adaptif berdasarkan superposisi MA berganda


Tarikh penciptaan: 2024-01-05 12:12:10 Akhirnya diubah suai: 2024-01-05 12:12:10
Salin: 0 Bilangan klik: 589
1
fokus pada
1621
Pengikut

Strategi pemilihan julat masa ujian belakang adaptif berdasarkan superposisi MA berganda

Gambaran keseluruhan

Idea utama strategi ini adalah untuk mewujudkan rangka kerja yang fleksibel untuk memilih julat masa pengesanan, yang membolehkan pengguna menetapkan masa permulaan pengesanan secara automatik atau secara manual mengikut keperluan yang berbeza.

Strategi menyediakan empat pilihan julat tarikh melalui parameter input: menggunakan semua data sejarah, hari yang paling baru ditetapkan, minggu yang paling baru ditetapkan atau julat tarikh yang ditetapkan secara manual. Strategi akan secara dinamik menetapkan tetingkap pengembalian mengikut julat tarikh yang dipilih, sementara logik perdagangan kekal tidak berubah, sehingga dapat membandingkan perbezaan prestasi strategi di bawah tetingkap masa yang berbeza.

Prinsip Strategi

Strategi ini terdiri daripada modul pilihan jangka tarikh yang dikesan dan modul strategi perdagangan MA ganda.

Modul Pilihan Julat Tarikh Retrieval

  1. Terdapat empat pilihan julat tarikh: semua data sejarah (ALL), hari terakhir (DAYS), minggu terakhir (WEEKS), dan julat tarikh manual (MANUAL).
  2. Bergantung kepada julat yang dipilih, kembalikan masa mula dan berhenti melalui tetapan dinamik penukaran julat masa.
  3. Fungsi syarat masa window() menapis garisan K, hanya dalam julat tarikh yang dipilih.

Modul strategi perdagangan MA ganda

  1. Semasa MA pantas adalah fastMA, secara lalai 14; semasa MA perlahan adalah slowMA, secara lalai 28.
  2. Apabila MA pantas melalui MA perlahan, lakukan lebih banyak; apabila MA pantas melalui MA perlahan, berpatah kedudukan.
  3. Lukiskan laju MA.

Analisis kelebihan strategi

  1. Terdapat fleksibiliti dalam pilihan jangka masa pengembalian yang berbeza, tanpa batasan, untuk memenuhi keperluan eksperimen yang berbeza.
  2. Anda boleh menguji kesan parameter kitaran yang berbeza dalam jangka masa yang sama, dan hasilnya boleh dibandingkan.
  3. Perubahan logik perdagangan mudah digunakan sebagai kerangka strategi lain.
  4. Strategi Double MA mudah difahami dan mudah untuk dimulakan.

Analisis risiko dan penyelesaian

  1. Strategi MA ganda lebih kasar, terdapat masalah pembelian dan penjualan yang kerap. Anda boleh mempertimbangkan untuk menambah pengoptimuman seperti mekanisme hentikan kerugian.
  2. Menetapkan julat tarikh secara manual perlu berhati-hati untuk mengelakkan penggunaan tarikh yang salah.
  3. Tempoh pengembalian sejarah yang terlalu lama akan meningkatkan kitaran ujian. Anda boleh mempertimbangkan untuk menambah titik slip atau mengurangkan bayaran untuk perdagangan yang kerap.

Arah pengoptimuman strategi

  1. Meningkatkan penilaian logik stop loss dan mengurangkan risiko kerugian.
  2. Menambah penapis kolam saham, memilih indeks saham yang berkaitan, meningkatkan kestabilan.
  3. Menambah penapis untuk isyarat perdagangan, menapis isyarat yang tidak stabil dalam kitaran tertentu, mengurangkan perdagangan yang tidak perlu.
  4. Uji prestasi saham yang berkaitan dengan pelbagai indeks klasifikasi untuk mencari jenis terbaik.

ringkaskan

Strategi ini berfungsi sebagai kerangka jangka tarikh pengukuran semula umum, dengan kelebihan fleksibiliti dan penyesuaian yang dapat memenuhi keperluan ujian pengguna yang berbeza. Dengan logik perdagangan MA ganda yang mudah dan berkesan, strategi dapat disahkan dan dibandingkan dengan cepat.

Kod 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