Sumber daya yang dimuat... Pemuatan...

Strategi Perdagangan Band Volatilitas Multi-Layer

Penulis:ChaoZhangTanggal: 2024-07-31 14:08:36
Tag:SMAEMASMMAWMAVWMAATR

img

Gambaran umum

Multi-Layer Volatility Band Trading Strategy adalah pendekatan perdagangan kuantitatif yang didasarkan pada volatilitas harga. Strategi ini menggunakan beberapa band volatilitas untuk mengidentifikasi area overbought dan oversold di pasar, memulai perdagangan ketika harga menyentuh area ini. Ide inti adalah untuk menetapkan posisi ketika harga menyimpang dari rata-rata dan keuntungan ketika mereka kembali.

Prinsip Strategi

  1. Perhitungan rata-rata bergerak: Strategi menggunakan jenis rata-rata bergerak yang dapat dipilih (SMA, EMA, SMMA, WMA, VWMA) untuk menghitung garis dasar.

  2. Pengaturan Band Volatilitas: Beberapa band volatilitas diatur berdasarkan garis dasar, menggunakan standar deviasi dikalikan dengan faktor.

  3. Tingkat Fibonacci: Tingkat retracement Fibonacci (23,6%, 38,2%, 50%, 61,8%) digunakan untuk membagi band volatilitas, menciptakan lebih banyak peluang perdagangan.

  4. Adaptor volatilitas: Opsi untuk menggunakan multiplikator dinamis berdasarkan ATR (Average True Range) untuk menyesuaikan lebar band volatilitas secara otomatis.

  5. Logika Masuk: Posisi didirikan ketika harga menyentuh atau melintasi band volatilitas ke arah yang sesuai.

  6. Scaling Posisi: Jika harga terus bergerak tidak menguntungkan, strategi menambah posisi pada tingkat band volatilitas lebih lanjut, mewujudkan konsep strategi Martingale.

  7. Logika Keluar: Keuntungan diambil ketika harga kembali ke garis dasar. Pilihan untuk menutup posisi ketika harga melintasi garis dasar juga tersedia.

Keuntungan Strategi

  1. Multi-level Entry: Dengan menetapkan beberapa band volatilitas dan tingkat Fibonacci, strategi memberikan lebih banyak peluang perdagangan, menangkap volatilitas pasar pada tingkat harga yang berbeda.

  2. Fleksibilitas tinggi: Strategi memungkinkan pengguna untuk memilih berbagai jenis rata-rata bergerak, periode, dan parameter untuk beradaptasi dengan berbagai lingkungan pasar dan instrumen perdagangan.

  3. Adaptasi Dinamis: Fitur pengganda dinamis opsional memungkinkan strategi untuk menyesuaikan secara otomatis sesuai dengan volatilitas pasar, meningkatkan kemampuan beradaptasi.

  4. Manajemen Risiko: Dengan meningkatkan posisi selama pergerakan harga yang merugikan, strategi tersebut berusaha menurunkan harga masuk rata-rata, meningkatkan probabilitas profitabilitas akhir.

  5. Konsep Reversi Rata-rata: Strategi ini didasarkan pada gagasan bahwa harga akhirnya akan kembali ke rata-rata, yang berkinerja baik di banyak pasar dan kerangka waktu.

  6. Kustomisasi: Pengguna dapat menyesuaikan parameter seperti ukuran saham dan tingkat Fibonacci sesuai dengan preferensi risiko dan gaya trading mereka.

Risiko Strategi

  1. Risiko Kerugian Berturut-turut: Di pasar dengan tren yang kuat, harga dapat terus menerus melewati beberapa band volatilitas, yang mengarah pada peningkatan posisi berturut-turut dan akumulasi kerugian yang signifikan.

  2. Tekanan Manajemen Modal: Skala posisi gaya Martingale dapat menyebabkan kebutuhan modal meningkat dengan cepat, berpotensi melebihi kapasitas akun.

  3. Overtrading: Berbagai band volatilitas dapat menghasilkan sinyal perdagangan yang berlebihan di pasar yang terikat rentang, meningkatkan biaya transaksi.

  4. Sensitivitas Parameter: Kinerja strategi sangat tergantung pada pengaturan parameter; parameter yang tidak tepat dapat menyebabkan kinerja yang buruk.

  5. Risiko slippage dan likuiditas: Di pasar yang sangat volatile, slippage yang signifikan dapat terjadi, terutama ketika skala posisi.

  6. Risiko penarikan: Meskipun strategi ini bertujuan untuk menurunkan biaya rata-rata melalui skala posisi, ia masih dapat menghadapi penarikan yang substansial dalam kondisi pasar yang ekstrem.

Arah Optimasi Strategi

  1. Memperkenalkan Filter Tren: Tambahkan indikator tren jangka panjang untuk membuka posisi hanya dalam arah tren, menghindari perdagangan kontra-tren yang sering dalam tren yang kuat.

  2. Dimensi Posisi Dinamis: Sesuaikan jumlah saham yang diperdagangkan berdasarkan ukuran akun dan volatilitas pasar untuk mengendalikan risiko dengan lebih baik.

  3. Mengoptimalkan Mekanisme Keluar: Pertimbangkan untuk memperkenalkan trailing stop atau stop-loss dinamis berbasis volatilitas untuk lebih mengunci keuntungan dan mengendalikan risiko.

  4. Tambahkan Filter Waktu: Terapkan pembatasan jendela waktu perdagangan untuk menghindari periode volatilitas tinggi atau likuiditas yang buruk.

  5. Mengintegrasikan Indikator Sentimen Pasar: Mengintegrasikan indikator volatilitas seperti VIX untuk menyesuaikan parameter strategi atau menghentikan perdagangan selama periode volatilitas tinggi.

  6. Memperkenalkan Machine Learning: Gunakan algoritma pembelajaran mesin untuk mengoptimalkan parameter secara dinamis, meningkatkan kemampuan strategi untuk beradaptasi dengan perubahan pasar.

  7. Tambahkan Filter Dasar: Masukkan data dasar untuk memungkinkan perdagangan hanya di bawah kondisi dasar tertentu, meningkatkan kualitas perdagangan.

Kesimpulan

Multi-Layer Volatility Band Trading Strategy adalah sistem perdagangan yang kompleks yang menggabungkan analisis teknis, teori probabilitas, dan manajemen risiko. Strategi ini mencoba untuk menangkap keuntungan dari fluktuasi harga melalui titik masuk multi-level dan skala posisi gaya Martingale.

Untuk berhasil menerapkan strategi ini, pedagang membutuhkan pemahaman yang mendalam tentang karakteristik pasar, pengaturan parameter yang cermat, dan implementasi manajemen risiko yang ketat. Melalui optimasi dan backtesting terus menerus, dikombinasikan dengan wawasan pasar, strategi ini memiliki potensi untuk menjadi alat perdagangan yang efektif. Namun, mengingat kompleksitas dan potensi risikonya, disarankan untuk melakukan pengujian simulasi menyeluruh dan penilaian risiko sebelum perdagangan langsung.

Secara keseluruhan, Multi-Layer Volatility Band Trading Strategy menyediakan kerangka kerja yang menarik dan menantang bagi pedagang kuantitatif.


/*backtest
start: 2024-06-30 00:00:00
end: 2024-07-30 00:00:00
period: 2h
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/
// © abtov

//@version=5
strategy("Spider Strategy", overlay=true)

ma(source, length, type) =>
    switch type
        "SMA" => ta.sma(source, length)
        "Bollinger Bands" => ta.sma(source, length)
        "EMA" => ta.ema(source, length)
        "SMMA (RMA)" => ta.rma(source, length)
        "WMA" => ta.wma(source, length)
        "VWMA" => ta.vwma(source, length)

stdev = input.int(56, "STDEV", group="Stdev")
mult = input.float(2.3, "Multiplier", group="Stdev")
ma_len = input.int(230, "Basis Length", group="Stdev")
ma_type = input.string("SMA", title="MA Type", options=["SMA", "Bollinger Bands", "EMA", "SMMA (RMA)", "WMA", "VWMA"], group="Stdev")
auto_mult = input.bool(true, "Dynamic Mult.", group="Stdev")
basis_exit = input.bool(false, "Basis Exit", group="Stdev")

col_int = input.int(12, "Collective Value", group="Collective")
col_input = input.bool(true, "Collective Input", group="Collective")


fib1 = input.float(0.236, "Fibonacci Level 1", group = "Fibonacci")
fib2 = input.float(0.382, "Fibonacci Level 2", group = "Fibonacci")
fib3 = input.float(0.5, "Fibonacci Level 3", group = "Fibonacci")
fib4 = input.float(0.618, "Fibonacci Level 4", group = "Fibonacci")

atr_len = input.int(30, "ATR", group="ATR")
atr_bias = input.float(0.72, "Bias", group="ATR")

shares = input.int(1, "Shares Amount", group="Strategy")

if(col_input == true)
    stdev := col_int
    ma_len := col_int
    atr_len := col_int

if(auto_mult == true)
    mult := ma(ta.tr(true), atr_len, ma_type) * atr_bias


basis = ma(close, ma_len, ma_type)
lower = basis - stdev * mult
upper = basis + stdev * mult

lower2 = basis - stdev * mult * fib1
upper2 = basis + stdev * mult * fib1

lower3 = basis - stdev * mult * fib2
upper3 = basis + stdev * mult * fib2

lower4 = basis - stdev * mult * fib3
upper4 = basis + stdev * mult * fib3

lower5 = basis - stdev * mult * fib4
upper5 = basis + stdev * mult * fib4


var lowerAct = false
var lower2Act = false
var lower3Act = false
var lower4Act = false
var lower5Act = false

var upperAct = false
var upper2Act = false
var upper3Act = false
var upper4Act = false
var upper5Act = false


plot(upper, "limit short", color.red)
plot(upper2, "limit 1 short", color.red)
plot(upper3, "limit 2 short", color.red)
plot(upper4, "limit 3 short", color.red)
plot(upper5, "limit 4 short", color.red)
plot(basis, "basis", color.white)
plot(lower, "limit long", color.green)
plot(lower2, "limit 1 long", color.green)
plot(lower3, "limit 2 long", color.green)
plot(lower4, "limit 3 long", color.green)
plot(lower5, "limit 4 long", color.green)


if(lowerAct == false)
    if(close < lower)
        strategy.entry("long", strategy.long, shares)
        lowerAct := true
else
    if(low > basis)
        lowerAct := false


if(lower2Act == false)
    if(close < lower2)
        strategy.entry("long", strategy.long, shares)
        lower2Act := true
else
    if(low > basis)
        lower2Act := false


if(lower3Act == false)
    if(close < lower3)
        strategy.entry("long", strategy.long, shares)
        lower3Act := true
else
    if(low > basis)
        lower3Act := false


if(lower4Act == false)
    if(close < lower4)
        strategy.entry("long", strategy.long, shares)
        lower4Act := true
else
    if(low > basis)
        lower4Act := false


if(lower5Act == false)
    if(close < lower5)
        strategy.entry("long", strategy.long, shares)
        lower5Act := true
else
    if(low > basis)
        lower5Act := false





if(upperAct == false)
    if(close > upper)
        strategy.entry("short", strategy.short, shares)
        upperAct := true
else
    if(high < basis)
        upperAct := false


if(upper2Act == false)
    if(close > upper2)
        strategy.entry("short", strategy.short, shares)
        upper2Act := true
else
    if(high < basis)
        upper2Act := false


if(upper3Act == false)
    if(close > upper3)
        strategy.entry("short", strategy.short, shares)
        upper3Act := true
else
    if(high < basis)
        upper3Act := false


if(upper4Act == false)
    if(close > upper4)
        strategy.entry("short", strategy.short, shares)
        upper4Act := true
else
    if(high < basis)
        upper4Act := false


if(upper5Act == false)
    if(close > upper5)
        strategy.entry("short", strategy.short, shares)
        upper5Act := true
else
    if(high < basis)
        upper5Act := false


if((ta.crossover(close, basis) and basis_exit == true))
    strategy.close("short")
    strategy.close("long")

Berkaitan

Lebih banyak