Penjejakan arah aliran suai dan strategi pengurusan risiko menggabungkan AlphaTrend dan KAMA

KAMA ATR MFI RSI
Tarikh penciptaan: 2024-07-30 12:30:19 Akhirnya diubah suai: 2024-07-30 12:30:19
Salin: 0 Bilangan klik: 558
1
fokus pada
1617
Pengikut

Penjejakan arah aliran suai dan strategi pengurusan risiko menggabungkan AlphaTrend dan KAMA

Gambaran keseluruhan

Strategi ini adalah sistem pengesanan trend yang menggabungkan penunjuk AlphaTrend dan Kaufman Adaptive Moving Average (KAMA), sambil mengintegrasikan fungsi pengurusan risiko. Strategi ini bertujuan untuk menangkap trend pasaran sambil menguruskan risiko melalui halangan separa.

Prinsip Strategi

  1. Indeks AlphaTrend dikira:

    • Menggunakan purata julat sebenar (ATR) untuk mengira saluran ke atas dan ke bawah.
    • Arah trend ditentukan berdasarkan nilai penunjuk aliran modal pasaran (MFI) atau penunjuk yang agak kuat (RSI).
  2. KAMA mengira:

    • Kaufman Adaptive Moving Average digunakan untuk menyesuaikan kepekaan mengikut dinamik turun naik pasaran.
  3. Sinyal dagangan dihasilkan:

    • Sinyal beli: apabila KAMA melintasi garis AlphaTrend.
    • Sinyal jual: apabila KAMA melintasi garis AlphaTrend.
  4. Pengurusan Risiko:

    • Mempunyai mekanisme penangguhan separa, dengan separuh daripada kedudukan akan dihapuskan apabila mencapai peratusan keuntungan yang ditetapkan.
  5. Pengurusan kedudukan:

    • Pengurusan kedudukan menggunakan peratusan nilai bersih akaun untuk memastikan fleksibiliti penggunaan dana.

Kelebihan Strategik

  1. Kebolehan beradaptasi dengan trend: Gabungan antara AlphaTrend dan KAMA, dapat menyesuaikan diri dengan lebih baik dengan keadaan pasaran yang berbeza.

  2. Kebolehpercayaan isyarat yang tinggi: meningkatkan kebolehpercayaan isyarat dagangan melalui pengesahan pelbagai syarat.

  3. Pengurusan risiko yang baik: mekanisme penangguhan sebahagian membantu mengunci keuntungan dalam pasaran yang bergelombang.

  4. Pengurusan kedudukan yang fleksibel: Pengurusan kedudukan berdasarkan nilai bersih akaun, menyesuaikan diri dengan saiz dana yang berbeza.

  5. Kesan visual yang baik: Strategi menyediakan antara muka grafik yang jelas untuk analisis dan pemantauan.

Risiko Strategik

  1. Risiko penembusan palsu: Isyarat penembusan palsu yang mungkin berlaku dalam pasaran yang bergolak.

  2. Lagging: Sebagai strategi trend-following, reaksi mungkin lambat pada permulaan pembalikan trend.

  3. Sensitiviti parameter: Performa strategi mungkin lebih sensitif terhadap tetapan parameter.

  4. Risiko penarikan balik: Dalam pasaran yang sedang trend kuat, penarikan balik boleh menyebabkan kehilangan pasaran besar.

  5. Kebolehan beradaptasi pasaran: Strategi mungkin tidak berfungsi dengan baik dalam keadaan pasaran tertentu.

Arah pengoptimuman strategi

  1. Pengaturan parameter dinamik:

    • Menerapkan penyesuaian penyesuaian parameter AlphaTrend dan KAMA untuk menyesuaikan diri dengan keadaan pasaran yang berbeza.
    • Sebab: Meningkatkan kesesuaian strategi dalam kitaran pasaran yang berbeza.
  2. Analisis pelbagai kerangka masa:

    • Memperkenalkan mekanisme pengesahan pelbagai bingkai masa untuk meningkatkan kebolehpercayaan isyarat.
    • Sebab: Mengurangkan penipuan palsu dan meningkatkan kadar kejayaan transaksi.
  3. Penapis kadar turun naik:

    • Menambah penapis kadar turun naik berasaskan ATR untuk mengurangkan dagangan dalam persekitaran turun naik rendah.
    • Sebab: Untuk mengelakkan dagangan berlebihan dalam pasaran.
  4. Kemerosotan kecerdasan:

    • Mempunyai hentian dinamik berasaskan ATR dan meningkatkan fleksibiliti dalam pengurusan risiko.
    • Sebab: Untuk menyesuaikan diri dengan turun naik pasaran dan melindungi keuntungan.
  5. Peringkat pasaran:

    • Memperkenalkan mekanisme klasifikasi keadaan pasaran, menggunakan strategi perdagangan yang berbeza dalam keadaan pasaran yang berbeza.
    • Sebab: Meningkatkan prestasi strategi dalam pelbagai keadaan pasaran.

ringkaskan

AlphaTrend yang digabungkan dengan strategi trend pemantauan dan pengurusan risiko yang beradaptasi dengan KAMA adalah sistem perdagangan yang komprehensif dan kuat. Ia menggabungkan kelebihan indikator AlphaTrend dan KAMA untuk mendapatkan kefahaman yang tepat mengenai trend pasaran.

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

//@version=5
strategy('AlphaTrend with KAMA and Risk Management', shorttitle='AT+KAMA+RM', overlay=true, format=format.price, precision=2, initial_capital=100000, default_qty_type=strategy.percent_of_equity, default_qty_value=100)

// AlphaTrend Inputs
coeff = input.float(1, 'AT Multiplier', step=0.1)
AP = input.int(14, 'AT Common Period', minval=1)
src = input.source(close, 'AT Source')
showsignals = input.bool(true, 'Show Signals?')
novolumedata = input.bool(false, 'Change calculation (no volume data)?')

// KAMA Inputs
kamaLength = input.int(21, 'KAMA Length', minval=1)

// Risk Management Inputs
profitTarget = input.float(10, 'Profit Target for Partial Exit (%)', minval=1, step=0.1)

// Yeni değişkenler
var float entryPrice = na
var string currentPosition = "flat"  // "long", "short", veya "flat"
var float partialExitPrice = na

// AlphaTrend Calculation
ATR = ta.sma(ta.tr, AP)
upT = low - ATR * coeff
downT = high + ATR * coeff
AlphaTrend = 0.0
AlphaTrend := (novolumedata ? ta.rsi(src, AP) >= 50 : ta.mfi(hlc3, AP) >= 50) ? upT < nz(AlphaTrend[1]) ? nz(AlphaTrend[1]) : upT : downT > nz(AlphaTrend[1]) ? nz(AlphaTrend[1]) : downT

// KAMA Calculation
xPrice = close
xvnoise = math.abs(xPrice - xPrice[1])
nAMA = 0.0
nfastend = 0.666
nslowend = 0.0645
nsignal = math.abs(xPrice - xPrice[kamaLength])

// Manual calculation of sum
nnoise = 0.0
for i = 0 to kamaLength-1
    nnoise := nnoise + xvnoise[i]
nefratio = nnoise != 0 ? nsignal / nnoise : 0
nsmooth = math.pow(nefratio * (nfastend - nslowend) + nslowend, 2)
nAMA := nz(nAMA[1]) + nsmooth * (xPrice - nz(nAMA[1]))

// Plotting
color1 = AlphaTrend > AlphaTrend[2] ? #00E60F : AlphaTrend < AlphaTrend[2] ? #80000B : AlphaTrend[1] > AlphaTrend[3] ? #00E60F : #80000B
k1 = plot(AlphaTrend, color=color.new(#0022FC, 0), linewidth=3, title='AlphaTrend')
k2 = plot(AlphaTrend[2], color=color.new(#FC0400, 0), linewidth=3)
fill(k1, k2, color=color1)
plot(nAMA, color=color.yellow, linewidth=2, title='KAMA')

// Sinyal koşulları
buyCondition = (ta.crossover(nAMA, AlphaTrend) and ta.crossover(nAMA, AlphaTrend[2])) or
             (ta.crossover(nAMA, AlphaTrend) and nAMA > AlphaTrend[2]) or
             (ta.crossover(nAMA, AlphaTrend[2]) and nAMA > AlphaTrend)
sellCondition = (ta.crossunder(nAMA, AlphaTrend) and ta.crossunder(nAMA, AlphaTrend[2])) or
              (ta.crossunder(nAMA, AlphaTrend) and nAMA < AlphaTrend[2]) or
              (ta.crossunder(nAMA, AlphaTrend[2]) and nAMA < AlphaTrend)

// Yeni Sinyaller
buySignal = buyCondition
sellSignal = sellCondition

// Alım satım mantığı
if (buySignal and currentPosition != "long")
    if (currentPosition == "short")
        strategy.close("Short")
    strategy.entry("Long", strategy.long)
    entryPrice := close
    currentPosition := "long"
    partialExitPrice := entryPrice * (1 + profitTarget / 100)

if (sellSignal and currentPosition != "short")
    if (currentPosition == "long")
        strategy.close("Long")
    strategy.entry("Short", strategy.short)
    entryPrice := close
    currentPosition := "short"
    partialExitPrice := entryPrice * (1 - profitTarget / 100)

// Kısmi çıkış mantığı
if (currentPosition == "long" and high >= partialExitPrice)
    strategy.close("Long", comment="Partial Exit at " + str.tostring(profitTarget) + "% profit", qty_percent=50)
    partialExitPrice := na
if (currentPosition == "short" and low <= partialExitPrice)
    strategy.close("Short", comment="Partial Exit at " + str.tostring(profitTarget) + "% profit", qty_percent=50)
    partialExitPrice := na

// Plotting signals
plotshape(buySignal and showsignals ? AlphaTrend * 0.9999 : na, title='BUY', text='BUY', location=location.absolute, style=shape.labelup, size=size.tiny, color=color.new(#0022FC, 0), textcolor=color.new(color.white, 0))
plotshape(sellSignal and showsignals ? AlphaTrend * 1.0001 : na, title='SELL', text='SELL', location=location.absolute, style=shape.labeldown, size=size.tiny, color=color.new(color.maroon, 0), textcolor=color.new(color.white, 0))
plotshape(currentPosition == "long" and high >= partialExitPrice ? high : na, title='PARTIAL EXIT LONG', text='PARTIAL', location=location.absolute, style=shape.labeldown, size=size.tiny, color=color.new(color.orange, 0), textcolor=color.new(color.white, 0))
plotshape(currentPosition == "short" and low <= partialExitPrice ? low : na, title='PARTIAL EXIT SHORT', text='PARTIAL', location=location.absolute, style=shape.labelup, size=size.tiny, color=color.new(color.orange, 0), textcolor=color.new(color.white, 0))

// Alerts
alertcondition(buySignal, title='BUY Signal', message='KAMA crossed above AlphaTrend - BUY!')
alertcondition(sellSignal, title='SELL Signal', message='KAMA crossed below AlphaTrend - SELL!')
alertcondition((currentPosition == "long" and high >= partialExitPrice) or (currentPosition == "short" and low <= partialExitPrice), title='Partial Exit', message='Profit target reached - Closing half position!')