
MA MACD BB 다중 지표 거래 전략 재검토 도구는 강력한 기능의 양적 거래 전략 개발 및 재검토 플랫폼이다. 이 도구는 세 가지 일반적인 기술 지표를 사용하도록 지원한다. 이동 평균 ((MA), 이동 평균 수렴 스패드 지표 ((MACD) 및 브린 밴드 ((BB), 사용자는 주요 거래 신호 지표 중 하나를 선택할 수 있습니다.
이 전략의 핵심 원칙은 시장의 경향과 거래 신호를 식별하기 위해 세 가지 일반적인 기술 지표 (MA, MACD, BB) 를 사용하는 것입니다. 구체적으로:
특정 거래시, 전략은 사용자가 선택한 거래 방향 (중단 또는 공단) 과 자금 관리 설정에 따라 각 거래의 포지션 크기를 자동으로 계산하고, 신호에 따라 해당하는 개시 및 포지션 작업을 수행합니다.
위와 같은 위험을 줄이기 위해 사용자는 합리적으로 전략 매개 변수를 설정하고 정기적으로 전략을 평가하고 조정하며 시장 움직임에 주의를 기울이며 필요한 경우 인적 개입을해야합니다. 또한, 정지 손실 및 위치 제한 등의 엄격한 위험 관리 조치가 필수적입니다.
위 최적화 방향은 주로 전략의 적응성, 안정성, 수익성 및 제어 위험을 향상시키는 관점에서 출발하며, 더 진보된 유연한 방법을 도입하여 전략의 성능을 지속적으로 개선하고 개선합니다.
MA MACD BB 다중 지표 거래 전략 재검토 도구는 기능이 풍부하고 유연한 실용적인 양적 거래 도구입니다. 그것은 3 가지의 일반적인 기술 지표를 통해 거래 신호를 캡처하고, 동시에 다중 공간 양방향 거래와 유연한 위험 관리를 지원하며, 다양한 시장과 거래 스타일에 적응할 수 있습니다. 사용자는 이 도구를 사용하여 역사적 데이터를 재검토하고 최적화 할 수 있으며 실물 거래에도 적용 할 수 있습니다.
/*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")