Strategi Mengikuti Trend Purata Adaptif Kaufman Adaptif Dinamik


Tarikh penciptaan: 2024-02-26 16:36:30 Akhirnya diubah suai: 2024-02-26 16:36:30
Salin: 0 Bilangan klik: 666
1
fokus pada
1617
Pengikut

Strategi Mengikuti Trend Purata Adaptif Kaufman Adaptif Dinamik

Gambaran keseluruhan

Strategi ini berdasarkan reka bentuk Kaufman Adaptive Moving Average (KAMA) yang membolehkan anda menyesuaikan kedudukan dagangan secara dinamik dan mengikuti trend pasaran secara automatik. Fungsi utama strategi ini termasuk:

  1. Dinamika mengira langkah dagangan ((dalam unit titik), menyesuaikan diri dengan turun naik pasaran
  2. Menjana isyarat beli dan jual mengikut arah KAMA
  3. Setelah isyarat dihasilkan, set jarak stop loss dan ubah mengikut pergerakan harga
  4. Pilihan menunggu isyarat pengesahan penutupan K, penapis isyarat palsu

Dengan menggunakan ciri-ciri ini, strategi cuba mendapatkan keuntungan tambahan dari trend sambil mengawal risiko.

Prinsip Strategi

Strategi ini berdasarkan kerja Kaufman dalam penunjuk purata bergerak yang beradaptasi. KAMA secara dinamik menyesuaikan berat dan kelancaran purata dengan mengira nisbah pergerakan harga dan kadar turun naik, untuk bertindak balas lebih cepat terhadap perubahan harga.

Apabila KAMA melintasi garisan stop loss ke bawah, ia menunjukkan trend berbalik dan menghasilkan isyarat beli; apabila KAMA melintasi garisan stop loss ke bawah, ia menunjukkan trend berbalik dan menghasilkan isyarat jual. Setelah memasuki kedudukan, strategi akan mengira jarak berhenti yang dinamik berdasarkan ATR dan menubuhkan garisan stop loss. Apabila KAMA bergerak ke arah yang menguntungkan, garisan stop loss juga akan mengikuti dan memindahkan garisan stop loss ke kedudukan yang lebih menguntungkan untuk mengunci lebih banyak keuntungan.

Dengan cara ini, strategi dapat mengikuti aliran dan bergerak secara beransur-ansur sehingga garis berhenti dipicu atau isyarat pembalikan dipicu dan posisi ditutup.

Kelebihan Strategik

Strategi ini mempunyai kelebihan berbanding strategi purata bergerak tradisional:

  1. Indeks KAMA mempunyai kepekaan yang lebih tinggi untuk menangkap trend harga dengan lebih cepat.
  2. Di samping itu, anda juga boleh menggunakan kaedah ini untuk mengunci keuntungan yang lebih tinggi dengan cara mengira jarak stop loss secara dinamik.
  3. Terdapat pilihan pengesahan penutupan K, yang boleh menapis isyarat palsu, mengurangkan kedudukan yang tidak perlu dibuka.

Secara keseluruhannya, strategi ini bertindak balas dengan cepat dan boleh dikawal, dan merupakan tipikal strategi trend-following.

Risiko Strategik

Strategi ini mempunyai beberapa risiko:

  1. Risiko trend reversal. Indeks KAMA mempunyai fleksibiliti untuk bertindak balas terhadap turun naik harga, tetapi ia mungkin tidak dapat bertindak balas dalam masa yang mencukupi terhadap perubahan trend yang mendadak.
  2. Stop Loss Terlalu Radikal. Jarak Stop Loss Dinamik jika diset terlalu besar, mungkin terlalu radikal, sehingga keuntungan tidak dapat dikunci.
  3. Risiko isyarat palsu. Mengaktifkan pengesahan tutup K boleh mengurangkan isyarat palsu, tetapi tidak dapat menghapuskan sepenuhnya.

Risiko ini boleh dikawal dengan mengoptimumkan jarak hentian, menetapkan peratusan hentian maksimum dan sebagainya. Ia juga boleh digabungkan dengan petunjuk lain sebagai pengesahan untuk mengelakkan perdagangan yang salah.

Arah pengoptimuman strategi

Strategi ini boleh dioptimumkan untuk:

  1. Pengoptimuman parameter KAMA: menyesuaikan panjang garis purata, mengoptimumkan kelancaran;
  2. Mengoptimumkan Hentian Dinamis: Uji jarak dan langkah hentian yang optimum mengikut ciri-ciri pelbagai jenis;
  3. Menambah penapis: menggabungkan dengan penunjuk trend lain, mengesahkan isyarat perdagangan, meningkatkan kebolehpercayaan isyarat.

Sebagai contoh, anda boleh menguji penambahan MACD sebagai penunjuk pengesahan tambahan, dan pada masa yang sama KAMA Goldfork, juga meminta MACDDif juga positif dan diperluas. Ini dapat menyaring beberapa isyarat palsu dan mengelakkan pembukaan kedudukan berulang yang tidak perlu.

ringkaskan

Strategi ini berfungsi dengan lancar secara keseluruhan, menggunakan trend tracking stop loss yang dinamik, dan memaksimumkan keuntungan trend. Kebolehan menyesuaikan diri KAMA juga membolehkan strategi mengikuti perubahan pesat pasaran. Dengan pengoptimuman tertentu, strategi ini boleh menjadi program pengesanan trend yang cekap, sesuai untuk operasi garis panjang dan tengah.

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

//@version=5
strategy("THMA - Bharath Vc Improved", overlay=true, process_orders_on_close=true)

// Function to calculate pips with higher precision
getPips(price) =>
    difc = syminfo.mintick
    hlpips = price / difc
    math.round(hlpips / syminfo.mintick) * syminfo.mintick

// Inputs
buyMess = input.string("Buy Message","Buy Alert Message")
sellMess = input.string("Sell Message","Sell Alert Message")
buyExitMessage = input.string("Buy Exit","Buy Exit Alert Message" )
sellExitMessage = input.string("Sell Exit","Sell Exit Alert Message" )

tmf = input.timeframe("", "Timeframe")
length = input(title='Length', defval=14)
fastLength = input(title='Fast EMA Length', defval=2)
slowLength = input(title='Slow EMA Length', defval=30)
src = input(title='Source', defval=close)
highlight = input(title='Highlight ?', defval=true)
awaitBarConfirmation = input(title='Await Bar Confirmation ?', defval=true)

// Function to calculate the TMA
gettma() =>
    mom = math.abs(ta.change(src, length))
    volatility = math.sum(math.abs(ta.change(src)), length)
    er = volatility != 0 ? mom / volatility : 0
    fastAlpha = 2 / (fastLength + 1)
    slowAlpha = 2 / (slowLength + 1)
    alpha = math.pow(er * (fastAlpha - slowAlpha) + slowAlpha, 2)
    kama = 0.0
    kama := alpha * src + (1 - alpha) * nz(kama[1], src)
    await = awaitBarConfirmation ? barstate.isconfirmed : true
    maColor = highlight ? kama > kama[1] and await ? color.green : color.red : color.new(color.purple, 0)
    thma = kama
    hma_dif = (thma - thma[2])/2
    colour = hma_dif > 0 ? color.green : color.red
    isGreen = hma_dif > 0
    [thma, isGreen, colour]

// Dynamic pip size based on ATR to adapt better to smaller timeframes
pips = ta.atr(14) * 0.1

// Main execution logic
var float psl = na
var int lastSignal = 0
var float lastPsl = na

[thma, isGreen, colour] = request.security(syminfo.tickerid, tmf, gettma(), gaps=barmerge.gaps_off, lookahead=barmerge.lookahead_off)

plot(thma, title='KAMA', linewidth=2, color=colour)

if ta.crossover(thma, psl) and strategy.position_size < 0
    strategy.exit("Sell Exit", stop=thma, alert_message=sellExitMessage)

if ta.crossunder(thma, psl) and strategy.position_size > 0
    strategy.exit("Buy Exit", stop=thma, alert_message=buyExitMessage)

if isGreen and strategy.position_size <= 0
    if na(psl)
        psl := close + getPips(pips)
    strategy.entry("Buy", strategy.long, alert_message=buyMess)
    lastSignal := 1

if not isGreen and strategy.position_size >= 0
    if na(psl)
        psl := close - getPips(pips)
    strategy.entry("Sell", strategy.short, alert_message=sellMess)
    lastSignal := -1

if (thma >= lastPsl or na(lastPsl)) and thma > psl
    psl := psl + getPips(pips)
    lastPsl := psl

if (thma <= lastPsl or na(lastPsl)) and thma < psl
    psl := psl - getPips(pips)
    lastPsl := psl

plot(psl, title="Position Stop Level", style=plot.style_stepline, color=color.blue)
plot(lastPsl, title="Last Position Stop Level", style=plot.style_cross, color=color.red)