Berbilang strategi penjejakan arah aliran dan sistem pengoptimuman henti untung dan henti rugi berdasarkan ATR

ATR SMA TP/SL OHLC MA
Tarikh penciptaan: 2024-11-12 16:14:11 Akhirnya diubah suai: 2024-11-12 16:14:11
Salin: 5 Bilangan klik: 518
1
fokus pada
1617
Pengikut

Berbilang strategi penjejakan arah aliran dan sistem pengoptimuman henti untung dan henti rugi berdasarkan ATR

Gambaran keseluruhan

Strategi ini adalah sistem perdagangan pengesanan trend berdasarkan rata-rata gelombang sebenar (ATR), untuk mengenal pasti trend pasaran melalui pengiraan dinamik julat turun naik harga, dan untuk pengurusan risiko dengan mekanisme hentian berhenti yang disesuaikan. Strategi ini menggunakan kaedah analisis pelbagai kitaran, menyesuaikan keadaan pemicu isyarat perdagangan secara dinamik melalui penggandaan ATR, untuk mengesan pergerakan pasaran dengan tepat.

Prinsip Strategi

Inti strategi ini adalah berdasarkan pengiraan dinamik indikator ATR, dengan parameter kitaran yang ditetapkan (Default 10 Period) untuk mengira lonjakan sebenar pasaran. Dengan menggunakan ATR (Default 3.0) untuk membina garis orbit atas dan bawah, dan mencetuskan isyarat perdagangan apabila harga menembusi garis orbit.

  1. Menggunakan SMA atau ATR standard untuk mengira asas amplitudo
  2. Dinamika mengira garis lintasan atas dan bawah sebagai penanda aras trend
  3. Menentukan arah trend melalui persimpangan harga dan garis orbit
  4. isyarat perdagangan yang dicetuskan pada titik peralihan trend
  5. Menerapkan sistem stop-loss dinamik berasaskan peratusan

Kelebihan Strategik

  1. Beradaptasi: bertindak balas terhadap turun naik pasaran melalui ATR
  2. Risiko terkawal: Peratusan Stop Loss yang terbina dalam untuk mengawal risiko setiap dagangan
  3. Fleksibiliti parameter: parameter utama seperti kitaran ATR, pengganda dan lain-lain boleh disesuaikan dengan ciri-ciri pasaran
  4. Kejelasan visual: menyediakan antara muka grafik yang sempurna, termasuk penanda trend dan isyarat isyarat
  5. Pengurusan masa: menyokong tetingkap masa dagangan tersuai, meningkatkan kebolehgunaan strategi

Risiko Strategik

  1. Risiko trend reversal: Isyarat palsu boleh berlaku dalam pasaran yang bergolak
  2. Sensitiviti parameter: Pilihan kitaran ATR dan penggandaan mempunyai kesan yang lebih besar terhadap prestasi strategi
  3. Kepercayaan kepada keadaan pasaran: kemungkinan tergelincir lebih besar semasa turun naik tinggi
  4. Tetapan stop loss: Stop loss peratusan tetap mungkin tidak sesuai untuk semua keadaan pasaran

Arah pengoptimuman strategi

  1. Memperkenalkan analisis pelbagai kerangka masa untuk meningkatkan ketepatan trend
  2. Tambahan pengesahan tanda-tanda pertukaran untuk meningkatkan kebolehpercayaan isyarat
  3. Membangunkan mekanisme penangguhan kerugian yang dapat disesuaikan dengan pergerakan pasaran
  4. Meningkatkan penapis kekuatan trend untuk mengurangkan isyarat palsu
  5. Masa masuk yang dioptimumkan dengan penunjuk turun naik

ringkaskan

Ini adalah strategi pengesanan trend yang direka dengan baik, untuk mengesan pergerakan pasaran dengan tepat melalui indikator ATR, dan untuk pengurusan risiko dengan mekanisme hentian dan hentian. Kelebihan strategi adalah kepekaan yang kuat, risiko boleh dikawal, tetapi masih perlu memperhatikan kesan persekitaran pasaran terhadap prestasi strategi. Dengan arah pengoptimuman yang disyorkan, kestabilan dan keuntungan strategi dijangka akan meningkat.

Kod sumber strategi
/*backtest
start: 2019-12-23 08:00:00
end: 2024-11-11 00:00:00
period: 1d
basePeriod: 1d
exchanges: [{"eid":"Futures_Binance","currency":"BTC_USDT"}]
*/

//@version=5
strategy("Custom Buy BID Strategy", overlay=true, shorttitle="Buy BID by MR.STOCKVN")

// Cài đặt chỉ báo
Periods = input.int(title="ATR Period", defval=10)
src = input.source(hl2, title="Source")
Multiplier = input.float(title="ATR Multiplier", step=0.1, defval=3.0)
changeATR = input.bool(title="Change ATR Calculation Method?", defval=true)
showsignals = input.bool(title="Show Buy Signals?", defval=false)
highlighting = input.bool(title="Highlighter On/Off?", defval=true)
barcoloring = input.bool(title="Bar Coloring On/Off?", defval=true)

// Tính toán ATR
atr2 = ta.sma(ta.tr, Periods)
atr = changeATR ? ta.atr(Periods) : atr2

// Tính toán mức giá mua bán dựa trên ATR
up = src - (Multiplier * atr)
up1 = nz(up[1], up)
up := close[1] > up1 ? math.max(up, up1) : up

dn = src + (Multiplier * atr)
dn1 = nz(dn[1], dn)
dn := close[1] < dn1 ? math.min(dn, dn1) : dn

trend = 1
trend := nz(trend[1], trend)
trend := trend == -1 and close > dn1 ? 1 : trend == 1 and close < up1 ? -1 : trend

// Vẽ xu hướng
upPlot = plot(trend == 1 ? up : na, title="Up Trend", style=plot.style_line, linewidth=2, color=color.green)
buySignal = trend == 1 and trend[1] == -1

// Hiển thị tín hiệu mua
plotshape(buySignal ? up : na, title="UpTrend Begins", location=location.absolute, style=shape.circle, size=size.tiny, color=color.green, transp=0)
plotshape(buySignal and showsignals ? up : na, title="Buy", text="Buy", location=location.absolute, style=shape.labelup, size=size.tiny, color=color.green, textcolor=color.white, transp=0)

// Cài đặt màu cho thanh nến
mPlot = plot(ohlc4, title="", style=plot.style_circles, linewidth=0)
longFillColor = highlighting ? (trend == 1 ? color.green : color.white) : color.white
fill(mPlot, upPlot, title="UpTrend Highlighter", color=longFillColor)

// Điều kiện thời gian giao dịch
FromMonth = input.int(defval=9, title="From Month", minval=1, maxval=12)
FromDay = input.int(defval=1, title="From Day", minval=1, maxval=31)
FromYear = input.int(defval=2018, title="From Year", minval=999)
ToMonth = input.int(defval=1, title="To Month", minval=1, maxval=12)
ToDay = input.int(defval=1, title="To Day", minval=1, maxval=31)
ToYear = input.int(defval=9999, title="To Year", minval=999)
start = timestamp(FromYear, FromMonth, FromDay, 00, 00)
finish = timestamp(ToYear, ToMonth, ToDay, 23, 59)

// Cửa sổ thời gian giao dịch
window() => (time >= start and time <= finish)

// Điều kiện vào lệnh Buy
longCondition = buySignal
if (longCondition)
    strategy.entry("BUY", strategy.long, when=window())

// Điều kiện chốt lời và cắt lỗ có thể điều chỉnh
takeProfitPercent = input.float(5, title="Take Profit (%)") / 100
stopLossPercent = input.float(2, title="Stop Loss (%)") / 100

// Tính toán giá trị chốt lời và cắt lỗ dựa trên giá vào lệnh
if (strategy.position_size > 0)
    strategy.exit("Take Profit", "BUY", limit=strategy.position_avg_price * (1 + takeProfitPercent), stop=strategy.position_avg_price * (1 - stopLossPercent))

// Màu nến theo xu hướng
buy1 = ta.barssince(buySignal)
color1 = buy1[1] < na ? color.green : na
barcolor(barcoloring ? color1 : na)