Strategi melanda turun naik dua hala


Tarikh penciptaan: 2023-11-21 12:04:19 Akhirnya diubah suai: 2023-11-21 12:04:19
Salin: 0 Bilangan klik: 605
1
fokus pada
1617
Pengikut

Strategi melanda turun naik dua hala

Gambaran keseluruhan

Strategi ini adalah strategi perdagangan dua hala yang menjejaki kadar turun naik. Ia menggunakan indikator ATR rata-rata turun naik untuk menetapkan titik hentian dan menentukan arah trend berdasarkan arah di mana harga menembusi titik hentian.

Prinsip Strategi

Strategi ini menggunakan 3 hari ATR untuk mengira kadar turun naik. Nilai ATR didarabkan dengan satu faktor sebagai titik berhenti. Apabila harga lebih tinggi daripada titik berhenti, ia dianggap sebagai tren naik, dan ia ditutup apabila harga turun dan menembusi titik berhenti; apabila harga lebih rendah daripada titik berhenti, ia dianggap sebagai tren kosong, dan ia ditutup apabila harga naik dan menembusi titik berhenti.

Analisis kelebihan

  • Menggunakan ATR untuk menjejaki turun naik pasaran secara dinamik, mengurangkan kemungkinan penembusan
  • Perdagangan dua hala, untuk mendapat keuntungan daripada turun naik dua hala pasaran
  • Pilih titik bukaan terbalik pada awal perubahan trend untuk meningkatkan peluang keuntungan

Analisis risiko

  • Pasaran mungkin mengalami turun naik yang kuat, ATR tidak dapat mencerminkan turun naik sebenar, menyebabkan halangan ditembusi
  • Risiko GAP dalam Kedudukan Berbilang Kepala
  • Mungkin sering berdagang dengan keuntungan kecil.

Untuk risiko, anda boleh meningkatkan ATR dengan tepat, meningkatkan kawasan perlindungan, mengawal kekerapan perdagangan, menetapkan titik berhenti minimum, dan sebagainya.

Arah pengoptimuman

  • Tanda-tanda perubahan trend yang digabungkan dengan petunjuk lain
  • Optimasi parameter ATR
  • Menambah kawalan jumlah transaksi

ringkaskan

Strategi ini secara keseluruhannya adalah strategi berhenti kehilangan dua arah yang stabil. Dengan menunjuk ATR, anda dapat mengatur kedudukan berhenti secara dinamik dan mengawal risiko penarikan balik. Pada masa yang sama, perdagangan dua arah meningkatkan peluang keuntungan. Dengan pengoptimuman lanjut, anda dapat menjadikan strategi ini lebih stabil, lebih dipercayai, dan lebih mampu mengikuti trend.

Kod sumber strategi
/*backtest
start: 2022-11-14 00:00:00
end: 2023-11-20 00:00:00
period: 1d
basePeriod: 1h
exchanges: [{"eid":"Futures_Binance","currency":"BTC_USDT"}]
*/

//@version=2
strategy("BCH Swinger v1", 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 = 2017, title = "From Year")
ToMonth   = input(defval = 10, title = "To Month", minval = 1)
ToDay     = input(defval = 01, 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