MA MACD BB 다중 지표 거래 전략 백테스팅 도구는 강력한 양적 거래 전략 개발 및 백테스팅 플랫폼입니다. 이 도구는 일반적으로 사용되는 세 가지 기술 지표를 지원합니다. 이동 평균 (MA), 이동 평균 컨버전스 디버전스 (MACD), 볼링거 밴드 (BB). 사용자는 그 중 하나를 주요 거래 신호 지표로 유연하게 선택할 수 있습니다. 동시에 이 도구는 긴 및 짧은 거래를 지원합니다. 사용자는 시장 트렌드에 따라 긴 또는 짧은 것을 유연하게 선택할 수 있습니다. 위험 관리 측면에서 도구는 사용자가 더 나은 통제를 위해 각 거래의 자본 비율을 유연하게 설정 할 수 있습니다. 또한 도구는 사용자에게 자세한 위험 지표 분석 및 신호 생성 기능을 제공하여 거래 기회를 더 잘 파악할 수 있습니다.
이 전략의 핵심 원칙은 시장 추세와 거래 신호를 식별하기 위해 세 가지 일반적인 기술 지표 (MA, MACD 및 BB) 를 사용하는 것입니다. 구체적으로:
실제 거래에서 전략은 사용자가 선택한 거래 방향 (장 또는 단) 및 자본 관리 설정을 기반으로 각 거래의 위치 크기를 자동으로 계산하고 신호에 따라 해당 오픈 및 종료 작업을 실행합니다.
위의 위험을 줄이기 위해 사용자는 전략 매개 변수를 합리적으로 설정하고 전략을 정기적으로 평가하고 조정하며 시장 동향을 면밀히 모니터링하고 필요한 경우 수동으로 개입해야합니다. 또한 중지 손실 및 위치 제한을 설정하는 것과 같은 엄격한 위험 관리 조치가 필수적입니다.
위의 최적화 방향은 주로 전략의 성능을 지속적으로 개선하고 완성하기 위해 더 진보되고 유연한 방법을 도입함으로써 전략 적응력, 안정성, 수익성 및 위험 통제를 향상시키는 데 중점을 둡니다.
MA MACD BB 다중 지표 거래 전략 백테스팅 도구는 기능이 풍부하고 유연하고 실용적인 양적 거래 도구입니다. 그것은 세 가지 일반적인 기술적 지표를 통해 거래 신호를 캡처하며, 장기 및 단기 거래 및 유연한 위험 관리를 지원하며, 다른 시장과 거래 스타일에 적응합니다. 사용자는이 도구를 사용하여 역사 데이터를 백테스트하고 최적화 할 수 있으며 라이브 거래에도 적용 할 수 있습니다. 모든 전략이 시장 위험과 모델 위험에 직면하고 있지만 합리적인 매개 변수 설정, 엄격한 위험 통제 및 지속적인 최적화 및 개선을 통해이 전략은 양적 거래자에게 강력한 보조자가 될 것으로 예상되며 장기적으로 안정적인 수익을 창출 할 수 있습니다.
/*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")