Alat ujian balik strategi dagangan berbilang penunjuk MA MACD BB

MA MACD BB
Tarikh penciptaan: 2024-06-03 09:49:08 Akhirnya diubah suai: 2024-06-03 09:49:08
Salin: 0 Bilangan klik: 684
1
fokus pada
1617
Pengikut

Alat ujian balik strategi dagangan berbilang penunjuk MA MACD BB

Gambaran keseluruhan

MA MACD BB Multi Indicator Trading Strategy Feedback Tool adalah platform pengembangan dan pengembalian strategi perdagangan kuantitatif yang kuat. Alat ini menyokong penggunaan tiga indikator teknikal yang biasa digunakan: Moving Average ((MA), Moving Average Convergence Scatter Indicator ((MACD) dan Bollinger Band ((BB), dan pengguna mempunyai fleksibiliti untuk memilih salah satu daripadanya sebagai indikator isyarat perdagangan utama.

Prinsip Strategi

Prinsip utama strategi ini adalah menggunakan tiga petunjuk teknikal yang biasa digunakan (MA, MACD dan BB) untuk mengenal pasti trend pasaran dan isyarat perdagangan. Secara khusus:

  1. Apabila pengguna memilih MA sebagai penunjuk utama, strategi akan mengira purata bergerak untuk tempoh yang ditetapkan, menghasilkan isyarat beli dan jual apabila harga naik atau turun melalui purata bergerak.
  2. Apabila pengguna memilih MACD sebagai penunjuk utama, strategi akan mengira nilai MACD dan garisan isyarat, menghasilkan isyarat beli dan jual apabila MACD melintasi atau melintasi garisan isyarat. Selain itu, strategi juga akan memetakan carta MACD untuk menunjukkan kekuatan trend dengan lebih intuitif.
  3. Apabila pengguna memilih BB sebagai penunjuk utama, strategi akan mengira tren atas dan bawah di Brin Belt, menghasilkan isyarat beli apabila harga menembusi tren bawah, menghasilkan isyarat jual apabila ia menembusi tren atas, dan melonggarkan kedudukan apabila ia kembali ke sekitar tren tengah.

Pada masa perdagangan tertentu, strategi akan mengira saiz kedudukan setiap perdagangan secara automatik mengikut arah perdagangan pilihan pengguna (paling banyak atau kosong) dan tetapan pengurusan wang, dan kemudian melakukan operasi kedudukan terbuka dan kedudukan yang sesuai berdasarkan isyarat.

Kelebihan Strategik

  1. Fleksibiliti penunjuk: Pengguna boleh secara fleksibel memilih MA, MACD atau BB sebagai penunjuk perdagangan utama, mengikut pilihan dan ciri pasaran mereka sendiri, untuk menyesuaikan diri dengan gaya perdagangan dan persekitaran pasaran yang berbeza.
  2. Perdagangan dua hala: Strategi ini menyokong perdagangan dua hala yang banyak, pengguna dapat memilih arah perdagangan secara fleksibel mengikut trend pasaran, bukan sahaja dapat memperoleh keuntungan dalam keadaan naik, tetapi juga mendapat peluang untuk mendapatkan keuntungan dalam keadaan turun.
  3. Risiko boleh dikawal: Pengguna boleh menyesuaikan peratusan dana untuk setiap urus niaga, mengawal risiko setiap urus niaga, dan strategi akan mengira saiz kedudukan setiap urus niaga secara automatik berdasarkan baki akaun, untuk mengelakkan risiko yang berlebihan.
  4. Kejelasan isyarat: Strategi ini menggunakan petunjuk teknikal yang biasa digunakan untuk menghasilkan isyarat perdagangan yang jelas dan objektif, dan dengan paparan grafik yang jelas, pengguna dapat mengenal pasti arah trend dan masa perdagangan.
  5. Kemudahan Retrospeksi: Pengguna boleh menggunakan alat ini untuk retrospeksi data sejarah, menilai dan mengoptimumkan prestasi strategi dengan cepat, dan memberikan rujukan penting untuk perdagangan dalam talian.

Risiko Strategik

  1. Risiko pasaran: Mana-mana strategi perdagangan menghadapi risiko turun naik dan ketidakpastian pasaran, dan strategi ini tidak terkecuali. Jika pasaran mengalami turun naik yang kuat atau tingkah laku yang tidak rasional, ia mungkin menyebabkan strategi menghasilkan isyarat dan kerugian yang salah.
  2. Risiko parameter: Prestasi strategi ini bergantung kepada parameter penunjuk yang dipilih oleh pengguna, seperti kitaran MA, kitaran garis laju MACD, kitaran dan lebar BB, dan sebagainya. Tetapan parameter yang tidak sesuai boleh menyebabkan kesan strategi yang tidak baik.
  3. Risiko overfit: Jika pengguna terlalu mengoptimumkan parameter strategi dalam tinjauan balik, ia boleh menyebabkan strategi terlalu tertumpu pada data sejarah tertentu dan tidak berfungsi dengan baik di pasaran sebenar, iaitu masalah kecocokan.
  4. Risiko Black Swan: Strategi ini bergantung kepada petunjuk teknikal untuk menghasilkan isyarat perdagangan, dan jika terdapat perubahan asas yang besar atau peristiwa melampau di pasaran, strategi ini mungkin tidak dapat bertindak balas tepat pada masanya, menyebabkan kerugian besar.

Untuk mengurangkan risiko di atas, pengguna harus menetapkan parameter strategi yang munasabah, menilai dan menyesuaikan strategi secara berkala, sambil mengikuti pergerakan pasaran dengan teliti, melakukan intervensi manual jika perlu. Selain itu, langkah-langkah pengurusan risiko yang ketat seperti menetapkan hentian kerugian dan had kedudukan juga diperlukan.

Arah pengoptimuman strategi

  1. Pengoptimuman parameter dinamik: parameter penunjuk strategi semasa tetap, mekanisme penyesuaian diri boleh dipertimbangkan, menyesuaikan parameter secara dinamik mengikut perubahan keadaan pasaran, untuk menyesuaikan diri dengan pasaran.
  2. Optimasi isyarat gabungan: Strategi semasa adalah untuk menghasilkan isyarat perdagangan berdasarkan satu petunjuk. Anda boleh mempertimbangkan untuk menggabungkan isyarat dari beberapa petunjuk, seperti isyarat gabungan MA dan MACD, untuk meningkatkan kebolehpercayaan dan kestabilan isyarat.
  3. Pengendalian kedudukan yang dioptimumkan: Strategi semasa menggunakan pengendalian kedudukan dengan peratusan tetap, boleh mempertimbangkan untuk memperkenalkan kaedah yang lebih maju seperti formula Kelly atau strategi keseimbangan dinamik untuk mengoptimumkan saiz kedudukan dan nisbah risiko-keuntungan.
  4. Pengoptimuman Hentikan Kerosakan: Strategi semasa tidak mempunyai logik Hentikan yang jelas, boleh mempertimbangkan untuk memasukkan mekanisme Hentikan Dinamik berdasarkan ATR atau peratusan untuk mengawal risiko penurunan yang lebih baik.
  5. Pengoptimuman pelbagai pasaran: Strategi ini hanya ditujukan kepada satu pasaran sahaja, tetapi ia boleh diperluaskan kepada beberapa pasaran yang berkaitan atau saling melengkapi, menggunakan hubungan antara pasaran untuk meningkatkan kestabilan strategi dan tahap pendapatan.

Arah pengoptimuman di atas adalah terutamanya dari sudut meningkatkan adaptasi strategi, kestabilan, keuntungan dan kawalan risiko, dengan memperkenalkan kaedah fleksibel yang lebih maju, terus meningkatkan dan menyempurnakan prestasi strategi.

ringkaskan

MA MACD BB alat pengesanan strategi perdagangan pelbagai indikator adalah alat perdagangan kuantitatif yang berfungsi, fleksibel dan praktikal. Ia menangkap isyarat perdagangan melalui tiga petunjuk teknikal yang biasa digunakan, sambil menyokong perdagangan dua hala dan pengurusan risiko yang fleksibel, mampu menyesuaikan diri dengan pasaran dan gaya perdagangan yang berbeza. Pengguna boleh menggunakan alat ini untuk mengesan dan mengoptimumkan data sejarah, dan juga boleh menggunakannya untuk perdagangan saham. Walaupun strategi apa pun menghadapi risiko pasaran dan risiko model, dengan penetapan parameter yang munasabah, kawalan risiko yang ketat, dan penambahbaikan pengoptimuman berterusan, strategi ini berpotensi menjadi pembantu kepada peniaga untuk menghasilkan keuntungan yang stabil dalam jangka panjang.

Kod 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")