Strategi dagangan momentum mengikut arah aliran akhir tahun (purata pergerakan 60 hari penembusan)

MA SMA SLOPE EMA ATR ROC
Tarikh penciptaan: 2025-01-17 14:55:20 Akhirnya diubah suai: 2025-01-17 14:55:20
Salin: 2 Bilangan klik: 363
1
fokus pada
1617
Pengikut

Strategi dagangan momentum mengikut arah aliran akhir tahun (purata pergerakan 60 hari penembusan)

Gambaran keseluruhan

Strategi ini ialah strategi perdagangan kuantitatif yang menggabungkan penjejakan arah aliran dan mekanisme keluar masa. Teras strategi adalah untuk menangkap arah aliran pasaran dengan memerhatikan hubungan antara harga dan purata pergerakan 60 hari, sambil memperkenalkan mekanisme pembubaran paksa akhir tahun untuk mengawal risiko. Apabila harga penutupan menembusi purata pergerakan 60 hari dan cerun purata pergerakan adalah positif, masuk ke pasaran untuk membeli dan menutup semua kedudukan pada hari dagangan terakhir setiap tahun.

Prinsip Strategi

Strategi ini berdasarkan elemen teras berikut:

  1. Pertimbangan arah aliran: Gunakan purata bergerak mudah (SMA) 60 hari sebagai penunjuk untuk menentukan arah aliran jangka sederhana, dan sahkan arah aliran dengan mengira cerun purata bergerak 14 hari.
  2. Isyarat kemasukan: Apabila harga menembusi purata pergerakan 60 hari ke atas dan kecerunan purata bergerak adalah positif, ia menunjukkan bahawa pasaran mungkin memasuki arah aliran menaik, dan isyarat beli dijana pada masa ini.
  3. Mekanisme keluar: Strategi ini menggunakan mekanisme keluar masa tetap dan menutup semua kedudukan pada hari dagangan terakhir setiap tahun. Mekanisme ini berkesan boleh mengelakkan risiko memegang jawatan sepanjang tahun.
  4. Pengurusan masa dagangan: Strategi ini mempunyai kawalan julat tarikh dagangan terbina dalam dan fungsi penghakiman hari dagangan untuk memastikan operasi dilakukan hanya pada hari dagangan yang sah.

Kelebihan Strategik

  1. Keupayaan penjejakan arah aliran yang kukuh: Sistem purata bergerak boleh menangkap arah aliran jangka sederhana dan panjang dengan berkesan serta menggunakan sepenuhnya peluang arah aliran pasaran.
  2. Kawalan risiko sempurna: Mekanisme pembubaran paksa pada akhir tahun boleh mengawal risiko memegang jawatan dengan berkesan dan mengelakkan ketidakpastian yang disebabkan oleh memegang jawatan merentas tahun.
  3. Peraturan pengendalian yang jelas: Syarat masuk dan keluar adalah jelas dan mudah untuk dilaksanakan dan ujian belakang.
  4. Kebolehsuaian yang baik: Parameter strategi sangat boleh dilaraskan dan boleh dioptimumkan mengikut ciri pasaran yang berbeza.

Risiko Strategik

  1. Histeresis purata bergerak: Purata pergerakan mempunyai histeresis tertentu, yang boleh menyebabkan sedikit kelewatan dalam pemasaan kemasukan.
  2. Tidak berkenaan dalam pasaran sisi dan tidak menentu: Dalam pasaran sisi dan tidak menentu, isyarat penembusan palsu yang kerap mungkin berlaku.
  3. Risiko pembubaran tetap: Pembubaran paksa pada penghujung tahun boleh mengakibatkan pembubaran awal dalam arah aliran yang baik.
  4. Kepekaan parameter: Kesan strategi adalah sensitif kepada tetapan parameter seperti tempoh purata bergerak.

Arah pengoptimuman strategi

  1. Tambah penunjuk pengesahan arah aliran: Penunjuk seperti RSI dan MACD boleh diperkenalkan untuk membantu dalam menilai arah aliran dan meningkatkan ketepatan kemasukan pasaran.
  2. Optimumkan mekanisme keluar: Anda boleh menambah syarat henti rugi dan ambil untung, dan tidak bergantung sepenuhnya pada masa untuk keluar.
  3. Parameter pelarasan dinamik: Tempoh purata bergerak boleh dilaraskan secara dinamik mengikut turun naik pasaran.
  4. Meningkatkan pengurusan kedudukan: Memperkenalkan penunjuk seperti ATR untuk kawalan kedudukan bagi meningkatkan kecekapan penggunaan modal.

ringkaskan

Strategi ini membina sistem perdagangan yang agak mantap dengan menggabungkan mengikut trend dan pengurusan masa. Logik strategi adalah mudah dan jelas, mudah difahami dan dilaksanakan, dan mempunyai kepraktisan yang baik. Melalui pengoptimuman parameter yang munasabah dan penambahan langkah kawalan risiko, strategi ini dijangka mencapai pulangan yang stabil dalam urus niaga sebenar.

Kod sumber strategi
/*backtest
start: 2025-01-09 00:00:00
end: 2025-01-16 00:00:00
period: 3m
basePeriod: 3m
exchanges: [{"eid":"Futures_Binance","currency":"BTC_USDT","balance":49999}]
*/

//@version=5
strategy("Buy above 60-day MA, Sell at year-end", overlay=true, pyramiding=1)

// Define inputs for start and end dates
startDate = input(defval=timestamp("2010-01-01"), title="Start Date")
endDate = input(defval=timestamp("2024-12-31"), title="End Date")

// Define 60-day moving average
length = input.int(defval=60, title="MA Length", minval=1)
ma = ta.sma(close, length)
slope = ta.sma(ma, 14) - ta.sma(ma, 14)[1]

// Check if current bar is within the specified date range
withinDateRange = true

// Function to check if a day is a trading day (Monday to Friday)
isTradingDay(day) => true

// Check if current bar is the last trading day of the year
// Check if current bar is the last trading day of the year
isLastTradingDayOfYear = false
yearNow = year(time)
if (month == 12 and dayofmonth == 31)
    isLastTradingDayOfYear := isTradingDay(time)
else if (month == 12 and dayofmonth == 30)
    isLastTradingDayOfYear := isTradingDay(time) and not isTradingDay(time + 86400000)
else if (month == 12 and dayofmonth == 29)
    isLastTradingDayOfYear := isTradingDay(time) and not isTradingDay(time + 86400000) and not isTradingDay(time + 86400000 * 2)

// Plot moving average
plot(ma, color=color.blue, linewidth=2)

// Buy when closing price crosses above 60-day MA and up trend
if (withinDateRange and ta.crossover(close, ma) and slope > 0)
    strategy.entry("Buy", strategy.long)

// Sell all positions at the last trading day of the year
if (isLastTradingDayOfYear)
    strategy.close_all(comment="Sell at year-end")

// Plot buy and sell signals
//plotshape(series=ta.crossover(close, ma), location=location.belowbar, color=color.green, style=shape.labelup, text="Buy")
//plotshape(series=isLastTradingDayOfYear, location=location.abovebar, color=color.red, style=shape.labeldown, text="Sell")