
트렌드 리바이스 전문 전략은 다우시 이론의 핵심 원칙에 기반한 거래 시스템으로, 트렌드에서 확립된 리바이스 기회를 식별하고 거래하는 것을 목적으로 한다. 이 전략은 시장 구조 ((고위점과 저점의 중심축) 을 통해 트렌드 방향을 결정하고, 지수 이동 평균 ((EMA) 를 사용하여 리바이스가 출전할 때를 정확하게 결정한다. 거래 품질을 높이고 시장의 흔들림을 피하기 위해, 전략은 평균 방향 지수 ((ADX) 필터를 통합하여 트렌드가 충분한 동력을 가질 때만 거래하도록 한다.
이 전략의 논리는 크게 세 가지 핵심 단계로 나뉘어집니다.
1단계: 동향을 결정하는 것
2 단계: 입성 신호 (EMA로 회귀)
3단계: 확인과 위험 관리
lastPivotLow(마지막 하위 축)lastPivotHigh(최후의 고도 축)코드 분석을 통해, 이 전략은 다음과 같은 중요한 장점을 가지고 있다고 결론을 내릴 수 있습니다:
시장 구조에 기반한 트렌드 식별전략: 도스트 이론의 핵심 원칙을 사용하여 지표에 의존하는 대신 고점과 저점의 중심축을 통해 시장 추세를 파악하여 더 신뢰할 수있는 추세 확인을 제공합니다.
객관적인 입시 조건: 명확하게 정의된 가격과 EMA의 교차 관계를 통해 입시점을 결정하여 주관적인 판단을 줄이고 거래 결정을 더 일관되고 반복할 수 있도록합니다.
동적 위험 관리: 정지점은 고정된 비율이나 점수를 사용하는 대신 시장 구조에 따라 자동으로 설정됩니다. 이는 정지점이 현재 시장 상황에 적합하고 합리적인 것을 보장합니다.
유연한 수익 전략이중 정지 목표: 이중 정지 목표는 거래자가 초기 목표에 도달했을 때 수익의 일부를 잠금하는 동시에 더 큰 움직임을 잡기 위해 남은 포지션을 유지하도록 허용합니다.
시장 상태 필터ADX 필터: ADX 필터는 트렌드 없는 또는 약한 트렌드 시장에서 거래하는 것을 피하고, 트렌드 동력이 충분히 강할 때만 시장에 진입합니다.
매우 적응력이 좋다조정 가능한 매개 변수들 (축축 회귀 기간, EMA 길이 및 ADX 절벽과 같은) 을 통해, 전략은 다른 시장과 시간 프레임의 특성에 적응할 수 있습니다.
전체 거래 순환전략: 트렌드 식별, 입문 시점, 위험 관리, 퇴출 전략까지의 전체 거래 순환을 다루는 전략으로, 전체적인 거래 시스템을 제공합니다.
이 전략은 합리적으로 설계되었지만 몇 가지 잠재적인 위험과 한계가 있습니다.
트렌드 변화 지연: 축점 기반의 트렌드 식별은 본질적으로 지연되어 있으며, 트렌드가 반전되기 시작했을 때 트렌드 변화를 확인하는 결과를 초래할 수 있습니다. 이는 빠르게 변화하는 시장에서 특히 뚜렷합니다.
가짜 회신강세를 보인 경우, 가격이 EMA 수준으로 깊숙이 회수되지 않을 수 있으며, 이는 놓친 거래 기회를 초래할 수 있습니다. 반대로, 변동 시장에서는 여러 가지 가짜 회수 신호가 발생할 수 있습니다.
과도한 과열: 너무 높은 ADX 하락은 유리한 거래 기회를 놓칠 수 있으며, 너무 낮은 하락은 약한 트렌드 조건을 효과적으로 필터링 할 수 없습니다
매개변수 민감도전략 성능은 매개 변수 설정 (특히 축 회귀 기간 및 EMA 길이는) 에 매우 민감하며, 부적절한 매개 변수 선택은 전략의 부실한 성능을 초래할 수 있습니다.
시장환경의존성전략: 트렌드 시장을 위해 설계된 전략, 수평, 간격 또는 높은 변동성 시장에서 좋지 않을 수 있습니다.
위험 완화 방법:
코드 분석을 바탕으로 다음과 같은 몇 가지 최적화 방향을 제시할 수 있습니다.
적응 변수: 동적으로 축 회귀 기간과 EMA 길이를 조정하는 메커니즘을 구현하고, 시장의 변동성이나 트렌드 강도에 따라 이러한 매개 변수를 자동으로 조정하여 다양한 시장 환경에 적응합니다.
다중 시간 프레임 분석더 높은 시간 프레임의 통합 트렌드 확인, 더 큰 트렌드 방향으로 거래하는 것을 보장하고 역동적인 거래를 피합니다.
증가 추세 확인: 현재 HH/HL 및 LH/LL 모델 외에도 트렌드 라인, 이동 평균 기울기 또는 운동량 지표와 같은 다른 추세 확인 지표를 통합하는 것을 고려하십시오.
지능형 손해 관리: 거래가 유리하게 진행되면 자동으로 중지 위치를 이동하여 수익을 보호하기 위해 스톱 손실 추적 장치를 구현합니다.
시장의 변동성 조정: 현재 시장의 변동성에 따라 조정된 리스크 수익률과 스톱 거리, 높은 변동성이 있는 시장에서 더 보수적인 설정을 사용함
거래량 확인거래량 분석을 추가하여 중요한 가격 행동 전환점에서 충분한 거래량 지원을 보장하고 신호 신뢰성을 향상시킵니다.
시간 필터시간 필터링을 적용하여 중요한 보도 또는 시장 개시/폐쇄 시기와 같은 낮은 유동성 또는 높은 변동성으로 알려진 시간에 거래하는 것을 피하십시오.
일부 수익 메커니즘의 최적화현재 전략은 고정된 비율을 사용하여 부분 수익을 창출하고, 시장 조건에 따라 부분 수익을 조정하는 더 역동적인 방법을 고려할 수 있습니다.
이러한 최적화는 전략의 안정성, 적응성 및 전반적인 성능을 향상시키는데 도움이 될 것이며, 특히 다양한 시장 환경에서 수행될 것입니다.
트렌드 리터치 전문 전략은 다우시 이론의 기본 원칙과 현대 기술 분석 도구를 결합한 잘 구성된 거래 시스템입니다. 트렌드를 결정하기 위해 시장 구조, EMA를 식별하기 위해 리터치, 그리고 트렌드 강도를 보장하기 위해 ADX 필터를 사용하여 트렌드를 식별하는 전략은 높은 확률의 거래 기회를 식별하기 위해 전체적인 프레임 워크를 제공합니다.
이 전략의 주요 장점은 시장 구조에 기반한 객관적인 트렌드 식별, 명확한 진입 조건 및 동적의 위험 관리 방법이다. 그러나 사용자는 트렌드 식별 지연, 가짜 리모델링 신호 및 변수 민감성 등의 잠재적인 위험에 주의해야 한다.
적응 변수, 다중 시간 프레임 분석 및 강화형 손해 관리와 같은 제안의 최적화를 구현함으로써 전략은 더욱 개선될 수 있으며, 다양한 시장 조건에서 안정성과 성능을 향상시킬 수 있습니다.
궁극적으로, 모든 거래 전략의 성공은 철저한 피드백, 지속적인 모니터링 및 필요한 경우 조정에 달려 있습니다. 거래자는 모든 실시간 적용을 고려하기 전에 자신의 선호하는 금융 도구와 시간 프레임에 대한 전략을 완전히 테스트하는 것을 보장해야합니다.
//@version=5
strategy("Pullback Pro Dow Strategy v7 (ADX Filter)",
shorttitle="Pullback Pro v7 ADX",
overlay=true,
initial_capital=10000,
default_qty_type=strategy.percent_of_equity,
default_qty_value=10,
commission_type=strategy.commission.percent,
commission_value=0.04,
process_orders_on_close=true)
// --- Grouping ---
string GP_DOW = "① Dow Theory Settings"
string GP_ENTRY = "② Entry Logic (Pullback)"
string GP_RISK = "③ Risk & Exit Management"
string GP_FILTER = "④ Filters"
string GP_DISPLAY = "Display Settings"
// --- Dow Theory Settings ---
pivotLookback = input.int(10, title="Pivot Lookback Period", minval=1, group=GP_DOW)
// --- Entry Logic (Pullback) ---
pullbackEmaLength = input.int(21, title="Pullback EMA Length", group=GP_ENTRY, tooltip="このEMAへの価格の接近を「押し目/戻り」と判断します。")
// --- Risk & Exit Management ---
riskRewardRatio1 = input.float(1.5, "Take Profit 1 R:R", minval=0.1, step=0.1, group=GP_RISK, tooltip="TP1のリスクリワード比率")
qtyPercentTP1 = input.int(50, title="Take Profit 1 (%)", minval=1, maxval=100, group=GP_RISK, tooltip="TP1で決済するポジションの割合(%)")
riskRewardRatio2 = input.float(3.0, "Take Profit 2 R:R", minval=0.1, step=0.1, group=GP_RISK, tooltip="TP2のリスクリワード比率")
// --- Filters (Modified from RSI to ADX) ---
useAdxFilter = input.bool(true, title="Use ADX Trend Filter", group=GP_FILTER)
adxLength = input.int(14, "ADX Length", group=GP_FILTER)
adxThreshold = input.float(25, "ADX Threshold", group=GP_FILTER, tooltip="この値よりADXが大きい場合のみエントリーします。")
// --- Display Settings ---
showPivots = input.bool(true, title="Show Pivots", group=GP_DISPLAY)
showEma = input.bool(true, title="Show Pullback EMA", group=GP_DISPLAY)
// --- Indicator Calculations (Modified from RSI to ADX) ---
pivotHighPrice = ta.pivothigh(high, pivotLookback, pivotLookback)
pivotLowPrice = ta.pivotlow(low, pivotLookback, pivotLookback)
pullbackEma = ta.ema(close, pullbackEmaLength)
[diPlus, diMinus, adx] = ta.dmi(adxLength, adxLength) // ADX calculation
// --- Pivot & Trend Determination ---
var float lastPivotHigh = na, var float prevPivotHigh = na
var float lastPivotLow = na, var float prevPivotLow = na
if not na(pivotHighPrice)
prevPivotHigh := lastPivotHigh
lastPivotHigh := pivotHighPrice
if not na(pivotLowPrice)
prevPivotLow := lastPivotLow
lastPivotLow := pivotLowPrice
var int trendDirection = 0
if not na(lastPivotHigh) and not na(prevPivotHigh) and not na(lastPivotLow) and not na(prevPivotLow)
isUptrend = lastPivotHigh > prevPivotHigh and lastPivotLow > prevPivotLow
isDowntrend = lastPivotHigh < prevPivotHigh and lastPivotLow < prevPivotLow
if isUptrend
trendDirection := 1
else if isDowntrend
trendDirection := -1
else
trendDirection := 0
// --- Entry Conditions (Modified from RSI to ADX) ---
bool isUptrendConfirmed = trendDirection == 1
bool isDowntrendConfirmed = trendDirection == -1
bool buyPullback = isUptrendConfirmed and ta.crossunder(low, pullbackEma)
bool sellRally = isDowntrendConfirmed and ta.crossover(high, pullbackEma)
bool adxTrendOk = not useAdxFilter or adx > adxThreshold // ADX filter logic
bool goLong = buyPullback and adxTrendOk
bool goShort = sellRally and adxTrendOk
// --- Strategy State & Risk Management ---
var float stopLossPrice = na
var float takeProfitPrice1 = na
var float takeProfitPrice2 = na
var bool tp1_hit = false
// Entry Logic
if strategy.position_size == 0
tp1_hit := false // Reset TP1 flag on new trade
if goLong
stopLossPrice := lastPivotLow
riskSize = close - stopLossPrice
if riskSize > 0
takeProfitPrice1 := close + (riskSize * riskRewardRatio1)
takeProfitPrice2 := close + (riskSize * riskRewardRatio2)
strategy.entry("L", strategy.long)
if goShort
stopLossPrice := lastPivotHigh
riskSize = stopLossPrice - close
if riskSize > 0
takeProfitPrice1 := close - (riskSize * riskRewardRatio1)
takeProfitPrice2 := close - (riskSize * riskRewardRatio2)
strategy.entry("S", strategy.short)
// ▼▼▼【最終修正版 v7】決済ロジック ▼▼▼
if strategy.position_size > 0 // ロングポジション("L")の決済ロジック
// --- Stop Loss ---
if low <= stopLossPrice
strategy.close("L", comment="SL Hit")
tp1_hit := false
// --- Take Profit 1 ---
if not tp1_hit and high >= takeProfitPrice1
strategy.close("L", comment="TP1 Hit", qty_percent=qtyPercentTP1)
tp1_hit := true
// --- Take Profit 2 ---
if tp1_hit and high >= takeProfitPrice2
strategy.close("L", comment="TP2 Hit")
tp1_hit := false
if strategy.position_size < 0 // ショートポジション("S")の決済ロジック
// --- Stop Loss ---
if high >= stopLossPrice
strategy.close("S", comment="SL Hit")
tp1_hit := false
// --- Take Profit 1 ---
if not tp1_hit and low <= takeProfitPrice1
strategy.close("S", comment="TP1 Hit", qty_percent=qtyPercentTP1)
tp1_hit := true
// --- Take Profit 2 ---
if tp1_hit and low <= takeProfitPrice2
strategy.close("S", comment="TP2 Hit")
tp1_hit := false
// --- Plotting ---
plot(showEma ? pullbackEma : na, "Pullback EMA", color=color.orange)
plotshape(showPivots ? pivotHighPrice : na, style=shape.xcross, location=location.absolute, color=color.red, size=size.tiny)
plotshape(showPivots ? pivotLowPrice : na, style=shape.xcross, location=location.absolute, color=color.blue, size=size.tiny)