Strategi dagangan ayunan berasaskan momentum


Tarikh penciptaan: 2024-02-05 10:44:19 Akhirnya diubah suai: 2024-02-05 10:44:19
Salin: 1 Bilangan klik: 678
1
fokus pada
1617
Pengikut

Strategi dagangan ayunan berasaskan momentum

Gambaran keseluruhan

Strategi ini adalah strategi dagangan goyah selang masa berdasarkan teknologi momentum, menggunakan ATR stop loss. Strategi ini dibuat oleh Kory Hoang dari Stable.

Strategi menggunakan penunjuk momentum untuk mengenal pasti arah trend, digabungkan dengan penunjuk ATR untuk menetapkan garis hentian, untuk mencapai strategi perdagangan getaran rendah dan tinggi.

Prinsip Strategi

Kod pertama menetapkan jangka masa pengesanan.

Kemudian, di bahagian indeks, beberapa indeks berikut dikira:

  • atr ((): mengira ATR untuk menetapkan stop loss;
  • max/min: Rekodkan harga tertinggi / terendah pada satu garisan K;
  • is_uptrend: menentukan sama ada trend naik atau tidak;
  • Kemasukan: Barisan Stop Loss;

Logik utama untuk menilai trend ialah:

Jika tutup lebih tinggi daripada garis hentian vstop sebelum turun, ia dianggap sebagai trend naik; jika tutup lebih rendah daripada garis hentian vstop sebelum naik, ia dianggap sebagai trend menurun.

Mengubah kedudukan garis stop loss apabila trend berubah.

Khususnya, apabila dalam trend menaik, garis hentian ditetapkan sebagai harga tertinggi sebelum K garis tolak ATR; apabila dalam trend menurun, garis hentian ditetapkan sebagai harga terendah sebelum K garis ditambah ATR.

Ini membolehkan trend tracking stop loss.

Bahagian Peraturan Perdagangan, buatlah lebih banyak penutupan apabila anda membuka kedudukan apabila anda melanggar garis stop loss.

Analisis kelebihan

Strategi ini mempunyai kelebihan berikut:

  1. Menggunakan teknik momentum untuk menentukan arah trend, menangkap titik perubahan tepat pada masanya, dan mengelakkan perobosan palsu.
  2. ATR Stop Loss menjejaki harga tertinggi / terendah, yang dapat mengawal risiko dengan baik.
  3. Strategi logiknya mudah difahami dan mudah dilaksanakan.
  4. Perdagangan bergolak boleh dilakukan di antara trend dengan harga rendah dan tinggi.

Analisis risiko

Strategi ini mempunyai beberapa risiko:

  1. Nilai ATR yang tidak dipilih dengan betul boleh menyebabkan stop loss terlalu longgar atau terlalu ketat.
  2. Ia boleh menyebabkan perubahan yang ketara dalam trend gempa bumi dan menyebabkan kemerosotan berterusan.
  3. Ia mungkin lebih banyak transaksi dan kos bayaran yang lebih tinggi.

Ia boleh dioptimumkan dalam beberapa aspek:

  1. Uji parameter ATR yang berbeza untuk mencari kombinasi parameter yang optimum.
  2. Hentikan kerugian yang dioptimumkan dengan penunjuk kadar turun naik berdasarkan ATR.
  3. Tidak ada gunanya mengambil risiko dengan menggunakan penapis trend untuk mengelakkan kejatuhan pasaran.

Arah pengoptimuman

Strategi ini boleh dioptimumkan dalam beberapa arah:

  1. Uji parameter ATR yang berbeza untuk mencari kombinasi parameter yang paling optimum. Anda boleh menguji semula pelbagai set parameter untuk menilai nisbah risiko dan keuntungan.

  2. Garis hentian yang dioptimumkan dengan penunjuk kadar turun naik berdasarkan ATR. Indikator kadar turun naik boleh diperkenalkan, dengan kelonggaran hentian yang sesuai apabila turun naik meningkat.

  3. Gabungan dengan penapis trend, mengelakkan pasaran yang bergolak tidak perlu membuka kedudukan. Anda boleh meningkatkan indikator penilaian trend, hanya membuka kedudukan apabila trend jelas.

  4. Menambah mekanisme pengurusan kedudukan. Anda boleh menyesuaikan kedudukan anda berdasarkan penggunaan dana, jumlah hentian kerugian berturut-turut, dan sebagainya.

  5. Menambah kawalan risiko selang malam. Anda boleh menghentikan kerugian secara aktif sebelum penutupan, mengelakkan harga malam melonjak.

ringkaskan

Strategi ini berfungsi sebagai dasar strategi perdagangan kejutan dalam sehari, pemikiran keseluruhan jelas, menggunakan teknik dinamik untuk menilai trend, dan menggunakan indikator ATR untuk menjejaki titik berhenti, yang dapat mengawal risiko dengan berkesan.

Terdapat banyak ruang untuk pengoptimuman, dan kemudian ia boleh diperbaiki dari pelbagai sudut, seperti penilaian trend, cara menghentikan kerugian, dan pengurusan kedudukan, untuk menjadikan strategi lebih sesuai untuk perdagangan saham. Secara keseluruhannya, strategi ini memberikan kerangka asas yang baik untuk perdagangan kuantitatif.

Kod sumber strategi
/*backtest
start: 2023-01-29 00:00:00
end: 2024-02-04 00:00:00
period: 1d
basePeriod: 1h
exchanges: [{"eid":"Futures_Binance","currency":"BTC_USDT"}]
*/

//@version=2
strategy("BTC Swinger", overlay=true, commission_value = 0.25, default_qty_type=strategy.percent_of_equity, default_qty_value = 100)

/////////////////////////////////////////////////////////////
//START - SET DATE RANGE

// === BACKTEST RANGE ===
FromMonth = input(defval = 1, title = "From Month", minval = 1)
FromDay   = input(defval = 1, title = "From Day", minval = 1)
FromYear  = input(defval = 2010, title = "From Year")
ToMonth   = input(defval = 12, title = "To Month", minval = 1)
ToDay     = input(defval = 31, title = "To Day", minval = 1)
ToYear    = input(defval = 2020, title = "To Year")

startDate = time > timestamp(FromYear, FromMonth, FromDay, 1, 1)
endDate = time < timestamp(ToYear, ToMonth, ToDay, 23, 59)
withinTimeRange = true

/////////////////////////////////////////////////////////////
//END - SET DATE RANGE



/////////////////////////////////////////////////////////////
//START - INDICATORS

length = input(3)
mult = input(1, minval = 0.01)
atr_ = atr(length)
max1 = max(nz(max_[1]), close)
min1 = min(nz(min_[1]), close)
is_uptrend_prev = nz(is_uptrend[1], true)
stop = is_uptrend_prev ? max1 - mult * atr_ : min1 + mult * atr_
vstop_prev = nz(vstop[1])
vstop1 = is_uptrend_prev ? max(vstop_prev, stop) : min(vstop_prev, stop)
is_uptrend = close - vstop1 >= 0
is_trend_changed = is_uptrend != is_uptrend_prev
max_ = is_trend_changed ? close : max1
min_ = is_trend_changed ? close : min1
vstop = is_trend_changed ? is_uptrend ? max_ - mult * atr_ : min_ + mult * atr_ : vstop1
plot(vstop, color = is_uptrend ? yellow : red, style=circles, linewidth=2)

/////////////////////////////////////////////////////////////
//END - INDICATORS



/////////////////////////////////////////////////////////////
//START - TRADING RULES
direction = input(defval=1, title = "Strategy Direction", minval=-1, maxval=1)
strategy.risk.allow_entry_in(direction == 0 ? strategy.direction.all : (direction < 0 ? strategy.direction.short : strategy.direction.long))

condition1 = close > vstop and withinTimeRange
condition2 = close < vstop and withinTimeRange

strategy.entry("BUY", strategy.long, when = condition1)
strategy.entry("SELL", strategy.short, when = condition2)

/////////////////////////////////////////////////////////////
//END - TRADING RULES