리소스 로딩... 로딩...

거래 전략에 따른 적응 범위 변동성 경향

저자:차오장, 날짜: 2024-11-28 17:24:30
태그:WPRRSISMAATR추세

img

전반적인 설명

이 전략은 변동성과 윌리엄스 퍼센트 레인지 지표를 결합한 적응 트렌드 추적 전략이다. 이 전략은 가격 범위 및 사용자 지정 카운터를 계산하여 트렌드 결정 감도를 조정하여 다른 시장 조건에 더 나은 적응력을 달성합니다. 핵심 메커니즘은 가격 변동성에 기반한 윌리엄스 지표 매개 변수를 동적으로 조정하여 시장 트렌드 전환 지점을 더 정확하게 파악하는 것을 포함합니다.

전략 원칙

이 전략은 기간 내에 가격 범위와 이동 평균 (AvgRange) 을 계산하는 것으로 시작됩니다. 평균 변동 범위와 실시간 가격 변화를 비교함으로써 중요한 변동 빈도를 기록하기 위해 두 개의 카운터 (TrueCount 및 TrueCount2) 를 설정합니다. 이러한 카운터는 윌리엄스 지표 계산 매개 변수를 동적으로 조정하는 데 사용됩니다. 이는 전략이 시장 변동 조건에 따라 민감도를 자동으로 조정할 수 있도록합니다. 조정된 윌리엄스 지표 값이 미리 설정된 임계치를 넘어서면 구매 또는 판매 신호가 생성됩니다.

전략적 장점

  1. 강력한 적응력 - 전략은 변동성 적응 메커니즘을 통해 다른 시장 환경에서 안정적인 성과를 유지합니다.
  2. 포괄적 리스크 제어 - 내장된 리스크 매개 변수 (RISK parameter) 는 거래자가 리스크 선호도에 따라 전략 공격성을 조정할 수 있도록 합니다.
  3. 명확한 신호 - 거짓 신호를 피하기 위해 명확한 돌파 신호 메커니즘을 사용합니다.
  4. 좋은 확장성 - 전략 프레임 워크는 최적화를 위해 다른 기술적 지표의 통합을 허용
  5. 높은 계산 효율성 - 실시간 거래에 적합한 간단하고 효율적인 계산 방법을 사용합니다.

전략 위험

  1. 매개 변수 민감도 - ASClength 및 RISK 매개 변수 선택은 전략 성과에 상당한 영향을 미칩니다.
  2. 시장 환경 의존성 - 변동 시장에서 과도한 거래 신호를 생성할 수 있습니다.
  3. 지연 - 이동 평균의 사용은 출입 및 출출 지연을 유발할 수 있습니다.
  4. 거짓 파업 - 높은 변동성 기간 동안 거짓 신호가 발생할 수 있습니다. 리스크를 줄이기 위해 역 테스트를 통해 매개 변수를 최적화하고 다른 확인 지표와 결합하는 것이 좋습니다.

최적화 방향

  1. 부피 지표를 포함 - 부피 분석을 통해 트렌드 변화의 타당성을 확인
  2. 역 논리를 최적화 - 시장 변동성을 평가하기 위해 더 복잡한 통계 방법을 사용하는 것을 고려하십시오.
  3. 스톱 로스 메커니즘 추가 - 더 나은 위험 통제를 위해 동적 스톱 로스 구현을 제안
  4. 시장 환경 필터링 - 부적절한 조건에서 거래를 피하기 위해 시장 조건 평가 모듈을 추가
  5. 매개 변수 적응 - 전략 적응력을 향상시키기 위해 매개 변수 자동 최적화 메커니즘을 개발

요약

이 혁신적인 전략은 변동성 분석과 트렌드 추적을 결합하여 적응 메커니즘을 통해 전략 안정성과 신뢰성을 향상시킵니다. 고유한 위험이 존재하지만 전략은 적절한 매개 변수 설정 및 최적화 구현을 통해 다양한 시장 조건에서 안정적인 성능을 유지할 수 있습니다. 전략 프레임워크는 더 많은 확장과 최적화를 허용하며 좋은 개발 잠재력을 보여줍니다.


/*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")

관련

더 많은