이 전략은 변동성과 윌리엄스 퍼센트 레인지 지표를 결합한 적응 트렌드 추적 전략이다. 이 전략은 가격 범위 및 사용자 지정 카운터를 계산하여 트렌드 결정 감도를 조정하여 다른 시장 조건에 더 나은 적응력을 달성합니다. 핵심 메커니즘은 가격 변동성에 기반한 윌리엄스 지표 매개 변수를 동적으로 조정하여 시장 트렌드 전환 지점을 더 정확하게 파악하는 것을 포함합니다.
이 전략은 기간 내에 가격 범위와 이동 평균 (AvgRange) 을 계산하는 것으로 시작됩니다. 평균 변동 범위와 실시간 가격 변화를 비교함으로써 중요한 변동 빈도를 기록하기 위해 두 개의 카운터 (TrueCount 및 TrueCount2) 를 설정합니다. 이러한 카운터는 윌리엄스 지표 계산 매개 변수를 동적으로 조정하는 데 사용됩니다. 이는 전략이 시장 변동 조건에 따라 민감도를 자동으로 조정할 수 있도록합니다. 조정된 윌리엄스 지표 값이 미리 설정된 임계치를 넘어서면 구매 또는 판매 신호가 생성됩니다.
이 혁신적인 전략은 변동성 분석과 트렌드 추적을 결합하여 적응 메커니즘을 통해 전략 안정성과 신뢰성을 향상시킵니다. 고유한 위험이 존재하지만 전략은 적절한 매개 변수 설정 및 최적화 구현을 통해 다양한 시장 조건에서 안정적인 성능을 유지할 수 있습니다. 전략 프레임워크는 더 많은 확장과 최적화를 허용하며 좋은 개발 잠재력을 보여줍니다.
/*backtest start: 2024-10-28 00:00:00 end: 2024-11-27 00:00:00 period: 1h basePeriod: 1h exchanges: [{"eid":"Futures_Binance","currency":"BTC_USDT"}] */ //@version=5 strategy("ASCTrend", shorttitle="ASCTrend", overlay=true, default_qty_type=strategy.percent_of_equity, default_qty_value=100) eternalfg = input(false, title="eternal 確定") eternal = eternalfg ? 1 : 0 ASClength = input.int(title="ASC Length", minval=4, defval=10) RISK = input.int(title="RISK", minval=0, defval=3) // Custom sum function customSum(source, length) => sum = 0.0 for i = 0 to length - 1 sum := sum + source[i] sum x1 = 67 + RISK x2 = 33 - RISK Range = ta.highest(ASClength) - ta.lowest(ASClength) AvgRange = ta.sma(Range, ASClength) CountFg = math.abs(open - close) >= AvgRange * 2.0 ? 1 : 0 TrueCount = customSum(CountFg, ASClength) CountFg2 = math.abs(close[3] - close) >= AvgRange * 4.6 ? 1 : 0 TrueCount2 = customSum(CountFg2, ASClength - 3) wpr3RR = ta.wpr(3 + RISK + RISK) wpr3 = ta.wpr(3) wpr4 = ta.wpr(4) WprAbs = 100 + (TrueCount2 > 0 ? wpr4 : TrueCount > 0 ? wpr3 : wpr3RR) ASC_Trend = 0 ASC_Trend := WprAbs[eternal] < x2[eternal] ? -1 : WprAbs[eternal] > x1[eternal] ? 1 : ASC_Trend[1] if (ta.crossover(ASC_Trend, 0)) strategy.entry("Long", strategy.long) if (ta.crossunder(ASC_Trend, 0)) strategy.entry("Short", strategy.short) plotshape(ta.crossover(ASC_Trend, 0), location=location.belowbar, color=color.green, style=shape.triangleup, size=size.small, text="B", textcolor=color.white) plotshape(ta.crossunder(ASC_Trend, 0), location=location.abovebar, color=color.red, style=shape.triangledown, size=size.small, text="S", textcolor=color.white) alertcondition(ta.crossover(ASC_Trend, 0), title="ASC_Trend UP", message="ASC_Trend UP") alertcondition(ta.crossunder(ASC_Trend, 0), title="ASC_Trend Down", message="ASC_Trend Down")