Strategi perdagangan adaptif berdasarkan indikator momentum


Tanggal Pembuatan: 2024-01-05 11:43:25 Akhirnya memodifikasi: 2024-01-05 11:43:25
menyalin: 0 Jumlah klik: 564
1
fokus pada
1619
Pengikut

Strategi perdagangan adaptif berdasarkan indikator momentum

Ringkasan

Strategi ini adalah strategi perdagangan saham adaptif berdasarkan indikator momentum. Strategi ini mengintegrasikan Bollinger Bands, Keltner Channel, dan Price Compression Indicators, yang memungkinkan penilaian tren, identifikasi titik terobosan, dan perdagangan otomatis sepenuhnya untuk menghentikan kerugian.

Prinsip Strategi

Strategi ini terutama menggunakan Brin Belt dan Keltner Channel untuk membangun saluran harga dan mengidentifikasi bahwa penembusan saluran membentuk sinyal perdagangan. Ketika harga dari bawah ke atas menembus saluran, maka dilakukan operasi bullish; Ketika harga dari atas ke bawah menembus saluran, maka dilakukan operasi bearish. Selain itu, strategi ini juga menggunakan indikator kompresi harga untuk menentukan apakah saat ini berada di dalam saluran harga dan mengambil tindakan yang sesuai sesuai dengan nilai negatif dari indikator tersebut.

Secara khusus, Brin band mendapatkan uptrend dengan menghitung standar deviasi harga; Keltner channel mendapatkan uptrend dengan menghitung rata-rata nilai harga ± rata-rata rentang fluktuasi. Ketika kedua channel fdopen terjadi, dianggap bahwa harga masuk ke perombakan, menunggu untuk menembus berikutnya. Indeks kompresi harga mencerminkan apakah harga dikompresi dalam dua saluran, berdasarkan positif negatif dari kompresi indikator perbedaan menilai arah perdagangan.

Secara keseluruhan, strategi ini menggabungkan berbagai indikator untuk menentukan pergerakan harga, membentuk logika panjang dan pendek yang jelas, yang dapat secara efektif memfilter terobosan palsu dan mengidentifikasi peluang perdagangan dengan probabilitas tinggi.

Keunggulan Strategis

  1. Integrasi berbagai indikator, penilaian yang kuat. Kombinasi indikator saling melengkapi, dapat meningkatkan akurasi identifikasi.

  2. Menentukan perbedaan indikator kompresi, mengurangi false breakout. Perbedaan indikator sebagai kondisi tambahan, menghindari transaksi yang tidak perlu.

  3. Adaptasi stop loss channel, pengendalian risiko yang efektif. Channel sebagai posisi stop loss, dapat secara otomatis disesuaikan dengan fluktuasi pasar, mengurangi kerugian.

  4. Pengaturan parameter sederhana, cocok untuk otomatisasi. Hanya beberapa parameter utama, mudah untuk diuji dan dioptimalkan, mudah untuk diintegrasikan ke dalam sistem perdagangan otomatis.

Risiko Strategis

  1. Jika sering terjadi, maka akan terjadi peningkatan dalam jumlah transaksi. Jika pasar bergejolak, maka bisa menyebabkan seringnya pembukaan posisi kosong.

  2. Parameter indikator yang tidak tepat dapat melewatkan kesempatan untuk berlatih. Perlu pengujian dan pengoptimalan untuk menemukan parameter optimal.

  3. Hanya cocok untuk harga saham dengan arah yang jelas, tidak cocok untuk pasar yang sangat bergejolak. Indikator mudah tertipu dan menghasilkan sinyal yang salah.

Arah optimasi strategi

  1. Menambahkan modul kontrol posisi, mengoptimalkan efisiensi pemanfaatan dana. Misalnya, alokasi dana berdasarkan kekuatan terobosan, dll.

  2. Tambahkan model pembelajaran mesin untuk menyesuaikan parameter indikator secara dinamis. Biarkan parameter indikator secara otomatis beradaptasi dengan periode yang berbeda, dengan saham yang berbeda.

  3. Meningkatkan strategi stop loss, memperkenalkan lebih banyak indikator tambahan untuk menilai waktu stop loss. Dengan perbaikan ini, Anda dapat mengurangi jumlah stop loss di titik-titik penting.

Meringkaskan

Strategi ini mengintegrasikan Bollinger Bands, Keltner Channel, dan Price Compression Indicators untuk membentuk logika penilaian yang jelas dan sistem pengendalian risiko. Strategi ini menggabungkan penilaian tren dan operasi terobosan yang dapat secara otomatis beradaptasi dengan situasi dan mengidentifikasi peluang perdagangan dengan probabilitas tinggi. Strategi ini dapat diperkuat lebih lanjut melalui pengoptimalan parameter dan peningkatan kondisi tambahan, dan menjadi alat penting untuk perdagangan kuantitatif.

Kode Sumber Strategi
/*backtest
start: 2022-12-29 00:00:00
end: 2024-01-04 00:00:00
period: 1d
basePeriod: 1h
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/
// © juliopetronilo

//@version=4
strategy("DMI/ADX/Squeeze Robot", shorttitle="DMI/ADX/SQZ", overlay=true)

// Squeeze Momentum Indicator
length = input(20, title="BB Length")
mult = input(2.0, title="BB MultFactor")
lengthKC = input(20, title="KC Length")
multKC = input(1.5, title="KC MultFactor")
useTrueRange = input(true, title="Use TrueRange (KC)")

source = close
basis = sma(source, length)
dev = multKC * stdev(source, length)
upperBB = basis + dev
lowerBB = basis - dev

ma = sma(source, lengthKC)
rangeKC = useTrueRange ? tr : (high - low)
rangema = sma(rangeKC, lengthKC)
upperKC = ma + rangema * multKC
lowerKC = ma - rangema * multKC

sqzOn = (lowerBB > lowerKC) and (upperBB < upperKC)
sqzOff = (lowerBB < lowerKC) and (upperBB > upperKC)
noSqz = not (sqzOn or sqzOff)

val = linreg(source - avg(avg(highest(high, lengthKC), lowest(low, lengthKC)), sma(close, lengthKC)), lengthKC, 0)

// DMI/ADX Plot
adxlen = input(14, title="ADX Smoothing")
dilen = input(14, title="DI Length")
keyLevel = input(23, title="Key Level for ADX")

dirmov(len) =>
    up = change(high)
    down = -change(low)
    truerange = rma(tr, len)
    plus = fixnan(100 * rma(up > down and up > 0 ? up : 0, len) / truerange)
    minus = fixnan(100 * rma(down > up and down > 0 ? down : 0, len) / truerange)
    [plus, minus]

adx(dilen, adxlen) =>
    [plus, minus] = dirmov(dilen)
    sum = plus + minus
    adx_val = abs(plus - minus) / (sum == 0 ? 1 : sum) * 100
    [adx_val, plus, minus]

[sig, up, down] = adx(dilen, adxlen)

// Estrategia de Trading
strategy.entry("Buy", strategy.long, when=sqzOn and crossover(up, down) and crossover(val, 0))
strategy.entry("Sell", strategy.short, when=sqzOn and crossunder(up, down) and crossunder(val, 0))
strategy.close("Buy", when=sqzOff)
strategy.close("Sell", when=sqzOff)

// Plot de los indicadores
plot(val, color=color.blue, style=plot.style_histogram, linewidth=4)
plot(0, color=noSqz ? color.blue : sqzOn ? color.black : color.rgb(236, 238, 247), style=plot.style_cross, linewidth=2)
plot(up, color=color.blue, title="+DI")
plot(down, color=color.gray, title="-DI")
plot(keyLevel, color=color.white, title="Key Level")