
이것은 두 개의 초 트렌드 시스템을 결합한 강력한 일일 단선 거래 전략이다. 이 전략은 동적 축 초 트렌드 (동적 하위 및 ATR 파동 대역에 기반한) 과 고전 초 트렌드 (전통 ATR 기반의 트렌드 추적 필터) 를 결합하여 거래하기 전에 강력한 트렌드 확인을 보장한다. 이 쌍 확인 메커니즘은 가짜 신호를 크게 줄여 거래의 정확성과 수익성을 향상시킵니다.
이 전략의 핵심은 두 가지 다른 슈퍼 트렌드 시스템을 결합하여 더 신뢰할 수 있는 거래 신호를 얻는 것입니다.
축 초 트렌드 시스템:
pivotPeriod변수)pivotCenter현재 축 중심 가격을 계산합니다.pivotATRMult동적 지원 및 저항 대역을 생성합니다.pivotTrend)클래식 초트렌드 시스템:
classicATRMult동적인 진동대를 생성하는 곱셈stTrend)입학 조건:
손해 방지 및 수익 목표:
코드는 이 전략의 전체 논리를 구현하고, 주문 관리와 시각 지표를 포함하고, 실제 거래에 적용하기 쉽다.
코드의 심층적인 분석을 통해, 이 전략은 다음과 같은 중요한 장점을 보여준다:
이중 트렌드 확인 메커니즘: 두 개의 초 트렌드 시스템을 동시에 확인하도록 함으로써 가짜 브레이크와 잘못된 신호를 크게 줄입니다. 이 이중 검증은 강력한 트렌드 변화만이 거래 신호를 유발할 수 있도록 보장합니다.
동적 적응 변수전략의 중지 및 수익 목표는 ATR 계산에 기반하여 시장의 실제 변동성에 따라 자동으로 조정할 수 있습니다. 이것은 변동성이 높은 시장에서 중지 지점은 그에 따라 확장되고, 변동성이 적은 시장에서는 강화되어 다른 시장 환경에 효과적으로 적응 할 수 있습니다.
중심점 트렌드 식별동적인 축점 (dynamic pivot point) 을 고정된 가격 수준보다 사용하여 트렌드를 파악하여 전략이 실제 시장 구조의 변화와 중요한 전환점을 더 잘 포착할 수 있도록 합니다.
고도 시각화이 전략은 색깔의 초 트렌드 라인 및 구매/판매 신호 표시와 같은 명확한 시각적 지표를 포함하고 있어 거래자가 거래 기회를 쉽게 식별할 수 있다.
전체적인 위험 관리: 자동으로 중지 및 수익 목표를 설정하여 수동 위험 관리의 필요성을 제거하고 거래 규율을 보장합니다.
단선 거래 최적화3~5분 차트 상의 짧은 라인 거래를 위해 설계되어 있으며, 높은 주파수 거래 환경과 일일 변동성을 포착하는 데 적합합니다.
예상된 재원 관리: 코드는 적절한 포지션 크기와 위험 통제를 유지하기 위해 계정 이득의 10%를 사용하여 거래하도록 설정되어 있습니다.
이 전략은 합리적으로 설계되었지만 다음과 같은 잠재적인 위험과 한계가 있습니다.
급격한 반전 위험: 높은 변동성이 있는 시장에서, 가격이 신호를 발동한 후 빠르게 반전될 수 있으며, 이로 인해 정지 손실이 유발됩니다.
상자 시장의 부진: 이중 초 트렌드 시스템은 명확한 트렌드에서 가장 잘 작동하지만, 수평 정리 시장에서 빈번한 잘못된 신호가 발생할 수 있습니다. 해결 방법: 추가 수평 시장 필터를 추가하십시오.
매개변수 민감도전략 성능은 여러 파라미터 설정에 크게 의존합니다. (ATR 주기와 곱하기 등) 해결 방법: 광범위한 역사 회신을 수행하여 특정 시장과 시간 프레임에 대한 최적의 파라미터 조합을 찾습니다.
유동성 의존: 단선 전략으로, 유동성이 낮은 시장이나 시간대에 슬라이드 포인트와 실행 문제가 발생할 수 있다. 해결 방법: 유동성이 높은 시간대에 거래 시간을 제한하거나 유동성 필터를 증가시킨다.
연속적인 손실 위험어떤 전략도 100%의 성공률을 보장하지 않으며, 연속적인 손실 거래가 발생할 수 있습니다. 해결 방법: 하루 최대 거래 수와 최대 손실 제한을 적용하여 과도한 거래와 자금 손실을 방지하십시오.
과대 최적화 위험: 전략에는 여러 개의 조정 가능한 매개 변수가 있으며, 과도한 최적화와 곡선 적합으로 이어질 수 있다. 해결 방법: 샘플 외 테스트와 전향 테스트를 사용하여 매개 변수의 안정성을 검증한다.
코드 분석을 바탕으로, 이 전략의 최적화 방향은 다음과 같습니다.
시장 환경 필터 추가: 통합된 시장 유형 식별 메커니즘 (ADX 또는 변동률 분석과 같은), 트렌드 또는 가로 시장에 맞게 전략을 자동으로 조정한다. 이러한 최적화는 단선 거래에 적합하지 않은 시장 환경에서 손실 거래를 크게 줄일 수 있다.
최적화 매개 변수가 적응: 역동적인 매개 변수 조정 메커니즘을 구현하여 최근 시장 성과에 따라 ATR 곱셈과 주기를 자동으로 최적화합니다. 이것은 수동 개입이 필요없이 전략이 시장 조건의 변화에 더 잘 적응할 수있게합니다.
통합 트래픽 분석: 입시 조건에 거래량 확인 요구 사항을 추가하여 가격 움직임이 충분한 시장 참여를 지원하도록하십시오. 거래량은 가격 행동의 중요한 확인 지표이며 신호 품질을 크게 향상시킬 수 있습니다.
시간 필터: 거래 시간 기반의 필터링 메커니즘을 구현하고, 가장 활발하고 가장 수익성이 높은 시장 시간 내에만 거래한다. 코드 코멘트에서 높은 거래량 시간 (예: 9:15 AM ~ 2:30 PM) 에서 거래하는 것이 권장되며, 이는 직접 프로그래밍 할 수 있다.
손해 방지 전략 개선더 복잡한 스톱 전략을 탐구하는 것, 예를 들어 스톱을 추적하는 것 또는 지지/저항 수준을 기반으로 하는 스톱은 단순한 ATR 곱하기보다 더 나은 위험 관리를 제공할 수 있다.
기계 학습 최적화: 전략이 가장 잘 작동하는 시장 조건을 식별하기 위해 기계 학습 알고리즘을 사용하는 것을 고려하거나, 역사적 데이터에 따라 최적화 매개 변수를 선택하십시오.
다중 시간 프레임 확인: 더 높은 시간 프레임의 트렌드 필터를 추가하여 더 큰 트렌드 방향의 짧은 라인 거래를 보장하고, 승률과 리스크 수익률을 향상시킵니다.
이러한 최적화는 전략이 더 안정적이고 다양한 시장 환경에 더 잘 적응할 수 있도록 해 줄 것이며, 동시에 두 가지의 동향 확인과 동적 위험 관리에 대한 핵심 장점을 유지할 것입니다.
이중 초상향 통합 ATR 자율적 동적 중지 전략은 두 개의 독립적인 초상향 지표를 결합하여 매우 신뢰할 수 있는 거래 신호를 제공하는 잘 설계된 단선 거래 시스템입니다. 이 전략의 주요 장점은 두 개의 확인 메커니즘으로 오류 신호를 크게 줄이고 ATR 기반의 동적 중지 및 수익 목표를 통해 효과적인 위험 관리를 제공합니다.
이 전략은 특히 일간 단선 거래자에게 적합하며 3-5 분 차트의 높은 유동성 거래 시간대에 가장 잘 작동합니다. 그러나 사용자는 가로판 시장에서 잠재적인 한계에 주의를 기울이고 전략의 성능을 더욱 향상시키기 위해 시장 환경 필터 및 거래량 확인과 같은 권장 사항을 최적화하여 실행하는 것을 고려해야합니다.
신중한 변수 조정과 적절한 위험 관리를 통해 이 전략은 거래자의 무기고에서 가치있는 도구가 될 수 있습니다. 특히 짧은 시간에 시장의 변동을 포착하려는 적극적인 거래자에게는 그렇습니다. 코드에 내장된 시각화 및 경고 기능은 실행 및 모니터링을 쉽게하고 전략의 모듈 디자인은 미래의 사용자 정의 및 개선을위한 좋은 토대를 제공합니다.
/*backtest
start: 2024-06-04 00:00:00
end: 2025-06-03 00:00:00
period: 3h
basePeriod: 3h
exchanges: [{"eid":"Futures_Binance","currency":"DOGE_USDT"}]
*/
//@version=6
strategy("🔥Scalping Fusion Strategy v6", overlay=true, default_qty_type=strategy.percent_of_equity, default_qty_value=10, initial_capital=10000)
// === INPUTS ===
pivotPeriod = input.int(2, "Pivot Point Period", minval=1)
pivotATRPeriod = input.int(10, "Pivot ATR Period")
pivotATRMult = input.float(3.0, "Pivot ATR Multiplier", step=0.1)
classicATRPeriod = input.int(10, "Classic SuperTrend ATR Period")
classicATRMult = input.float(3.0, "Classic SuperTrend ATR Multiplier", step=0.1)
useClassicATR = input.bool(true, "Use Classic ATR Calculation")
stSource = input.source(hl2, "Classic SuperTrend Source")
slATRMult = input.float(1.5, "Stoploss ATR Multiplier")
tpATRMult = input.float(3.0, "Target ATR Multiplier")
// === PIVOT SUPER TREND LOGIC ===
ph = ta.pivothigh(high, pivotPeriod, pivotPeriod)
pl = ta.pivotlow(low, pivotPeriod, pivotPeriod)
var float pivotCenter = na
pivotPoint = not na(ph) ? ph : not na(pl) ? pl : na
if not na(pivotPoint)
pivotCenter := na(pivotCenter) ? pivotPoint : (pivotCenter * 2 + pivotPoint) / 3
pivotATR = ta.atr(pivotATRPeriod)
pivotUpper = pivotCenter - pivotATRMult * pivotATR
pivotLower = pivotCenter + pivotATRMult * pivotATR
var float trailPivotUp = na
var float trailPivotDown = na
var int pivotTrend = 0
trailPivotUp := close[1] > nz(trailPivotUp[1], pivotUpper) ? math.max(pivotUpper, nz(trailPivotUp[1], pivotUpper)) : pivotUpper
trailPivotDown := close[1] < nz(trailPivotDown[1], pivotLower) ? math.min(pivotLower, nz(trailPivotDown[1], pivotLower)) : pivotLower
pivotTrend := close > nz(trailPivotDown[1]) ? 1 : close < nz(trailPivotUp[1]) ? -1 : nz(pivotTrend[1], 1)
pivotSuperTrend = pivotTrend == 1 ? trailPivotUp : trailPivotDown
// === CLASSIC SUPER TREND LOGIC ===
atrST = useClassicATR ? ta.atr(classicATRPeriod) : ta.sma(ta.tr(true), classicATRPeriod)
stUpper = stSource - classicATRMult * atrST
stLower = stSource + classicATRMult * atrST
stUpper1 = nz(stUpper[1], stUpper)
stLower1 = nz(stLower[1], stLower)
stUpper := close[1] > stUpper1 ? math.max(stUpper, stUpper1) : stUpper
stLower := close[1] < stLower1 ? math.min(stLower, stLower1) : stLower
var int stTrend = 1
stTrend := close > stLower1 ? 1 : close < stUpper1 ? -1 : stTrend
classicSuperTrend = stTrend == 1 ? stUpper : stLower
// === ENTRY CONDITIONS ===
buySignal = pivotTrend == 1 and stTrend == 1 and pivotTrend[1] == -1
sellSignal = pivotTrend == -1 and stTrend == -1 and pivotTrend[1] == 1
// === ATR-BASED SL/TP ===
atrSLTP = ta.atr(14)
longSL = close - slATRMult * atrSLTP
longTP = close + tpATRMult * atrSLTP
shortSL = close + slATRMult * atrSLTP
shortTP = close - tpATRMult * atrSLTP
// === STRATEGY ORDERS ===
if (buySignal and strategy.position_size <= 0)
strategy.entry("Long", strategy.long)
strategy.exit("Exit Long", from_entry="Long", stop=longSL, limit=longTP)
if (sellSignal and strategy.position_size >= 0)
strategy.entry("Short", strategy.short)
strategy.exit("Exit Short", from_entry="Short", stop=shortSL, limit=shortTP)
// === VISUALS ===
plot(pivotSuperTrend, title="Pivot SuperTrend", color=pivotTrend == 1 ? color.lime : color.red, linewidth=2)
plot(classicSuperTrend, title="Classic SuperTrend", color=stTrend == 1 ? color.green : color.maroon, linewidth=2, style=plot.style_linebr)
plotshape(buySignal, title="Buy Signal", location=location.belowbar, color=color.green, style=shape.labelup, text="BUY", textcolor=color.white, size=size.small)
plotshape(sellSignal, title="Sell Signal", location=location.abovebar, color=color.red, style=shape.labeldown, text="SELL", textcolor=color.white, size=size.small)
// === ALERTS ===
alertcondition(buySignal, title="Buy Alert", message="🔥 DILL Strategy Buy Signal")
alertcondition(sellSignal, title="Sell Alert", message="🔥 DILL Strategy Sell Signal")