정규화된 위험 가치 동적 임계값 거래 전략

SMA ATH ATL 风险归一化 动态阈值 止损策略 价格偏离度
생성 날짜: 2025-06-13 11:16:39 마지막으로 수정됨: 2025-06-13 11:16:39
복사: 0 클릭수: 251
avatar of ianzeng123 ianzeng123
2
집중하다
319
수행원

정규화된 위험 가치 동적 임계값 거래 전략 정규화된 위험 가치 동적 임계값 거래 전략

개요

통일적 위험 가치 동적 하락 거래 전략은 가격과 장기 이동 평균의 편차를 기반으로 한 양적 거래 방법이다. 이 전략은 현재 가격과 374주기 간단한 이동 평균의 상수적 차이를 계산하고 통일적 처리를 통해 0에서 1 사이의 위험 지표를 얻는다. 위험 값이 특정 하락 값보다 낮으면 전략은 시장 위험이 낮고 더하기 적합하다고 생각하며, 위험 값이 특정 하락 값보다 높으면 전략은 시장 위험이 높고 더하기 적합하다고 생각한다.

전략 원칙

이 전략의 핵심 원칙은 위험값을 통일하여 시장의 위험 상태를 수치화하여 거래 결정을 안내하는 것입니다. 구체적인 계산 단계는 다음과 같습니다:

  1. 374주기의 간단한 이동 평균 ((SMA) 을 계산하여 장기 동향을 기준으로 한다.
  2. 현재 종전 가격과 374주기 SMA의 대수차를 계산하고 시간 인자 ((bar_index의 0.395배) 를 곱하면 원시 위험값을 얻는다.
  3. 원시 위험값의 역사적인 최고점 (ATH) 과 최저점 (ATL) 을 추적하고 기록한다.
  4. 원본 위험값을 일원화하여 0에서 1 사이의 범위를 표준화한다.
  5. 상식화 위험값에 따라 다른 거래 마이너스를 설정합니다:
    • 0.3 이하의 리스크 값: 구매 신호를 유발합니다.
    • 위험 값이 0.6 또는 0.7 이상: 평평한 다중 신호를 유발
    • 0.7 이상의 위험도: 트리거가 판매 신호입니다.
    • 위험값 0.4 이하: 공허 신호를 발동한다

이 전략은 또한 단일 거래의 최대 손실을 제어하기 위해 고정 점수 ((5) 점) 의 중지 손실 메커니즘을 설정합니다. 또한, 전략은 태그 기능을 통해 차트에 다양한 신호 위치를 직관적으로 표시하여 거래자가 잠재적인 거래 기회를 식별 할 수 있습니다.

전략적 이점

  1. 위험의 양: 통일적 처리를 통해 복잡한 시장 상태를 0-1 사이의 위험 지표로 단순화하고, 직관적으로 이해하기 쉽고, 거래 결정을 편리하게합니다.

  2. 적응력: 역사적 최고점과 최저점을 사용하여 통일하여 지표가 다른 시장 환경과 주기적 특성에 적응할 수 있도록 하며 고정된 매개 변수의 한계를 피한다.

  3. 평균값 회귀 원리이 전략은 가격의 장기 평균선에서 벗어난 정도를 기준으로 과매매를 판단하고, 금융 시장의 평균값 회귀 특성에 부합한다.

  4. 시간적 요소 조정: 시간 인자를 도입하여 ((bar_index의 0.395배), 위험 계산이 시간이 지남에 따라 동적으로 조정되어 시장의 진화 법칙에 더 적합합니다.

  5. 위험 관리 메커니즘• 내장된 중지 손실 설정, 단일 거래의 최대 손실을 직접 제어하여 자금 안전을 보호합니다.

  6. 시각화 신호: 라벨을 통해 다양한 종류의 신호 위치를 명확하게 표시함으로써 거래자의 판단의 어려움을 줄이고, 전략의 실용성을 향상시킨다.

  7. 매개 변수 간결함핵심 매개 변수가 적어 오버패팅의 위험을 줄이고, 다양한 시장 조건에서 전략의 적응력을 향상시킵니다.

전략적 위험

  1. 장기 이동 평균 지연:374 주기의 SMA는 현저한 지연성을 가지고 있으며, 빠르게 변화하는 시장에서 신호 지연을 유발할 수 있으며, 최적의 입시 또는 출구 시간을 놓칠 수 있습니다.

  2. 고정 스톱 손실은 변동성에 적응하지 않습니다.: 전략은 고정된 점수를 중지 기준으로 사용하고, 시장과 기간의 변동률 차이를 고려하지 않고, 중지 손실이 너무 느슨하거나 너무 긴밀하게 될 수 있습니다.

  3. 값 감수성: 전략의 거래 신호는 미리 설정된 리스크 마이너스에 크게 의존한다 ((0.3, 0.4, 0.6, 0.7)). 이러한 고정된 마이너스는 모든 시장 환경에 적용되지 않을 수 있다.

  4. 통일성의 한계: 역사적인 극한값을 사용하여 통일화, 새로운 극단적인 상황이 발생했을 때 재조정이 필요할 수 있으며, 역사적인 데이터가 부족하면 통일화가 정확하지 않을 수 있다.

  5. 오차 위험을 감지합니다.: 전략은 역사적 최고/최저 위험값에 의존하고, 이것은 미래 기능의 오차를 예측적 회수에서 초래할 수 있으며, 실제 적용 효과는 회수 결과보다 떨어질 수 있다.

  6. 매개 변수 최적화 도전SMA 주기, 위험 하락값, 스톱포인트 등과 같은 핵심 매개 변수들은 시장에 따라 최적화되어야 하며, 전략 조정의 복잡성을 증가시킨다.

해결 방법에는 다음과 같은 것들이 포함됩니다: 고정 점수 스톱을 대체하는 적응형 스톱 메커니즘을 사용하십시오. 위험 하락값을 조정하는 변동률 지표를 도입하십시오. 다중 주기 확인 신호를 채택하십시오. 역동 거래를 피하기 위해 트렌드 필터 조건을 추가하십시오.

전략 최적화 방향

  1. 적응형 상쇄장치: 고정 점수 스톱을 ATR (진정한 변동의 폭) 에 기반한 동적 스톱으로 바꾸어, 스톱 레벨이 시장의 변동성에 따라 자동으로 조정될 수 있도록, 예를 들어 1.5배의 ATR의 스톱 거리를 설정한다.

  2. 동적 위험 하락: 고정된 위험값 ((0.3, 0.4, 0.6, 0.7) 을 시장 상태의 동적 조정 기준으로 조정한값으로 바꾸어, 변동률이나 트렌드 강도 지표를 사용하여 이러한값을 조정하는 것을 고려할 수 있다.

  3. 트렌드 필터 추가트렌드 판단 메커니즘을 도입합니다. 예를 들어, 더 긴 주기 이동 평균 방향이나 ADX 지표를 사용하여, 주 트렌드 방향에서만 거래하고 역기능을 피합니다.

  4. 신호 확인 메커니즘: 신호 확인 요구사항을 추가하여, 예를 들어 위험 지표가 연속적으로 여러 개의 사이클에 걸쳐 값을 벗어나도록 요구하여 신호를 발산할 수 있도록 하고, 가짜 신호를 줄일 수 있다.

  5. 시간 필터링거래 시간 창 제한을 늘리고, 알려진 효율성이 낮은 거래 시간이나 높은 변동성 기간을 피하고, 신호 품질을 향상시킵니다.

  6. 이동 평균 주기 최적화: 다른 SMA 주기 (예: 200, 300, 450 등) 를 고정된 374 주기 대신 테스트하여 특정 시장에 더 적합한 파라미터를 찾습니다.

  7. 재정 관리 개선: 역동적인 포지션 관리 메커니즘을 도입하여, 위험 값의 절대 수준과 변화의 비율에 따라 거래 당 자본 비율을 조정하여 위험 균형을 달성하십시오.

  8. 다주기 분석 프레임워크: 확장 전략은 여러 시간 주기의 위험 지표를 고려하고, 서로 다른 주기의 신호가 일치할 때만 거래를 수행하여 신호 신뢰성을 높인다.

이러한 최적화 방향은 전략의 자율성을 높이고, 가짜 신호를 줄이고, 위험 관리를 최적화하고, 전반적인 성능을 향상시키는데 목적이 있다. 여러 최적화 포인트를 결합함으로써 보다 안정적인 거래 시스템을 구축할 수 있다.

요약하다

통일적 위험 가치 동적 하락 거래 전략은 가격과 장기 이동 평균의 편차를 기반으로 한 양적 거래 방법이며, 위험 지표를 계산하고 통일적으로 사용하여 거래 결정을 안내합니다. 이 전략은 복잡한 시장 상태를 0-1 사이의 위험 값으로 단순화하여 시장의 과매매 상태를 직관적으로 반영합니다.

전략의 핵심 장점은 자율성과 위험량을 측정하는 능력에 있으며, 역동적으로 역사적 극치를 추적하여 통일 처리하여 지표가 다른 시장 환경에 적응할 수 있도록합니다. 동시에, 내장 된 손해 방지 메커니즘은 기본적인 위험 제어 기능을 제공합니다.

그러나, 이 전략은 또한 장기 이동 평균 지연, 고정 하락 및 시장 변화에 적응하지 않는 중단과 같은 제한이 있습니다. 전략의 성능을 향상시키기 위해, 동적 하락 메커니즘을 도입하는 것을 고려할 수 있습니다. 위험 하락, 트렌드 필터 및 다중 주기 확인과 같은 최적화 조치.

전반적으로, 통일된 위험 가치 동적 하락 거래 전략은 시장의 위험 상태를 식별하고 거래 결정을 안내하는 체계화된 방법을 제공하며 중장기 거래의 보조 도구로 적합합니다. 합리적인 매개 변수 최적화 및 위험 관리를 통해 이 전략은 다양한 시장 환경에서 안정적인 성능을 유지할 잠재력이 있습니다.

전략 소스 코드
/*backtest
start: 2025-05-13 00:00:00
end: 2025-06-11 08:00:00
period: 1m
basePeriod: 1m
exchanges: [{"eid":"Futures_Binance","currency":"DOGE_USDT"}]
*/

//@version=5
//@author=Skywalking2874
strategy("Risk Trading Strategy", overlay=false, max_bars_back=5000)

// 输入参数
risk_prices = input.bool(true, "Display the price corresponding with risk thresholds")

// 计算指标值
find_ath(_src) => 
    var ath = 0.0
    if _src > ath
        ath := _src
    ath

find_atl(_src) =>
    var atl = 2.5
    if _src < atl
        atl := _src
    atl

threeseventyfour = ta.sma(close, 374)
average = (math.log(close) - math.log(threeseventyfour)) * math.pow(bar_index, 0.395)
highest_value = find_ath(average)
lowest_value = find_atl(average)
average_normalized = (average - lowest_value) / (highest_value - lowest_value)

// 绘图
plot(average_normalized, color=color.new(color.blue, 0), title="Risk")

// 交易信号定义
longCondition = average_normalized < 0.3
exitLongCondition1 = average_normalized >= 0.6
exitLongCondition2 = average_normalized >= 0.7
shortCondition = average_normalized > 0.7
exitShortCondition = average_normalized <= 0.4

// 执行交易
if (longCondition)
    strategy.entry("Buy", strategy.long)
    strategy.exit("Stop Loss", "Buy", stop=close - 5 * syminfo.pointvalue)

if (exitLongCondition1 or exitLongCondition2)
    strategy.close("Buy")

if (shortCondition)
    strategy.entry("Sell", strategy.short)
    strategy.exit("Stop Loss", "Sell", stop=close + 5 * syminfo.pointvalue)

if (exitShortCondition)
    strategy.close("Sell")

// 绘制标签
if (risk_prices)
    price_zero = threeseventyfour * math.exp((0.0*(highest_value-lowest_value)+lowest_value)/(math.pow(bar_index, 0.395)))
    price_point_three = threeseventyfour * math.exp((0.3*(highest_value-lowest_value)+lowest_value)/(math.pow(bar_index, 0.395)))
    price_point_four = threeseventyfour * math.exp((0.4*(highest_value-lowest_value)+lowest_value)/(math.pow(bar_index, 0.395)))
    price_point_six = threeseventyfour * math.exp((0.6*(highest_value-lowest_value)+lowest_value)/(math.pow(bar_index, 0.395)))
    price_point_seven = threeseventyfour * math.exp((0.7*(highest_value-lowest_value)+lowest_value)/(math.pow(bar_index, 0.395)))
    
    label.new(bar_index, price_zero, "Buy Signal", color=color.green, textcolor=color.white, style=label.style_label_up)
    label.new(bar_index, price_point_three, "Exit Long Signal", color=color.blue, textcolor=color.white, style=label.style_label_up)
    label.new(bar_index, price_point_four, "Exit Short Signal", color=color.orange, textcolor=color.white, style=label.style_label_up)
    label.new(bar_index, price_point_six, "Exit Long Signal 2", color=color.blue, textcolor=color.white, style=label.style_label_up)
    label.new(bar_index, price_point_seven, "Sell Signal", color=color.red, textcolor=color.white, style=label.style_label_up)