
O MA MACD BB Multi Indicator Trading Strategy Feedback Tool é uma plataforma de desenvolvimento e feedback de estratégias de negociação quantitativa de alto desempenho. Suporta o uso de três indicadores técnicos comuns: Moving Average (MA), Moving Average Convergence Scatter Indicator (MACD) e Bollinger Bands (BB), permitindo ao usuário a flexibilidade de escolher um deles como principal indicador de sinal de negociação.
O princípio central da estratégia é o uso de três indicadores técnicos comuns (MA, MACD e BB) para identificar tendências de mercado e sinais de negociação.
No momento da negociação, a estratégia calcula automaticamente o tamanho da posição de cada transação, de acordo com a direção de negociação escolhida pelo usuário (multi-cabeça ou cabeça) e a configuração de gerenciamento de fundos, e executa a correspondente operação de abertura de posição e posição de acordo com o sinal.
Para reduzir o risco acima, os usuários devem definir razoavelmente os parâmetros da estratégia, avaliar e ajustar a estratégia periodicamente, acompanhar de perto a movimentação do mercado e, se necessário, intervir manualmente. Além disso, são indispensáveis medidas rigorosas de gerenciamento de risco, como a configuração de stop loss e limites de posição.
A orientação de otimização acima é baseada principalmente na perspectiva de melhorar a adaptabilidade, a estabilidade, a rentabilidade e o controle do risco da estratégia, melhorando e aperfeiçoando continuamente o desempenho da estratégia por meio da introdução de métodos mais avançados e flexíveis.
A ferramenta de retrospecção de estratégias de negociação de múltiplos indicadores MA MACD BB é uma ferramenta de negociação quantitativa funcional e flexível. Captura sinais de negociação por meio de três indicadores técnicos comuns, ao mesmo tempo em que suporta negociação bidirecional e de múltiplos espaços e gerenciamento flexível de riscos, adaptando-se a diferentes mercados e estilos de negociação. O usuário pode usar a ferramenta para retrospecção e otimização de dados históricos, bem como aplicá-los à negociação em ações reais.
/*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")