
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.
Kod pertama menetapkan jangka masa pengesanan.
Kemudian, di bahagian indeks, beberapa indeks berikut dikira:
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.
Strategi ini mempunyai kelebihan berikut:
Strategi ini mempunyai beberapa risiko:
Ia boleh dioptimumkan dalam beberapa aspek:
Strategi ini boleh dioptimumkan dalam beberapa arah:
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.
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.
Gabungan dengan penapis trend, mengelakkan pasaran yang bergolak tidak perlu membuka kedudukan. Anda boleh meningkatkan indikator penilaian trend, hanya membuka kedudukan apabila trend jelas.
Menambah mekanisme pengurusan kedudukan. Anda boleh menyesuaikan kedudukan anda berdasarkan penggunaan dana, jumlah hentian kerugian berturut-turut, dan sebagainya.
Menambah kawalan risiko selang malam. Anda boleh menghentikan kerugian secara aktif sebelum penutupan, mengelakkan harga malam melonjak.
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.
/*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