Strategi ATR Super Trend


Tarikh penciptaan: 2024-03-29 11:29:15 Akhirnya diubah suai: 2024-03-29 11:29:15
Salin: 2 Bilangan klik: 707
1
fokus pada
1617
Pengikut

Strategi ATR Super Trend

Gambaran keseluruhan

Ini adalah strategi berdasarkan indikator supertrend dan indikator ATR. Idea utama strategi ini adalah: menggunakan indikator supertrend untuk menentukan arah trend pasaran semasa, berdagang apabila indikator supertrend berubah. Pada masa yang sama, strategi ini menggunakan indikator ATR untuk mengira harga hentian dan berhenti, dan mengira saiz kedudukan berdasarkan perkadaran tertentu baki akaun, untuk mengawal risiko.

Prinsip Strategi

Strategi ini berbunyi:

  1. Mengira nilai penunjuk supertrend, menghasilkan isyarat beli atau jual apabila penunjuk supertrend berubah.
  2. Menggunakan ATR untuk mengira harga hentian dan hentian, harga hentian adalah harga semasa ditambah nilai ATR dikurangkan dengan kelipatan, dan harga hentian adalah harga hentian kali ganda dengan nisbah keuntungan risiko.
  3. Ukuran kedudukan dikira berdasarkan perkadaran baki akaun dan harga hentian untuk mengawal risiko setiap perdagangan.
  4. Apabila menghasilkan isyarat beli, membuka lebih banyak kedudukan, harga hentian mengurangkan nilai ATR pada masa isyarat dihasilkan dengan kelipatan, harga hentian menambah nilai ATR pada masa isyarat dihasilkan dengan kelipatan kali ganda dengan nisbah keuntungan risiko.
  5. Apabila menghasilkan isyarat menjual, membuka kedudukan kosong, harga berhenti untuk harga apabila isyarat dihasilkan ditambah nilai ATR kali ganda, harga berhenti untuk isyarat dihasilkan tolak nilai ATR kali ganda kali ganda dengan nisbah keuntungan risiko.

Kelebihan Strategik

Kelebihan strategi ini ialah:

  1. Gabungan pengesanan trend dan indikator kadar turun naik membolehkan anda menangkap trend dengan berkesan dan mengawal risiko.
  2. Saiz kedudukan dikira secara automatik berdasarkan baki akaun dan tahap risiko, tidak perlu disesuaikan secara manual, mudah dilaksanakan.
  3. Parameter boleh disesuaikan secara fleksibel untuk pasaran dan varieti yang berbeza.

Risiko Strategik

Risiko strategi ini ialah:

  1. Dalam pasaran yang bergolak, isyarat beli dan jual yang kerap boleh menyebabkan kos dagangan yang lebih tinggi dan slippage.
  2. Peratusan stop loss dan stop loss yang tetap mungkin tidak dapat menyesuaikan diri dengan perubahan pasaran, menyebabkan stop loss terlalu awal atau keuntungan terlalu kecil.
  3. Pengiraan saiz kedudukan bergantung kepada kadar turun naik sejarah, yang boleh menyebabkan penarikan balik yang lebih besar jika kadar turun naik tiba-tiba meningkat.

Langkah-langkah berikut boleh diambil untuk menangani risiko tersebut:

  1. Meningkatkan syarat penapisan isyarat dan mengurangkan kekerapan transaksi.
  2. Mengoptimumkan kaedah pengiraan berhenti dan hentian, seperti menggunakan hentian bergerak atau hentian dinamik
  3. Memperkenalkan faktor kawalan risiko dalam pengiraan kedudukan, seperti mengurangkan kedudukan apabila kadar turun naik pecah.

Arah pengoptimuman strategi

Strategi ini boleh dioptimumkan dengan:

  1. Pengenalan lebih banyak petunjuk teknikal, seperti MACD, RSI dan lain-lain, sebagai syarat tambahan untuk penilaian trend dan penapisan isyarat, meningkatkan ketepatan isyarat.
  2. Untuk pasaran dan varieti yang berbeza, optimumkan parameter indikator Super Trend dan indikator ATR untuk mencari kombinasi parameter terbaik.
  3. Memperkenalkan lebih banyak faktor kawalan risiko dalam pengiraan kedudukan, seperti maksimum pengeluaran akaun, risiko maksimum perdagangan tunggal, dan lain-lain, meningkatkan kestabilan strategi.
  4. Tambah strategi penangguhan, seperti penangguhan separa, penangguhan bergerak, dan sebagainya untuk meningkatkan keuntungan.

Pengoptimuman di atas dapat meningkatkan keuntungan dan kestabilan strategi, sementara mengurangkan risiko strategi, menjadikan strategi lebih sesuai dengan keadaan pasaran yang berbeza.

ringkaskan

Strategi ini menggabungkan indikator supertrend dan indikator ATR untuk menangkap trend dengan berkesan dan mengawal risiko. Dengan mengira saiz kedudukan optimum, risiko setiap perdagangan dapat dikawal. Tetapi strategi ini mungkin menghasilkan kos perdagangan dan penarikan balik yang lebih tinggi di pasaran yang bergolak.

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

// This Pine Script™ code is subject to the terms of the Mozilla Public License 2.0 at https://mozilla.org/MPL/2.0/
// © tradez99

//@version=5
strategy('Supertrend', overlay=true, format=format.price, precision=2)

Periods = input(title='ATR Period', defval=10)
src = input(hl2, title='Source')
Multiplier = input.float(title='ATR Multiplier', step=0.1, defval=3.0)
changeATR = input(title='Change ATR Calculation Method ?', defval=true)
showsignals = input(title='Show Buy/Sell Signals ?', defval=true)
highlighting = input(title='Highlighter On/Off ?', defval=true)
atr2 = ta.sma(ta.tr, Periods)
atr = changeATR ? ta.atr(Periods) : atr2
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
upPlot = plot(trend == 1 ? up : na, title='Up Trend', style=plot.style_linebr, linewidth=2, color=color.new(color.green, 0))
buySignal = trend == 1 and trend[1] == -1
plotshape(buySignal ? up : na, title='UpTrend Begins', location=location.absolute, style=shape.circle, size=size.tiny, color=color.new(color.green, 0))
plotshape(buySignal and showsignals ? up : na, title='Buy', text='Buy', location=location.absolute, style=shape.labelup, size=size.tiny, color=color.new(color.green, 0), textcolor=color.new(color.white, 0))
dnPlot = plot(trend == 1 ? na : dn, title='Down Trend', style=plot.style_linebr, linewidth=2, color=color.new(color.red, 0))
sellSignal = trend == -1 and trend[1] == 1
plotshape(sellSignal ? dn : na, title='DownTrend Begins', location=location.absolute, style=shape.circle, size=size.tiny, color=color.new(color.red, 0))
plotshape(sellSignal and showsignals ? dn : na, title='Sell', text='Sell', location=location.absolute, style=shape.labeldown, size=size.tiny, color=color.new(color.red, 0), textcolor=color.new(color.white, 0))
mPlot = plot(ohlc4, title='', style=plot.style_circles, linewidth=0)
longFillColor = highlighting ? trend == 1 ? color.green : color.white : color.white
shortFillColor = highlighting ? trend == -1 ? color.red : color.white : color.white
//fill(mPlot, upPlot, title='UpTrend Highligter', color=longFillColor)
//fill(mPlot, dnPlot, title='DownTrend Highligter', color=shortFillColor)

multiplier = input.float(title="ATR multiplier", defval = 1.5)
rr           = input.float(title="Risk:Reward", defval=1.0)
riskPerTrade = input.float(title="Risk Per Trade %", defval=1.0)
atr3 = ta.atr(14)

//calculate stops and targets 
longstop = close - (atr3 * multiplier)
shortstop = close + (atr3 * multiplier)
longStopDistance  = close - longstop
shortStopDistance = shortstop - close
longTarget  = close + (longStopDistance * rr)
shortTarget = close - (shortStopDistance * rr)

// Save stops & targets
var t_stop = 0.0
var t_target = 0.0

longCondition = buySignal 
if (longCondition)
    t_stop := longstop
    t_target := longTarget
    positionSize = math.floor((strategy.equity * (riskPerTrade/100)) / (close - t_stop))
    strategy.entry("Long", strategy.long, qty = positionSize)

shortCondition = sellSignal 
if (shortCondition)
    t_stop := shortstop
    t_target := shortTarget
    positionSize = math.floor((strategy.equity * (riskPerTrade/100)) / (t_stop - close))  
    strategy.entry("Short", strategy.short, qty = positionSize)

strategy.exit(id="Long Exit", from_entry="Long", limit=t_target, stop=t_stop)
strategy.exit(id="Short Exit", from_entry="Short", limit=t_target, stop=t_stop)