
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 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:
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.
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 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.
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.
/*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")