
적응형 ATR 트래킹 스톱 로드 쌍보드 브레이크 양적 거래 전략은 고전적인 기술 형태 인식과 현대적인 양적 위험 관리를 결합한 거래 시스템이다. 이 전략은 시장에서 쌍보드 역전 형태를 식별하는 데 중점을 두고 있으며, 수익을 보호하고 손실을 제한하기 위해 동적 ATR (평균 실제 변동幅度) 트래킹 스톱 로드 메커니즘을 활용한다. 이 전략은 50주기 지수 이동 평균 (EMA) 을 트렌드 필터로 통합하여 거래 방향이 주류와 일치하도록 보장하고 거래 성공률을 높인다.
이 전략의 핵심 원칙은 가격 구조의 이중 바닥 형태를 기반으로 거래하는 것입니다. 이 클래식 기술 분석 형태는 일반적으로 하향 추세가 끝나고 상승으로 전환 될 수 있음을 나타냅니다. 전략 구현은 주로 다음과 같은 몇 가지 핵심 구성 요소를 포함합니다.
이중 하위 형태 인식: 축적 낮은 (Pivot Low) 기술을 활용하여 시장의 이중 바닥 구조를 자동으로 탐지한다. 전략은 최근 세 개의 낮은 곳을 추적하여 첫 번째와 세 번째 낮은 곳의 가격 수준이 가깝고 두 번째 낮은 곳의 두 가지 낮은 곳보다 높은 두 번째 낮은 곳의 두 번째 낮은 곳의 차이가 설정된 범위 내에서 확인됩니다.
EMA 트렌드 필터선택적으로 50주기 EMA를 트렌드 확인 도구로 사용한다. 가격이 EMA 위에 있을 때만 더 많은 입장이 허용되며, 거래 방향이 더 큰 트렌드와 일치하도록 한다.
ATR 변동성 평가전략: ATR 지표를 계산하고 모니터링합니다. 시장의 변동성이 최소의 하락점에 도달했을 때만 입장을 고려합니다. 너무 낮은 변동성이있는 시장에서 잘못된 신호를 피하십시오.
동적 추적 중지: ATR 기반의 추적 스톱 메커니즘을 사용하여 스톱 레벨은 가격 상승에 따라 자동으로 조정되며, 수익을 보호하면서 가격에 충분한 호흡 공간을 제공합니다. 스톱 거리는 현재 ATR 값을 사용자 정의의 곱으로 곱하여 사용자 정의의 곱으로 결정되며, 다양한 시장 환경에서 변동하는 특성에 적응 할 수 있습니다.
날짜 범위 제어: 전략에는 회귀 날짜 범위를 제어하는 기능이 내장되어 있으며, 사용자가 회귀의 역사적 범위를 정확하게 정의하여 전략의 다양한 시장 단계에서 수행을 평가할 수 있습니다.
형태와 트렌드의 조화이 전략은 트렌드 인식과 EMA 트렌드 필터링을 결합하여 높은 품질의 거래 신호를 필터링 할 수 있으며, 트렌드가 지원되는 경우에만 입문하여 승률을 크게 향상시킵니다.
자율적 위험 관리ATR 기반의 다이내믹 트래킹 스톱 메커니즘은 시장의 현재 변동성에 따라 자동으로 스톱 레벨을 조정하여 다양한 변동 환경에서 적절한 위험 관리를 제공하는 전략의 큰 특징입니다.
변동성 필터최소 ATR 임계값을 설정함으로써, 전략은 불안정한 시장 환경에서 거래를 피하고, 낮은 변동성 동안 발생할 수 있는 가짜 침입 신호를 줄입니다.
고도의 사용자 정의전략: 이 전략은 축주기, 격차 비율, ATR 길이, 스톱 로드 배수 등과 같은 여러 가지 조정 가능한 매개 변수를 제공하여 사용자가 다른 거래 유형과 개인 위험 선호도에 따라 최적의 조정을 할 수 있습니다.
실시간 경보 시스템: 내장된 JSON 형식의 경고 기능은 정책이 외부 시스템 (예를 들어 자동 거래 플랫폼 또는 알림 서비스) 과 원활하게 통합되어 실시간 모니터링 및 실행을 용이하게 합니다.
시각적 추적 손실전략: 전략은 스톱로스 라인을 추적하는 시각적 표시를 제공하여 거래자가 현재의 위험 수준과 잠재적 인 퇴출 지점을 직관적으로 이해할 수 있도록 도와줍니다.
가짜 침입 위험: 트렌드 필터링 및 변동성 요구 사항이 사용되었음에도 불구하고, 이중 하위 형태는 여전히 가짜 브레이크 신호를 생성할 수 있습니다. 특히 수평 정리 구역이나 시장 소음이 많은 환경에서. 해결 방법은 형태 확인 요구 사항을 추가하거나 브레이크 이후 입문 후 반향 확인을 지연하는 것입니다.
매개변수 민감도전략 성능은 변수 설정에 민감하다. 잘못된 변수 설정은 과도한 거래 또는 유효한 신호를 놓치게 할 수 있다. 광범위한 역사 재검토를 통해 특정 거래 품종에 가장 적합한 변수 조합을 결정하는 것이 좋습니다.
트렌드 의존성: 전략은 명확한 추세 시장에서 가장 잘 작동하며, 수평 정리 또는 자주 변하는 시장 환경에서 좋지 않을 수 있습니다. 전략은 시장 유형 식별 논리를 추가하여 전략을 최적화 할 수 있으며, 다른 시장 상태에서 다른 거래 매개 변수를 적용하거나 거래를 중지 할 수 있습니다.
한방 거래 제한: 현재 전략은 단지 다중 거래를 지원하고, 하락시장의 기회를 잡지 못합니다. 이것은 곰 시장이나 장기적인 하락 추세에서 잠재적인 수익 기회를 놓치게 할 수 있습니다.
공중에서 뛰어내리는 위험을 막는 것: 급격한 시장의 변동이나 중요한 뉴스 발표 후, 가격은 오픈을 뛰어넘어 직접적으로 중지 수준을 돌파 할 수 있으며, 실제 중지 가격이 예상 수준보다 훨씬 낮아 거래 손실을 증가시킵니다. 이 전략을 사용할 때 최대 중지 범위를 추가 보호로 설정하는 것을 고려하는 것이 좋습니다.
양방향 거래 확대: 현재 전략은 다기능만을 구현하고 있으며, 이중 정상 형태 인식 논리를 추가하여 적폐 기능을 구현할 수 있으며, 전략이 하락 시장에서 똑같이 효과적일 수 있도록 하여 전반적인 거래 기회를 증가시키고 자금 활용 효율성을 높일 수 있습니다.
다중 시간 프레임 분석다중 시간 프레임 분석을 도입하면 전략의 안정성을 크게 향상시킬 수 있습니다. 예를 들어, 더 높은 시간 프레임의 트렌드 방향을 주요 필터링 조건으로 사용하며, 낮은 시간 프레임에서 입시 신호를 찾습니다. 이러한 “ 위에서 아래로”의 방법은 일반적으로 신호 품질을 향상시킬 수 있습니다.
추가 확정 지표 통합: 상대적으로 강한 지표 ((RSI), 무작위 지표 ((Stochastic) 또는 거래량 분석과 같은 추가적인 기술 지표를 확인 도구로 통합하는 것이 고려 될 수 있습니다. 거래하기 전에 여러 지표가 공동으로 확인되어야 함으로써 가짜 돌파의 위험을 줄일 수 있습니다.
동적 위치 관리: 시장의 변동성과 거래 확신에 기반한 동적 포지션 관리 시스템을 구현하여 신호 강도가 높거나 시장 조건이 더 유리할 때 포지션을 증가시키고, 반대로 노출을 줄여서 자본 효율성과 리스크 조정 후 수익을 최적화 할 수 있습니다.
시장 상태 적응성: 시장 상태 인식 모듈을 개발하여 전략이 현재 시장이 추세, 흔들림 또는 전환 상태인지 자동으로 식별하고 다른 상태에 따라 거래 매개 변수를 조정하거나 거래를 중지하여 전략의 환경 적응성을 향상시킬 수 있도록합니다.
기계 학습 최적화: 기계 학습 기술을 사용하여 파라미터 선택 및 형태 인식 프로세스를 최적화하는 것을 고려하십시오. 예를 들어, 모델이 가장 성공할 가능성이있는 쌍기둥 형태 특성을 식별하도록 훈련하거나 다른 시장 조건에 대한 최적의 파라미터 조합을 자동으로 선택할 수 있습니다.
손해 방지 전략의 정교화: 거래가 특정 수익 수준을 달성 한 후 손실을 비용 라인으로 올리는 또는 수익을 보호하면서 가격에 충분한 변동 공간을 제공하는 수익 잠금 메커니즘을 설정하는 등 단계적 인 손실 중단 전략을 구현 할 수 있습니다.
자기 적응 ATR 스톱 트래킹 쌍방향 돌파구 양적 거래 전략은 전통적인 기술 분석이념과 현대적인 양적 거래 기술을 결합한 체계적인 거래 방법이다. 그것은 시장의 쌍방향 반전 형태를 식별하고 EMA 트렌드 필터링과 ATR 변동성 평가를 결합하여 고품질의 다중 신호를 생성한다. 전략의 핵심 장점은 자기 적응 위험 관리 시스템, 특히 ATR 기반의 동적 추적 스톱 메커니즘에 있으며, 시장의 변동성에 따라 보호 수준을 자동으로 조정할 수 있다.
이 전략에는 단방향 거래만 지원하고 파라미터 설정에 대한 민감성 같은 제한이 있음에도 불구하고, 2방향 거래 확장, 다중 시간 프레임 분석 및 동적 포지션 관리와 같은 권장 된 최적화 방향으로 이러한 제한을 효과적으로 극복 할 수 있습니다. 전략의 고도의 사용자 정의가 다른 거래 품종과 시장 환경에 적응 할 수있게 해줍니다.
전략의 원리를 깊이 이해하고 개인 거래 스타일에 따라 적절히 조정하면 거래자는 이 전략을 안정적인 거래 시스템으로 발전시킬 수 있으며 합리적인 위험 통제를 유지하면서 시장의 역전 기회를 잡을 수 있습니다.
/*backtest
start: 2024-06-24 00:00:00
end: 2025-06-22 08:00:00
period: 1d
basePeriod: 1d
exchanges: [{"eid":"Futures_Binance","currency":"BTC_USDT"}]
*/
//@version=6
strategy("Double Bottom Strategy (Long Only, ATR Trailing Stop + Alerts)", overlay=true, default_qty_type=strategy.percent_of_equity, default_qty_value=10)
// === INPUTS === //
prd = input.int(5, "Pivot Period")
tolerance = input.float(15.0, "Tolerance %", step=0.1)
atrLen = input.int(14, "ATR Length")
atrMult = input.float(1.5, "Trailing Stop ATR Multiplier")
minAtr = input.float(0.1, "Minimum ATR to enter trade")
useEMAFilter= input.bool(true, "Use 50 EMA Trend Filter?")
showTrail = input.bool(true, "Show Trailing Stop Line")
// === INDICATORS === //
atr = ta.atr(atrLen)
ema50 = ta.ema(close, 50)
trail_offset = atr * atrMult
// === BACKTEST DATE RANGE === //
startYear = input.int(2020, "Start Year")
startMonth = input.int(1, "Start Month")
startDay = input.int(1, "Start Day")
endYear = input.int(2025, "End Year")
endMonth = input.int(12, "End Month")
endDay = input.int(31, "End Day")
inDateRange = (time >= timestamp(startYear, startMonth, startDay, 00, 00)) and
(time <= timestamp(endYear, endMonth, endDay, 23, 59))
// === PIVOT LOWS === //
pl = ta.pivotlow(low, prd, prd)
// === TRACK LAST 3 LOWS === //
var float p1 = na
var float p2 = na
var float p3 = na
var int i1 = na
var int i2 = na
var int i3 = na
if not na(pl)
p1 := p2
p2 := p3
p3 := pl
i1 := i2
i2 := i3
i3 := bar_index
// === TRAILING STOP LINE HANDLE === //
var line trailLine = na
// === DOUBLE BOTTOM LOGIC === //
doubleBottom = not na(p1) and not na(p2) and not na(p3) and
(math.abs(p1 - p3) / p1 * 100 <= tolerance) and
(p2 > p1 and p2 > p3)
// === ENTRY CONDITIONS === //
isTrendOk = not useEMAFilter or (close > ema50)
isVolatilityOk = atr >= minAtr
entryCondition = doubleBottom and isTrendOk and isVolatilityOk
// === STRATEGY ENTRY + ALERT === //
if inDateRange and entryCondition and strategy.position_size == 0
strategy.entry("Long", strategy.long)
strategy.exit("Trailing Stop", from_entry="Long", trail_price=high, trail_offset=trail_offset)
// === EXIT ALERT === //
exitCondition = strategy.closedtrades > 0 and strategy.closedtrades.exit_bar_index(strategy.closedtrades - 1) == bar_index