
ADX와 Supertrend 기반의 지속적 입문 거래 전략은 방향 지표와 트렌드 확인 도구를 결합한 양적 거래 방법이며, 이 전략은 평균 방향 지표 ((ADX), 방향 이동 지표 ((DMI) 와 Supertrend 지표를 통합하고, 거래량 가중된 주문 블록 ((Order Block) 분석을 보조하여, 포괄적인 거래 시스템을 구축한다. 이 전략은 지속적 조건 검증 메커니즘을 특히 강조한다. 즉, 여러 가지 기술적 조건이 충족되면 거래 신호가 촉발됩니다. 이 방법은 거래 품질을 효과적으로 향상시키고 잘못된 신호의 발생률을 감소시킵니다.
이 전략의 핵심 논리는 다음과 같은 몇 가지 핵심 구성 요소에 기반합니다.
ADX와 DMI 지표 분석: 시스템은 ADX 지표를 사용하여 시장 추세 강도를 측정하고 +DI와 -DI 값을 비교하여 추세 방향을 결정한다. ADX 값이 설정된 하락값 (설정 25 이하) 보다 높으면 시장이 강한 추세를 나타냅니다.
수퍼트렌드 확정슈퍼트렌드 지표는 2차 트렌드 확인 도구로, 보이스 신호 ((트렌드 == -1) 를 표시할 때 구매를 지원하고, 보이스 신호 ((트렌드 == 1) 를 표시할 때 판매를 지원한다. 슈퍼트렌드의 변화는 또한 탈퇴 신호의 촉발 조건으로 사용됩니다.
수량 가중 주문 블록: 전략은 거래량에 기반한 동적 지원 및 저항 구역 식별 메커니즘을 도입한다. 거래량이 평균 수준을 초과하는 특정 배수 (설정값 2배) 와 가격이 지역 최고점 또는 최저점에 도달하면, 시스템은 이러한 지역을 잠재적인 주문 블록으로 표시하고, 설정된 시간 동안 (설정값 15주기) 유효성을 유지한다.
지속성 조건 검증전략의 가장 독특한 부분은 지속 조건 검증 메커니즘입니다. 시스템은 4 개의 불 표시를 통해 거래 조건을 추적합니다. 트렌드 조건, ADX 조건, DMI 조건 및 지역 조건입니다. 모든 조건이 충족되면 거래 신호가 유발됩니다. 이 메커니즘은 거래가 최적의 시장 환경에서 이루어지도록 보장합니다.
구매 조건:
판매 조건:
탈퇴 논리: 수퍼트렌드 지표가 트렌드 방향을 바꾸면, 전략은 현재 지위를 청산한다.
다중 인증 메커니즘: 여러 기술 지표를 통합함으로써, 전략은 가짜 신호를 크게 줄이고 거래의 정확도를 향상시킵니다. 특히 ADX와 Supertrend의 결합은 트렌드의 강도를 보장하고 명확한 방향을 제공합니다.
지속성 조건 검증전략의 지속성 검증 메커니즘은 시스템이 모든 조건이 성숙할 때 다시 작동하도록 허용하며, 단일 신호에 따라 거래를 유발하지 않습니다. 이 디자인은 전략의 안정성을 크게 향상시키고, 불리한 시장 조건에서 불필요한 거래를 줄입니다.
동적 지원과 저항 식별: 거래량에 기반한 주문 블록 분석은 전략에 동적인 지원 및 저항 참고를 제공하여 거래 결정을 시장 미시 구조에 더 가깝게하고 핵심 가격 영역에서 역동적인 거래를 피합니다.
명확한 탈퇴 메커니즘이 전략은 Supertrend 반향을 탈퇴 신호로 사용하여 객관적이고 적시에 정지 및 중지 방법을 제공하며 거래 당 위험을 효과적으로 관리합니다.
매우 적응력이 좋다: 여러 조정 가능한 매개 변수를 통해, 전략은 다른 시장 환경과 거래 품종에 적응할 수 있으며, 실용성과 유연성을 강화한다.
매개변수 민감도전략의 효과는 크게 변수 설정에 의존한다. ADX 길이는, Supertrend 배수 및 ATR 주기와 같은 변수 선택이 전략의 성과에 중요한 영향을 미칩니다. 부적절한 변수 설정은 과도한 거래 또는 중요한 기회를 놓치게 할 수 있습니다.
추세 반전 위험다중 확증 메커니즘을 사용함에도 불구하고, 강력한 시장 역전 또는 높은 변동 환경에서는 전략이 뒤쳐질 위험이 있습니다. 해결책은 변동율 필터를 도입하거나 다른 시장 변동 상태에 적응하기 위해 ADX 값을 동적으로 조정하는 것을 고려하는 것입니다.
성량 이상 위험: 전략은 거래량 분석에 의존하며, 거래량 이상 (즉, 급격한 비정상적인 대량 거래량) 의 경우 잘못된 주문 블록 식별이 발생할 수 있습니다. 해결 방법은 거래량 평형 처리를 추가하거나 추가적인 변칙 탐지 메커니즘을 도입하는 것입니다.
과대 최적화 위험: 전략이 여러 가지 조정 가능한 매개 변수를 포함하고 있기 때문에 지나치게 최적화 될 수 있으며, 전략은 역사적 데이터에서 잘 작동하지만 실제 거래에서는 효과가 없습니다. 해결책은 전략의 안정성을 보장하기 위해 전향 테스트와 샘플 외부 테스트를 채택하는 것입니다.
유동성 위험: 저 유동성 시장에서, 많은 거래는 슬라이드 또는 주문 실행 지연으로 인해 전략 효과에 영향을 미칠 수 있습니다. 해결책은 낮은 유동성 환경에서 추가 유동성 필터 조건을 추가하거나 포지션 크기를 조정하는 것입니다.
동적 변수 조정: 전략은 시장의 변동성에 따라 ADX 마이너스 및 슈퍼트렌드 파라미터를 자동으로 조정하도록 추가적으로 최적화 할 수 있습니다. 예를 들어, 높은 변동 기간 동안 ADX 마이너스를 높여서 가짜 돌파 신호를 줄일 수 있습니다. 낮은 변동 기간 동안 마이너스를 낮추고 민감성을 높일 수 있습니다. 이러한 적응 메커니즘은 전략을 다른 시장 단계에 더 잘 적응시킬 수 있습니다.
시간 필터 통합: 시간 필터를 도입하면 시장이 열리고, 닫히거나 유동성이 떨어지는 시간에 거래하는 것을 피할 수 있다. 이 최적화는 특히 일일 거래 전략에 적용되며, 시장 소음으로 인한 불필요한 거래를 크게 줄일 수 있다.
다중 시간 프레임 분석: 더 높은 시간 프레임의 트렌드 정보를 통합함으로써, 전략은 거래 방향이 더 큰 트렌드와 일치하도록 보장할 수 있습니다. 예를 들어, 당일 선의 트렌드와 시간 선의 트렌드 방향이 일치하는 경우에만 거래를 수행하면, 이득률을 높이고 역행 거래의 위험을 줄일 수 있습니다.
위험 관리 강화현재 전략의 탈퇴 메커니즘은 비교적 간단하며, 이동식 중지, 손실 비율 필터 또는 변동성에 기반한 중지 지점 계산을 추가하여 위험 관리를 강화할 수 있습니다. 이러한 개선은 이익을 더 잘 보호하고 거래 당 위험을 제어 할 수 있습니다.
시장 상태 분류시장 상태 분류 메커니즘을 도입하여 전략이 정리 기간, 트렌드 기간 및 높은 변동 기간과 같은 다른 시장 환경을 식별하고 그에 따라 거래 논리를 조정할 수 있도록합니다. 이러한 최적화는 전략에 적합하지 않은 시장 조건에서 거래하는 것을 피할 수 있으며 전략의 안정성을 더욱 향상시킵니다.
ADX와 Supertrend 기반의 지속적 입시 거래 전략은 여러 기술 지표와 고유한 지속적 조건 검증 메커니즘을 통합하여 포괄적이고 안정적인 거래 시스템을 구축합니다. 전략은 이상적인 시장 조건에서 거래를하는 것을 특히 강조하며 많은 일반적인 잘못된 신호 함정을 피합니다. ADX, DMI 및 Supertrend의 조합을 사용하여 전략은 강력한 트렌드 환경을 효과적으로 식별하고 올바른 거래 방향을 결정할 수 있습니다.
이 전략은 여러 장점이 있음에도 불구하고, 사용자는 변수 감수성, 트렌드 리버스 위험 및 과도한 최적화와 같은 잠재적인 문제에 주의를 기울여야 합니다. 동적 변수 조정, 다중 시간 프레임 분석 및 강화 된 위험 관리 메커니즘을 도입함으로써 전략에는 큰 최적화 공간이 있습니다.
/*backtest
start: 2024-07-22 00:00:00
end: 2025-07-20 08:00:00
period: 1d
basePeriod: 1d
exchanges: [{"eid":"Futures_Binance","currency":"ETH_USDT","balance":2000000}]
*/
// This Pine Script™ code is subject to the terms of the Mozilla Public License 2.0 at https://mozilla.org/MPL/2.0/
// © algostudio
//Code Generated using PineGPT - www.marketcalls.in
//@version=6
strategy("ADX + Supertrend Persistent Entry Logic", overlay=true, default_qty_type=strategy.percent_of_equity, default_qty_value=10, process_orders_on_close=true, calc_on_every_tick=true, max_bars_back=500)
// === INPUTS === //
adxLen = input.int(7, "ADX Length")
dilen = input.int(7, "+DI/-DI Length")
adxThresh = input.float(25, "ADX Threshold")
supertrendFactor = input.float(2.0, "Supertrend Multiplier", minval=0.1)
supertrendLen = input.int(7, "Supertrend ATR Length")
volLookback = input.int(10, "Volume Zone Lookback")
volMult = input.float(2.0, "Volume Threshold Multiplier")
zoneDuration = input.int(15, "Zone Display Duration")
// === ADX AND DI CALCULATION === //
[plusDI, minusDI, adx] = ta.dmi(dilen, adxLen)
// === SUPER TREND CALCULATION === //
[supertrend, trend] = ta.supertrend(supertrendFactor, supertrendLen)
bullishSupertrendShift = trend == -1 and trend[1] == 1
bearishSupertrendShift = trend == 1 and trend[1] == -1
// === DYNAMIC ORDER BLOCK ZONES (Volume weighted) === //
volThreshold = ta.sma(volume, volLookback) * volMult
volHighs = high == ta.highest(high, 5) and volume > volThreshold
volLows = low == ta.lowest(low, 5) and volume > volThreshold
obSupportValid = ta.valuewhen(volLows, low, 0)
bbResistanceValid = ta.valuewhen(volHighs, high, 0)
obSupportStart = ta.valuewhen(volLows, bar_index, 0)
bbResistanceStart = ta.valuewhen(volHighs, bar_index, 0)
obSupportEnd = obSupportStart + zoneDuration
bbResistanceEnd = bbResistanceStart + zoneDuration
inObZone = bar_index >= obSupportStart and bar_index <= obSupportEnd
inBbZone = bar_index >= bbResistanceStart and bar_index <= bbResistanceEnd
// === PLOT ZONES === //
plot(inObZone ? obSupportValid : na, title="OB Support Line", color=color.green, linewidth=2)
plot(inBbZone ? bbResistanceValid : na, title="BB Resistance Line", color=color.red, linewidth=2)
plot(supertrend, color=trend == 1 ? color.red : color.green, title="Supertrend")
// === PERSISTENT FLAGS === //
var bool buyTrendMet = false
var bool buyAdxMet = false
var bool buyDiMet = false
var bool buyZoneClear = false
var bool sellTrendMet = false
var bool sellAdxMet = false
var bool sellDiMet = false
var bool sellZoneClear = false
// === READY FLAGS (declare early to resolve use-before-declare issues) === //
buyReady = buyTrendMet and buyAdxMet and buyDiMet and buyZoneClear
sellReady = sellTrendMet and sellAdxMet and sellDiMet and sellZoneClear
// Track condition flags
buyTrendMet := trend == -1 ? true : buyTrendMet
buyAdxMet := adx > adxThresh ? true : (buyReady ? buyAdxMet : false)
buyDiMet := plusDI > minusDI ? true : buyDiMet
buyZoneClear := not inBbZone ? true : buyZoneClear
sellTrendMet := trend == 1 ? true : sellTrendMet
sellAdxMet := adx > adxThresh ? true : (sellReady ? sellAdxMet : false)
sellDiMet := minusDI > plusDI ? true : sellDiMet
sellZoneClear := not inObZone ? true : sellZoneClear
// Recalculate readiness after condition updates
buyReady := buyTrendMet and buyAdxMet and buyDiMet and buyZoneClear
sellReady := sellTrendMet and sellAdxMet and sellDiMet and sellZoneClear
// === STRATEGY ENTRIES === //
if buyReady
strategy.entry("Buy", strategy.long)
buyTrendMet := false
buyAdxMet := false
buyDiMet := false
buyZoneClear := false
if sellReady
strategy.entry("Sell", strategy.short)
sellTrendMet := false
sellAdxMet := false
sellDiMet := false
sellZoneClear := false
// === STRATEGY EXITS === //
if strategy.position_size > 0 and trend == 1
strategy.close("Buy")
if strategy.position_size < 0 and trend == -1
strategy.close("Sell")
// === PLOTS === //
plotshape(buyReady, location=location.belowbar, color=color.green, style=shape.labelup, text="BUY")
plotshape(sellReady, location=location.abovebar, color=color.red, style=shape.labeldown, text="SELL")
// For more tutorials on Tradingview Pinescript visit , visit https://www.marketcalls.in/category/tradingview