
Strategi ini adalah strategi perdagangan day-space oscillating yang didasarkan pada teknologi momentum, menggunakan ATR stop loss. Strategi ini dibuat oleh Kory Hoang dari Stable.
Strategi menggunakan indikator momentum untuk mengidentifikasi arah tren, digabungkan dengan indikator ATR untuk mengatur garis stop loss, untuk mencapai strategi perdagangan getaran rendah dan tinggi.
Kode pertama yang ditetapkan adalah jangka waktu pengamatan.
Kemudian bagian indikator, yang menghitung beberapa indikator berikut:
Logika utama dalam menilai tren adalah:
Jika close lebih tinggi dari stop line vstop yang sebelumnya turun, maka dianggap sebagai tren naik; jika close lebih rendah dari stop line vstop yang sebelumnya naik, maka dianggap sebagai tren turun.
Pada saat terjadi perubahan tren, posisi garis stop loss harus disesuaikan.
Secara khusus, pada saat tren naik, garis stop loss ditetapkan sebagai harga tertinggi sebelumnya K garis dikurangi nilai ATR; Pada saat tren turun, garis stop loss ditetapkan sebagai harga terendah sebelumnya K garis ditambah nilai ATR.
Hal ini memungkinkan stop loss dari trend tracking.
Pada bagian aturan perdagangan, buka posisi dengan melakukan over-collapsing saat melewati batas stop loss.
Strategi ini memiliki keuntungan sebagai berikut:
Strategi ini juga memiliki beberapa risiko:
Ada beberapa hal yang dapat dioptimalkan:
Strategi ini dapat dioptimalkan dari beberapa arah:
Uji parameter ATR yang berbeda untuk menemukan kombinasi optimal. Anda dapat memetakan kembali beberapa kombinasi untuk menilai rasio risiko / keuntungan.
Garis stop loss yang dioptimalkan digabungkan dengan indikator fluktuasi berdasarkan ATR. Indikator fluktuasi dapat diperkenalkan, dengan pelepasan stop loss yang tepat saat fluktuasi meningkat.
Kombinasi dengan filter tren, menghindari pasar yang bergoyang tidak perlu untuk membuka posisi. Anda dapat meningkatkan indikator penilaian tren, hanya membuka posisi ketika tren jelas.
Meningkatkan mekanisme manajemen posisi. Anda dapat menyesuaikan posisi Anda berdasarkan tingkat pemanfaatan dana, jumlah stop loss berturut-turut, dan sebagainya.
Meningkatkan pengendalian risiko overnight. Anda dapat secara aktif menghentikan kerugian sebelum penutupan, untuk menghindari harga overnight melonjak.
Strategi ini digunakan sebagai dasar untuk strategi perdagangan intraday yang bergoyang, memiliki pemikiran yang jelas, menggunakan teknik momentum untuk menilai tren, dan menggunakan indikator ATR untuk stop loss tracking slippage, yang dapat mengontrol risiko secara efektif.
Ada banyak ruang untuk pengoptimalan, yang dapat ditingkatkan dari berbagai sudut pandang seperti penilaian tren, metode stop loss, manajemen posisi, dan lain-lain, sehingga strategi lebih cocok untuk perdagangan langsung. Secara keseluruhan, strategi ini memberikan kerangka dasar yang bagus 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