이 전략은 볼링거 밴드, 이동 평균 및 MACD를 결합하여 비교적 완전한 거래 시스템을 형성합니다. 시장 트렌드를 판단하는 동안 일부 역전 기회를 포착 할 수도 있습니다.
이 전략은 트라이앵글 앵커링 트렌드 추적 전략 (Triangle Anchoring Trend Tracking Strategy) 이라고 불립니다. 이 이름은 트렌드 방향과 앵커 입구 지점을 결정하기 위해 세 가지 기술적 지표를 사용하는 것을 강조합니다.
기본적인 거래 논리는 다음과 같습니다.
트렌드 방향을 판단합니다. 시장이 상승 추세 또는 하락 추세 단계인지 결정하기 위해 볼링거 미드 밴드, EMA 및 MACD 제로 라인을 비교하십시오.
진입 기회를 찾습니다. 트렌드가 확인된 후, 전략은 EMA가 BB 미드 밴드를 넘고 MACD 히스토그램이 신호선을 넘어서 진입을 결정하는지 확인합니다.
수익 목표 및 스톱 손실을 설정합니다. 입력 한 후 고정 목표 및 스톱 손실 수준은 미리 설정됩니다.
이 전략의 가장 큰 장점은 트렌드, 이동 평균 및 MACD 도구를 동시에 사용하여 결정을 내리는 것입니다. 이것은 시장 추진력에 대한 더 정확한 판단을 허용하고 또한 일부 반전을 파악하는 데 도움이됩니다.
첫째, BB Mid Band 는 현재 주요 트렌드 방향을 명확히 반영합니다. EMA의 역할은 트렌드의 진행을 추적하는 것입니다. 그들의 비교와 조합은 더 정확한 트렌드 식별을 가능하게합니다.
둘째, BB 자체는 강한 앙벨로프 특성을 가지고 있습니다. 중간 대역 주변의 영역은 또한 특정 지원/저항 수준을 나타냅니다. 따라서 EMA 크로스오버는 신호 값을 가지고 있습니다.
또한, MACD는 상승/하락 동력의 증가와 감소를 측정합니다. 그 절대 크기는 높은 또는 낮은 군중 감정을 나타냅니다. 또한 잠재적 인 반전을 암시합니다.
마지막으로, 미리 설정된 수익 목표와 스톱 로스는 개별 거래의 위험/이익을 통제하고 전반적인 안정성을 보장합니다.
여러 분석 도구가 사용되었음에도 불구하고 주요 위험은 다음과 같습니다.
부적절한 BB 매개 변수는 주요 추세를 명확히 반영하지 못합니다.
EMA 시스템은 긴 신호를 주지만 MACD는 분명히 긍정적으로 변하지 않으며 하락세력이 확대될 수 있습니다.
이윤 목표/손실 중지 범위가 너무 넓고, 단일 거래 손실이 넓어집니다.
주요 해결책은 다음과 같습니다.
BB 매개 변수를 조정하여 중부 대역이 주요 트렌드를 효과적으로 반영하도록 합니다.
더 많은 기술적 지표를 도입하여 황소/곰 동력을 판단합니다.
역사적인 거래를 평가하고 수익 목표 / 스톱 손실을 최적화하십시오.
이 전략은 다음과 같은 측면에서 더 향상될 수 있습니다.
KDJ, ATR 등과 같은 더 많은 지표를 도입하여 트렌드 판단을 돕고 정확도를 향상시킵니다.
더 정교한 스톱을 구현하십시오.
다양한 제품들의 성능을 평가하고, 다양한 시장 조건에 맞게 매개 변수를 조정합니다.
테스트 및 트위크 전략은 다양한 시간 프레임과 시장에서 백테스트 결과를 기반으로합니다.
자동 매개 변수 최적화 및 동적 전략 업데이트를 위한 기계 학습을 통합합니다.
이 전략은 BB, MA 및 MACD를 함께 활용합니다. 명확한 트렌드 판단, 특정 봉투 특성을 가지고 있으며 몇 가지 반전을 포착합니다. 입출입을 판단하는 더 많은 보조 도구로 더 신뢰할 수있는 성능을 달성 할 수 있습니다. 이 전략의 추가 평가와 향상은 보장되며 강력한 수치 도구를 생산 할 것으로 예상됩니다.
/*backtest start: 2024-01-04 00:00:00 end: 2024-02-03 00:00:00 period: 2h basePeriod: 15m exchanges: [{"eid":"Futures_Binance","currency":"BTC_USDT"}] */ //@version=5 strategy("Combined Strategy", overlay=true, shorttitle="Comb Strat", default_qty_type=strategy.percent_of_equity, default_qty_value=10) // Precio de beneficio y Stop Loss takeProfitTicks = 87636 stopLossTicks = 53350 // Bollinger Bands + EMA length_bb = input(150, title="BB Length") src_bb = input(close, title="BB Source") mult = input(2.0, title="BB StdDev") basis = ta.sma(src_bb, length_bb) dev = mult * ta.stdev(src_bb, length_bb) upper = basis + dev lower = basis - dev len_ema = input(34, title="EMA Length") src_ema = input(close, title="EMA Source") out_ema = ta.ema(src_ema, len_ema) typeMA = input("SMA", title="Method") smoothingLength = input(5, title="Length") var float smoothingLine = na if (typeMA == "SMA") smoothingLine := ta.sma(out_ema, smoothingLength) else if (typeMA == "EMA") smoothingLine := ta.ema(out_ema, smoothingLength) // MACD fast_length = input(title="Fast Length", defval=9) slow_length = input(title="Slow Length", defval=17) src_macd = input(title="Source", defval=close) signal_length = input.int(title="Signal Smoothing", minval=1, maxval=50, defval=9) sma_source = input.string(title="Oscillator MA Type", defval="EMA", options=["SMA", "EMA"]) sma_signal = input.string(title="Signal Line MA Type", defval="EMA", options=["SMA", "EMA"]) fast_ma = sma_source == "SMA" ? ta.sma(src_macd, fast_length) : ta.ema(src_macd, fast_length) slow_ma = sma_source == "SMA" ? ta.sma(src_macd, slow_length) : ta.ema(src_macd, slow_length) macd = fast_ma - slow_ma signal = sma_signal == "SMA" ? ta.sma(macd, signal_length) : ta.ema(macd, signal_length) hist = macd - signal // Condiciones de compra y venta longCondition = (out_ema > basis) and (macd > signal) and (signal > 0) shortCondition = (out_ema < basis) and (macd < signal) and (signal < 0) // Variables de estado var bool longExecuted = na var bool shortExecuted = na // Estrategia if (longCondition and not longExecuted) strategy.entry("Long", strategy.long) longExecuted := true shortExecuted := na if (shortCondition and not shortExecuted) strategy.entry("Short", strategy.short) shortExecuted := true longExecuted := na // Take Profit y Stop Loss para Compras y Ventas Cortas strategy.exit("Take Profit/Close Long", from_entry="Long", profit=takeProfitTicks, loss=stopLossTicks) strategy.exit("Take Profit/Close Short", from_entry="Short", profit=takeProfitTicks, loss=stopLossTicks) // Cierre de posiciones cuando la dirección cambia if ((out_ema < basis) and (macd < signal)) strategy.close("Long") longExecuted := na if ((out_ema > basis) and (macd > signal)) strategy.close("Short") shortExecuted := na // Plots plot(basis, "BB Basis", color=#FF6D00) plot(upper, "BB Upper", color=color.new(#2962FF, 0.5)) plot(lower, "BB Lower", color=color.new(#2962FF, 0.5)) plot(smoothingLine, title="Smoothing Line", color=#f37f20, linewidth=2) hline(0, "Zero Line", color=color.new(#787B86, 50)) plot(hist, title="Histogram", style=plot.style_columns, color=(hist >= 0 ? (hist[1] < hist ? color.green : color.red) : (hist[1] < hist ? color.red : color.green))) plot(macd, title="MACD", color=color.blue) plot(signal, title="Signal", color=color.orange)