Alat pengujian ulang strategi perdagangan multi-indikator MA MACD BB

MA MACD BB
Tanggal Pembuatan: 2024-06-03 09:49:08 Akhirnya memodifikasi: 2024-06-03 09:49:08
menyalin: 0 Jumlah klik: 684
1
fokus pada
1617
Pengikut

Alat pengujian ulang strategi perdagangan multi-indikator MA MACD BB

Ringkasan

MA MACD BB Multi Indicator Trading Strategy Retargeting Tool adalah platform pengembangan dan retargeting strategi perdagangan kuantitatif yang kuat. Alat ini mendukung penggunaan tiga indikator teknis yang umum digunakan: Moving Average ((MA), Moving Average Convergence Scatter Indicator ((MACD) dan Bollinger Band ((BB), dan pengguna dapat secara fleksibel memilih salah satu dari mereka sebagai indikator sinyal perdagangan utama.

Prinsip Strategi

Prinsip inti dari strategi ini adalah menggunakan tiga indikator teknis yang umum digunakan (MA, MACD, dan BB) untuk mengidentifikasi tren pasar dan sinyal perdagangan.

  1. Ketika pengguna memilih MA sebagai indikator utama, strategi akan menghitung rata-rata bergerak periode yang ditentukan, menghasilkan sinyal beli dan jual ketika harga naik atau turun melalui rata-rata bergerak.
  2. Ketika pengguna memilih MACD sebagai indikator utama, strategi akan menghitung nilai MACD dan garis sinyal, yang menghasilkan sinyal beli dan jual masing-masing ketika MACD naik atau turun melalui garis sinyal. Selain itu, strategi juga akan memetakan grafik pilar MACD untuk menunjukkan kekuatan tren dengan lebih intuitif.
  3. Ketika pengguna memilih BB sebagai indikator utama, strategi akan menghitung lintasan atas dan bawah di Brin Belt, menghasilkan sinyal beli ketika harga menembus lintasan bawah, menghasilkan sinyal jual ketika menembus lintasan atas, dan melonggarkan posisi ketika kembali ke dekat lintasan tengah.

Pada saat transaksi tertentu, strategi akan secara otomatis menghitung ukuran posisi untuk setiap transaksi berdasarkan arah perdagangan yang dipilih pengguna (polyhead atau blankhead) dan pengaturan pengelolaan dana, kemudian melakukan operasi posisi terbuka dan posisi sesuai sesuai dengan sinyal.

Keunggulan Strategis

  1. Fleksibilitas indikator: Pengguna dapat memilih MA, MACD atau BB sebagai indikator perdagangan utama sesuai dengan preferensi dan karakteristik pasar mereka sendiri, dan beradaptasi dengan gaya perdagangan dan lingkungan pasar yang berbeda.
  2. Strategi ini mendukung perdagangan dua arah yang lebih banyak, memungkinkan pengguna untuk memilih arah perdagangan yang fleksibel sesuai dengan tren pasar, tidak hanya untuk mendapatkan keuntungan dalam situasi naik, tetapi juga untuk mendapatkan kesempatan untuk mendapatkan keuntungan dalam situasi turun.
  3. Kendali risiko: Pengguna dapat secara fleksibel mengatur proporsi dana untuk setiap transaksi, mengontrol ambang risiko setiap transaksi secara wajar, dan strategi akan secara otomatis menghitung ukuran posisi untuk setiap transaksi berdasarkan saldo akun, untuk menghindari risiko yang berlebihan.
  4. Kejelasan sinyal: Strategi menggunakan indikator teknis umum untuk menghasilkan sinyal perdagangan yang jelas dan objektif, dan dengan tampilan grafik yang intuitif, pengguna dapat dengan jelas mengidentifikasi arah tren dan waktu perdagangan.
  5. Kemampuan untuk melakukan retrospeksi: Pengguna dapat menggunakan alat ini untuk melakukan retrospeksi terhadap data historis, dengan cepat mengevaluasi dan mengoptimalkan kinerja strategi, dan memberikan referensi penting untuk perdagangan langsung.

Risiko Strategis

  1. Risiko pasar: Strategi perdagangan apa pun menghadapi risiko fluktuasi dan ketidakpastian pasar, dan strategi ini tidak terkecuali. Jika pasar mengalami fluktuasi yang kuat atau perilaku tidak rasional, mungkin menyebabkan strategi menghasilkan sinyal dan kerugian yang salah.
  2. Risiko Parameter: Kinerja strategi ini tergantung pada parameter indikator yang dipilih oleh pengguna, seperti siklus MA, siklus garis cepat dan lambat MACD, siklus dan lebar BB, dll. Pengaturan parameter yang tidak tepat dapat menyebabkan efek strategi yang buruk.
  3. Risiko overfit: Jika pengguna terlalu mengoptimalkan parameter strategi dalam pengujian ulang, ini dapat menyebabkan strategi terlalu terfokus pada data historis tertentu dan tidak berkinerja baik di pasar nyata.
  4. Risiko Black Swan: Strategi ini terutama bergantung pada indikator teknis untuk menghasilkan sinyal perdagangan, dan jika ada perubahan fundamental atau peristiwa ekstrem yang signifikan di pasar, strategi ini mungkin tidak dapat menanggapi secara tepat waktu, menyebabkan kerugian besar.

Untuk mengurangi risiko di atas, pengguna harus menetapkan parameter strategi yang masuk akal, menilai dan menyesuaikan strategi secara berkala, dan tetap memperhatikan pergerakan pasar, melakukan intervensi manual jika diperlukan. Selain itu, langkah-langkah manajemen risiko yang ketat, seperti pengaturan stop loss dan batasan posisi, juga diperlukan.

Arah optimasi strategi

  1. Optimasi parameter dinamis: parameter indikator strategi saat ini tetap, dapat dipertimbangkan untuk memperkenalkan mekanisme adaptasi, menyesuaikan parameter dinamis sesuai dengan perubahan kondisi pasar, untuk beradaptasi lebih baik dengan pasar.
  2. Optimasi sinyal kombinasi: Strategi saat ini terutama didasarkan pada satu indikator untuk menghasilkan sinyal perdagangan, Anda dapat mempertimbangkan untuk menggabungkan sinyal dari beberapa indikator, seperti kombinasi sinyal MA dan MACD, untuk meningkatkan keandalan dan kehandalan sinyal.
  3. Optimalisasi manajemen posisi: Strategi saat ini menggunakan manajemen posisi dengan rasio tetap, dan dapat mempertimbangkan untuk memperkenalkan metode yang lebih canggih seperti rumus Kelly atau strategi keseimbangan dinamis untuk mengoptimalkan ukuran posisi dan rasio risiko-keuntungan.
  4. Optimasi Stop Loss: Strategi saat ini tidak memiliki logika stop loss yang jelas, dapat dipertimbangkan untuk memasukkan mekanisme stop loss dinamis berbasis ATR atau persentase untuk mengendalikan risiko penurunan yang lebih baik.
  5. Optimalisasi multi-pasar: Strategi saat ini hanya untuk satu pasar, dapat dipertimbangkan untuk memperluas ke beberapa pasar yang terkait atau saling melengkapi, memanfaatkan hubungan antara pasar untuk meningkatkan stabilitas strategi dan tingkat pendapatan.

Optimasi di atas adalah dari sudut pandang meningkatkan adaptasi, stabilitas, keuntungan, dan pengendalian risiko strategi, dan terus meningkatkan dan menyempurnakan kinerja strategi dengan memperkenalkan metode yang lebih canggih dan fleksibel.

Meringkaskan

MA MACD BB Multi Indicator Trading Strategy Retest Tool adalah alat trading kuantitatif yang kaya fungsi, fleksibel dan praktis. Alat ini menangkap sinyal trading melalui tiga indikator teknis yang umum digunakan, sekaligus mendukung perdagangan dua arah multi-ruang dan manajemen risiko yang fleksibel, mampu beradaptasi dengan berbagai pasar dan gaya perdagangan. Pengguna dapat menggunakan alat ini untuk memantau dan mengoptimalkan data historis, atau menerapkannya untuk perdagangan saham. Meskipun setiap strategi menghadapi risiko pasar dan risiko model, dengan pengaturan parameter yang masuk akal, kontrol risiko yang ketat, dan perbaikan pengoptimalan terus menerus, strategi ini berpotensi menjadi pembantu bagi para trader yang berhasil, untuk menciptakan keuntungan yang stabil dalam jangka panjang.

Kode Sumber Strategi
/*backtest
start: 2023-05-28 00:00:00
end: 2024-06-02 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/
// © Future_Billi0naire_

//@version=5
strategy("MA MACD BB Backtester", overlay=true)

//@variable Input for Strategy
which_ta = input.string("MA", title="Select Indicator", options=["MACD", "BB", "MA"])
which_camp = input.string("Long", title="Select Long / Short", options=["Short", "Long"])

//@variable Input parameters for Risk Management
positionSize = input.float(100.0, title="Each position's capital allocation %", minval=0.0, maxval = 100.0) / 100

//@variable Input parameters for MACD
fast_length = input.int(12, title="MACD Fast Length")
slow_length = input.int(26, title="MACD Slow Length")
signal_smoothing = input.int(9, title="MACD Signal Smoothing")
macd_source = input.source(close, title="MACD Source")

//@variable Input parameters for Moving Average
ma_length = input.int(50, title="Moving Average Length")

//@variable Input parameters for Bollinger Bands
bb_length = input.int(20, title="Bollinger Bands Length")
bb_mult = input.float(2.0, title="Bollinger Bands Multiplier")

// Choosing the Strategy
int x = na
if which_ta == "MA"
    x := 1
else if which_ta == "MACD"
    x := 2
else if which_ta == "BB"
    x := 3

// Calculate MACD and Signal line
[macdLine, signalLine, _] = ta.macd(macd_source, fast_length, slow_length, signal_smoothing)

// Calculate Moving Average
ma = ta.sma(close, ma_length)

// Calculate Bollinger Bands
basis = ta.sma(close, bb_length)
dev = bb_mult * ta.stdev(close, bb_length)
upper = basis + dev
lower = basis - dev

// Plotting MACD and Signal lines
plot(x == 2 ? macdLine : na, color=color.blue, title="MACD Line")
plot(x == 2 ? signalLine : na, color=color.red, title="Signal Line")

// Plotting histogram
histogram = macdLine - signalLine
plot(x == 2 ? histogram : na, color=color.gray, style=plot.style_histogram, title="MACD Histogram")

// Plotting Moving Average
plot(x == 1 ? ma : na, color=color.orange, title="Moving Average")

// Plotting Bollinger Bands
plot(x == 3 ? upper : na, color=color.green, title="Upper Bollinger Band")
plot(x == 3 ? lower : na, color=color.red, title="Lower Bollinger Band")
plot(x == 3 ? basis : na, color=color.blue, title="Basis Bollinger Band")

// Generate buy signals
buySignalMACD = ta.crossover(macdLine, signalLine)
buySignalMA = ta.crossover(close, ma)
buySignalBB = close < lower
sellSignalBBExit = close > basis

// Generate sell signals
sellSignalMACD = ta.crossunder(macdLine, signalLine)
sellSignalMA = ta.crossunder(close, ma)
sellSignalBB = close > upper
buySignalBBExit = close < basis

// Plot buy signals on the chart
plotshape(series=buySignalMACD and x == 2 and which_camp=="Long" and strategy.opentrades == 0 ? buySignalMACD : na, title="Buy Signal MACD", location=location.belowbar, color=color.lime, style=shape.labelup, text="BUY MACD")
plotshape(series=buySignalMA and x == 1 and which_camp=="Long" and strategy.opentrades == 0 ? buySignalMA : na, title="Buy Signal MA", location=location.belowbar, color=color.lime, style=shape.labelup, text="BUY MA")
plotshape(series=buySignalBB and x == 3 and which_camp=="Long" and strategy.opentrades == 0 ? buySignalBB : na, title="Buy Signal BB", location=location.belowbar, color=color.lime, style=shape.labelup, text="BUY BB")

// Plot sell signals on the chart
plotshape(series=sellSignalMACD and x == 2 and which_camp=="Short" and strategy.opentrades == 0 ? sellSignalMACD : na, title="Sell Signal MACD", location=location.abovebar, color=color.red, style=shape.labeldown, text="SELL MACD")
plotshape(series=sellSignalMA and x == 1 and which_camp=="Short" and strategy.opentrades == 0 ? sellSignalMA : na, title="Sell Signal MA", location=location.abovebar, color=color.red, style=shape.labeldown, text="SELL MA")
plotshape(series=sellSignalBB and x == 3 and which_camp=="Short" and strategy.opentrades == 0 ? sellSignalBB : na, title="Sell Signal BB", location=location.abovebar, color=color.red, style=shape.labeldown, text="SELL BB")

// Calculate stop loss and take profit levels
accountSize = strategy.equity
positionSizeAmount = accountSize * positionSize

// Calculate order size based on stop loss amount
orderSize = math.floor(positionSizeAmount / close)

// Enter long positions based on buy signals
if strategy.opentrades == 0
    if (buySignalMACD) and x == 2 and which_camp == "Long"
        strategy.entry("Buy MACD", strategy.long, qty=orderSize)
    if (buySignalMA) and x == 1 and which_camp == "Long"
        strategy.entry("Buy MA", strategy.long, qty=orderSize)
    if (buySignalBB) and x == 3 and which_camp == "Long"
        strategy.entry("Buy BB", strategy.long, qty=orderSize)

// Enter short positions based on sell signals
if strategy.opentrades == 0
    if (sellSignalMACD) and x == 2 and which_camp == "Short"
        strategy.entry("Sell MACD", strategy.short, qty=orderSize)
    if (sellSignalMA) and x == 1 and which_camp == "Short"
        strategy.entry("Sell MA", strategy.short, qty=orderSize)
    if (sellSignalBB) and x == 3 and which_camp == "Short"
        strategy.entry("Sell BB", strategy.short, qty=orderSize)

// Close positions based on exit signals
if (sellSignalMACD) and which_camp == "Long"
    strategy.close("Buy MACD")
if (sellSignalMA) and which_camp == "Long"
    strategy.close("Buy MA")
if (sellSignalBBExit) and which_camp == "Long"
    strategy.close("Buy BB")
if (buySignalMACD) and which_camp == "Short"
    strategy.close("Sell MACD")
if (buySignalMA) and which_camp == "Short"
    strategy.close("Sell MA")
if (buySignalBBExit) and which_camp == "Short"
    strategy.close("Sell BB")