가중 이동 평균 및 역 Fisher 변환 CCI 모멘텀 필터 다중 전략 시스템

WMA CCI IFT 趋势追踪 动量过滤 移动止损 风险管理
생성 날짜: 2025-07-02 11:21:39 마지막으로 수정됨: 2025-07-31 09:05:52
복사: 1 클릭수: 271
avatar of ianzeng123 ianzeng123
2
집중하다
319
수행원

가중 이동 평균 및 역 Fisher 변환 CCI 모멘텀 필터 다중 전략 시스템 가중 이동 평균 및 역 Fisher 변환 CCI 모멘텀 필터 다중 전략 시스템

개요

중도평평준과 역비셔를 변환하는 CCI 동량 필터링 다중 전략 시스템은 기술 분석과 동량 필터링을 결합한 정량화 거래 전략이다. 이 전략은 주로 두 가지 핵심 구성 요소에 기반한다: 중도 이동 평균 ((WMA) 교차와 역비셔를 변환하는 ((IFT) CCI 지표 필터링 시스템이다. 이 전략은 50주기 및 200주기 WMA의 교차를 통해 시장의 추세 방향을 결정하며, IFT-CCI 지표 필터링 소음 신호를 사용하며, 트렌드 동력이 충분히 강할 때만 거래를 수행한다. 또한, 이 전략은 거래의 위험 환율을 높이기 위해 정교한 위험 관리 및 수익 보호 장치를 통합하고 있으며, 스톱 및 고정 손실을 추적한다. 이 전략의 핵심 장점은 시장의 추세를 식별할 수 있는 포괄성과 적응성이며, 동시에 가짜 신호를 제거하는 데 효과적이며, 트렌드 태그와 그래프를 통해 거래에 대한 시각적 인센티브를 강화한다.

전략 원칙

이 전략의 작동 원리는 다음과 같은 몇 가지 핵심 메커니즘에 기반합니다.

  1. 트렌드 인식 시스템: 전략은 50주기 및 200주기 중화 이동 평균 ((WMA) 을 트렌드 식별의 기초로 사용한다. 단기 WMA ((50주기) 위에 장기 WMA ((200주기) 를 타면 잠재적인 다중 신호가 형성된다. 단기 WMA 아래 장기 WMA를 타면 잠재적인 하위 신호가 형성된다.

  2. 동력 필터 메커니즘: 전략은 CCI (상품 통로 지수) 를 기반으로 한 역 페셜 변환 (IFT) 을 동력 필터로 사용합니다. IFT-CCI 지표는 CCI 값을 -1에서 1 사이의 값으로 변환하여 더 명확한 시장 동력 신호를 제공합니다. IFT-CCI 값이 0.5보다 크면만 다중 주문을 실행하고 -0.5보다 작으면 공명 주문을 실행하는 것을 고려합니다.

  3. 신호 확인 및 입력 지연: 전략은 독특한 “준비 상태” 메커니즘을 설계했다. 트렌드 신호가 발생하지만 동력 필터 조건이 충족되지 않을 때 전략은 “준비 상태”에 들어간다. 동력 조건이 충족되고 동력 방향이 변하지 않으면 전략이 거래를 수행한다. 이 메커니즘은 가짜 신호로 인한 손실을 효과적으로 줄인다.

  4. 동적 위험 관리: 전략은 퍼센트 기반의 추적 스톱과 고정 스톱 메커니즘을 구현한다. 가격이 지정된 수익 비율을 달성했을 때 추적 스톱이 활성화된다. (부적절한 3%) 회수하면 자동으로 평정된다. (부적절한 1%) 최대 손실 비율을 설정하는 동시에, 전략은 위험 통제의 마지막 방어 수단으로 최대 손실 비율을 설정한다.

  5. 시각적 피드백 시스템전략: WMA 교차점, 거래 입출점, 거래 과정의 가시성과 직관성을 강화하기 위해 중요한 신호와 이벤트를 표시하는 태그와 에모니코드를 차트에 사용합니다.

코드 구현에서, 전략은 먼저 WMA와 IFT-CCI 지표를 계산하고, 그 지표와 현재 시장 상태를 기반으로 거래 신호를 결정한다. 거래 실행 논리는 트렌드 변화, 신호 확인 및 위험 관리와 같은 여러 가지 상황을 처리하여 전략이 다양한 시장 환경에 유연하게 대응할 수 있도록 보장한다.

전략적 이점

이 전략은 다양한 시장 조건에서 비교적 안정적인 성능을 유지할 수 있는 몇 가지 중요한 장점을 가지고 있습니다.

  1. 종합적인 트렌드 인식 능력이 전략은 단기 및 장기 중화 이동 평균을 결합하여 주요 시장 동향을 정확하게 식별하고, 수평 시장에서 자주 거래되는 것을 방지하고, 불필요한 거래 비용을 줄일 수 있습니다.

  2. 효율적인 소음 필터링역 피셔 변환 CCI 지표는 강력한 동력 필터링 메커니즘을 제공하여 전략이 많은 시장 소음과 가짜 신호를 필터링하여 신호 품질과 거래 성공률을 크게 향상시킵니다.

  3. 유연한 신호 확인 메커니즘: “준비 상태”의 설계는 트렌드 신호가 나타난 후 전략이 동력을 확인하기 위해 기다릴 수 있도록 허용합니다. 이러한 지연 진입 메커니즘은 가짜 돌파구로 인한 손실을 효과적으로 줄이고 진정한 트렌드 기회를 놓치지 않습니다.

  4. 동적 위험 관리 시스템전략의 추적 스톱 및 고정 스톱 메커니즘은 전면적인 위험 보호를 제공하며, 트렌드 상황에서 수익을 극대화하고 역전 상황에서 손실을 제한하여 전략의 리스크 수익률을 크게 향상시킵니다.

  5. 직관적인 시각적 피드백: 표지판의 태그와 이모시콘 시스템은 거래자에게 명확한 시각적 피드백을 제공하여 거래자가 전략적 의사 결정 과정과 시장 상황을 더 잘 이해할 수 있도록 도와주고 거래 경험과 전략 투명성을 향상시킵니다.

  6. 시장 특성에 적응전략은 시장의 다른 조건과 주기에 적응할 수 있고, 트렌드 시장과 변동 시장에서 적절한 거래 기회를 찾을 수 있으며, 강한 적응력과 안정성을 보여준다.

  7. 감정 관리의 장점명확한 규칙과 객관적인 지표를 통해, 전략은 거래 과정에서 주관적인 판단과 감정의 영향을 줄이고, 거래자가 규율과 일관성을 유지하도록 돕고, 장기적으로 거래 결과의 안정성을 향상시킵니다.

전략적 위험

이 전략은 합리적으로 설계되었지만 몇 가지 위험 요소가 있습니다.

  1. 매개변수 민감도 위험전략 성능은 WMA 주기, CCI 길이는, 이익 목표 및 중단 수준과 같은 선택된 매개 변수에 크게 의존합니다. 부적절한 매개 변수 설정은 과도한 최적화 또는 저성능을 초래할 수 있습니다. 다양한 시장 조건에 대한 재검토를 통해 매개 변수의 안정성을 검증하고, 적응 매개 변수를 사용하는 것을 고려하여이 위험을 줄이는 것이 좋습니다.

  2. 트렌드 변화, 지연 위험: 이동 평균은 지연 지표이며, 시장 추세가 변화 한 후에 신호를 줄 수 있습니다. 급격한 역전 시장에서 이러한 지연은 상당한 손실을 초래할 수 있습니다. 잠재적인 추세 변화를 미리 식별하기 위해 가격 변동률이나 동력 변화 비율과 같은 더 민감한 초기 경고 지표를 도입하는 것이 고려 될 수 있습니다.

  3. 과도한 거래의 위험위기 시장에서 WMA가 자주 교차하여 과도한 거래 신호와 불필요한 거래 비용을 초래할 수 있습니다. IFT-CCI 필터가 문제를 줄이는 데 도움이되기는 하지만 거래 빈도를 모니터링하고横盘 시장에서 일시적으로 차단하는 전략을 고려해야합니다.

  4. 연관성 실패의 위험극한 시장 조건에서 지표 간의 정상적인 상관관계가 일시적으로 작동하지 않을 수 있으며, 전략의 부진을 초래할 수 있습니다. 시장 상태 탐지 장치를 적용하여 비정상적인 시장 조건에서 포지션을 줄이거나 거래를 중단하여 위험을 줄이는 것이 좋습니다.

  5. 고정 비율 위험: 전략은 고정된 퍼센티지를 사용하여 중지 및 손실을 수행합니다. 이것은 모든 시장 환경에 적용되지 않을 수 있습니다. 높은 변동성이있는 시장에서 고정된 퍼센티지는 너무 작을 수 있습니다. 낮은 변동성이있는 시장에서는 너무 커있을 수 있습니다. 시장의 변동성에 기반한 동적인 중지 및 손실 수준을 구현하는 것을 고려하여 다른 시장 환경에 더 잘 적응하십시오.

  6. 리드 디스크와 리드 디스크의 차이점: 회수 결과는 실제 거래 상황을 완전히 반영하지 않을 수 있습니다. 왜냐하면 그들은 일반적으로 미끄러짐, 주문 거부, 유동성 문제와 같은 요소를 고려하지 않기 때문입니다. 실제 거래 전에 시뮬레이션 거래를 수행하고 초기 소규모 포지션을 사용하여 실제 환경에서 전략을 검증하는 것이 좋습니다.

  7. 단일한 전략은 위험입니다.단일 전략에 과도하게 의존하면 장기적인 성과 불안정성이 발생할 수 있습니다. 이 전략은 더 넓은 거래 시스템의 일부로, 위험 분산 및 전체 안정성을 높이기 위해 다른 관련이없는 전략과 함께 사용되도록 권장됩니다.

최적화 방향

전략적 논리와 잠재적인 위험을 분석한 결과, 몇 가지 가능한 최적화 방향은 다음과 같습니다.

  1. 적응 변수 최적화: 현재 전략은 고정된 WMA와 CCI 파라미터를 사용한다. 시장의 변동성과 주기적 역동성에 따라 이러한 파라미터를 조정하는 적응 파라미터 시스템을 구현하는 것을 고려할 수 있다. 예를 들어, 높은 변동성이있는 시장에서 짧은 WMA 주기를 사용하고 낮은 변동성이있는 시장에서 더 긴 주기를 사용하여 다양한 시장 환경에 대한 전략의 적응성을 향상시킬 수 있다.

  2. 다중 시간 프레임 분석 통합: 현재 단일 시간 프레임에 기초하여, 더 긴 기간의 트렌드 정보를 거래 필터링 조건으로 추가할 수 있습니다. 예를 들어, 당일 라인과 4 시간 라인 추세가 일치 할 때만 거래를 수행하면 신호 품질과 성공률이 크게 향상됩니다.

  3. 시장 상태 분류 메커니즘: 시장 상태를 분류하는 시스템을 도입하여 시장을 추세, 충격 및 전환 상태로 구분하고 다른 시장 상태에 따라 다른 거래 매개 변수 및 전략을 사용합니다. 예를 들어, 강한 추세 시장에서 수익을 더 적극적으로 추적하고, 흔들리는 시장에서 더 보수적으로 목표를 설정합니다.

  4. 동적 위험 관리 최적화: ATR ((평균 실제 범위) 또는 역사적인 변동성에 기반한 동적 중지 및 중지 수준으로 고정 비율을 설정하십시오. 이것은 위험 관리가 시장의 실제 변동성에 더 잘 적응하고 자금 관리 효율성을 향상시킬 것입니다.

  5. 감정 지표 통합: 시장 감정 지표 (거래량, 변동률 변화율 또는 시장 폭과 같은) 를 신호 필터링 시스템에 통합하는 것을 고려하십시오. 이러한 지표는 시장 참가자의 감정에 대한 추가 정보를 제공하여 잠재적인 추세가 지속되거나 반전을 식별하는 데 도움이 될 수 있습니다.

  6. 기계 학습 강화: 기계 학습 기술을 사용하여 전략적 의사 결정 과정을 최적화하십시오. 특히 신호 확인 및 위험 관리에 관한 것입니다. 기계 학습 모델은 역사 데이터에 기반하여 최적의 입점과 출구 지점을 식별하여 전략의 정확성과 안정성을 향상시킬 수 있습니다.

  7. 관련 자산 관련성 분석: 관련 자산의 연관성 분석을 추가 신호 확인 계층으로 도입한다. 여러 관련 자산이 일치하는 트렌드 신호를 표시할 때, 신호의 신뢰도와 거래의 위치 크기를 높이고, 전략의 전반적인 효과를 높일 수 있다.

요약하다

가중평균선과 반리퍼셔 변동 CCI 동력 필터링 다중 전략 시스템은 전체적이고 강력한 양적 거래 전략으로, 트렌드 추적, 동력 필터링 및 위험 관리의 세 가지 핵심 요소를 교묘하게 결합하여 균형 잡힌 효율적인 거래 시스템을 형성합니다. 전략의 주요 장점은 WMA를 통해 트렌드 방향을 교차하는 신호 확인 메커니즘, IFT-CCI 동력 필터를 통해 신호 강도를 확인하고, 마지막으로 “준비 상태” 메커니즘을 통해 가짜 돌파를 방지하여 거래 신호의 품질과 신뢰성을 크게 향상시킵니다.

한편, 전략의 동적 위험 관리 시스템은 자금의 안전을 보호하면서 트렌드 상황에서 수익을 극대화 할 수 있으며, 좋은 위험 수익 특성을 보여줍니다. 시각적 피드백 시스템은 전략의 사용성과 투명성을 강화하여 거래자가 거래 결정을 더 잘 이해하고 실행할 수 있도록 도와줍니다.

변수 민감성, 신호 지연, 시장 적응성 등과 같은 잠재적인 위험에도 불구하고, 이러한 위험은 적응성 변수, 다중 시간 프레임 분석, 시장 상태 분류 및 동적 위험 관리와 같은 제안 된 최적화 방향을 통해 효과적으로 완화 될 수 있으며, 전략의 안정성과 적응성을 더욱 향상시킬 수 있습니다.

전반적으로, 이 전략은 기술 분석의 객관성과 동적 위험 관리의 유연성을 균형 잡으며, 다양한 시장 환경에서 비교적 안정적인 성능을 유지하며, 중기 및 장기간에 걸친 양적 거래의 기본 전략으로 적합합니다. 신뢰할 수 있고 체계화된 거래 방법을 찾는 투자자와 거래자에게는 고려해야 할 선택입니다.

전략 소스 코드
//@version=5
//策略初始化:设置策略名称和基本参数
strategy("Intelligent Entry Strategy", overlay=false, default_qty_type=strategy.percent_of_equity, 
    default_qty_value=100)

//WMA移动平均线系统:用于判断市场趋势方向
wmaFast = ta.wma(close, 50);//快速WMA,50周期
wmaSlow = ta.wma(close, 200);//慢速WMA,200周期

//绘制WMA200线:根据快慢线关系显示不同颜色
plot(wmaSlow, title="WMA 200 (Magic Line)", color=wmaFast > wmaSlow ? color.green : color.red, 
    linewidth=2, overlay = true)

//WMA金叉信号:快线上穿慢线时显示绿色标签
if ta.crossover(wmaFast, wmaSlow)
    label.new(bar_index, low, style=label.style_label_up, color=color.green, size=size.small)

//WMA死叉信号:快线下穿慢线时显示红色标签
if ta.crossunder(wmaFast, wmaSlow)
    label.new(bar_index, high, style=label.style_label_down, color=color.red, size=size.small)

//IFT_CCI指标计算:反向费舍尔变换的商品通道指数
cciLength = input(5, "CCI Length");//CCI周期参数
wmaLength = input(9, "Smoothing Length");//WMA平滑周期参数
v11 = 0.1 * (ta.cci(close, cciLength) / 4);//CCI值标准化处理
v21 = ta.wma(v11, wmaLength);//对CCI值进行WMA平滑
iftCciRaw = (math.exp(2 * v21) - 1) / (math.exp(2 * v21) + 1);//反向费舍尔变换公式
iftCci = nz(iftCciRaw[1]);//获取前一根K线的IFT_CCI值,处理空值

//绘制IFT_CCI指标:显示在副图中
plot(iftCciRaw[1], title="IFT_CCI (Mind Reader)", color=color.fuchsia)
hline(0.5, color=color.red);//上临界线
hline(-0.5, color=color.green);//下临界线

//过滤条件设置:基于IFT_CCI值的多空过滤
iftFilterLong = iftCci >= 0.5;//做多过滤条件
iftFilterShort = iftCci <= -0.5;//做空过滤条件

//风险管理参数:设置止盈止损参数
profitPercent = input.float(3.0, title="Profit Trailing Start (%)", minval=0.1);//止盈开始百分比
pullbackPercent = input.float(1.0, title="Trailing Stop Pullback (%)", minval=0.1);//回撤止盈百分比
maxLossPercent = input.float(3.0, title="Maximum Loss Stop (%)", minval=0.1);//最大损失百分比

//状态变量定义:用于跟踪仓位和价格状态
var float entryPrice = na;//进场价格
var float highestPrice = na;//最高价记录
var float lowestPrice = na;//最低价记录
var string activePosition = "none";//当前持仓状态
var bool longReady = false;//多头准备状态
var bool shortReady = false;//空头准备状态

//K线确认状态:确保在K线收盘后执行操作
barClosed = barstate.isconfirmed

//交易信号定义:基于WMA交叉的买卖信号
longSignal = wmaFast > wmaSlow and wmaFast[1] <= wmaSlow[1];//多头信号:快线上穿慢线
shortSignal = wmaFast < wmaSlow and wmaFast[1] >= wmaSlow[1];//空头信号:快线下穿慢线

//多头进场逻辑:处理多头交易的进场条件
if (longSignal and not iftFilterLong and barClosed)
    longReady := true;//如果有多头信号但IFT_CCI条件未满足,设置多头准备状态

if (longSignal and iftFilterLong and barClosed)
    if (activePosition == "short")
        strategy.close("Short");//如果当前持有空头仓位,先平仓
    strategy.entry("Long", strategy.long);//开多头仓位
    entryPrice := close;//记录进场价格
    highestPrice := close;//初始化最高价
    activePosition := "long";//更新仓位状态
    longReady := false;//重置多头准备状态
    //显示多头进场标签
    label.new(bar_index, low, "Long Magic!", style=label.style_label_up, color=color.green, 
        textcolor=color.white, size=size.tiny)

//延迟多头进场:处理之前准备的多头信号
if (longReady and iftFilterLong and wmaFast > wmaSlow and barClosed)
    if (activePosition == "short")
        strategy.close("Short");//平掉空头仓位
    strategy.entry("Long", strategy.long);//开多头仓位
    entryPrice := close;//记录进场价格
    highestPrice := close;//初始化最高价
    activePosition := "long";//更新仓位状态
    longReady := false;//重置多头准备状态
    //显示延迟多头进场标签
    label.new(bar_index, low, "Pending Long Triggered!", style=label.style_label_up, 
        color=color.lime, textcolor=color.black, size=size.tiny)

//空头进场逻辑:处理空头交易的进场条件
if (shortSignal and not iftFilterShort and barClosed)
    shortReady := true;//如果有空头信号但IFT_CCI条件未满足,设置空头准备状态

if (shortSignal and iftFilterShort and barClosed)
    if (activePosition == "long")
        strategy.close("Long");//如果当前持有多头仓位,先平仓
    strategy.entry("Short", strategy.short);//开空头仓位
    entryPrice := close;//记录进场价格
    lowestPrice := close;//初始化最低价
    activePosition := "short";//更新仓位状态
    shortReady := false;//重置空头准备状态
    //显示空头进场标签
    label.new(bar_index, high, "Short Curse!", style=label.style_label_down, color=color.red, 
        textcolor=color.white, size=size.tiny)

//延迟空头进场:处理之前准备的空头信号
if (shortReady and iftFilterShort and wmaFast < wmaSlow and barClosed)
    if (activePosition == "long")
        strategy.close("Long");//平掉多头仓位
    strategy.entry("Short", strategy.short);//开空头仓位
    entryPrice := close;//记录进场价格
    lowestPrice := close;//初始化最低价
    activePosition := "short";//更新仓位状态
    shortReady := false;//重置空头准备状态
    //显示延迟空头进场标签
    label.new(bar_index, high, "Pending Short Triggered!", style=label.style_label_down, 
        color=color.orange, textcolor=color.black, size=size.tiny)

//准备状态重置:当趋势发生反转时重置准备状态
if (longReady and wmaFast < wmaSlow)
    longReady := false;//趋势转空时取消多头准备

if (shortReady and wmaFast > wmaSlow)
    shortReady := false;//趋势转多时取消空头准备

//多头出场逻辑:处理多头仓位的止盈止损
if (activePosition == "long")
    highestPrice := math.max(highestPrice, close);//更新持仓期间最高价
    profitRatio = (highestPrice - entryPrice) / entryPrice * 100;//计算盈利比例
    pullback = (highestPrice - close) / highestPrice * 100;//计算从最高点的回撤比例
    lossRatio = (entryPrice - close) / entryPrice * 100;//计算亏损比例
    
    //移动止盈条件:达到目标盈利且回撤超过设定值时平仓
    if (profitRatio >= profitPercent and pullback >= pullbackPercent)
        strategy.close("Long");//平多头仓位
        activePosition := "none";//重置仓位状态
        //显示止盈平仓标签
        label.new(bar_index, high, "Long Profit Take!", style=label.style_label_down, color=color.teal)
    
    //止损条件:亏损超过最大允许值时平仓
    if (profitRatio < profitPercent and lossRatio >= maxLossPercent)
        strategy.close("Long");//平多头仓位
        activePosition := "none";//重置仓位状态
        //显示止损平仓标签
        label.new(bar_index, high, "Long Stop Loss!", style=label.style_label_down, color=color.red)

//空头出场逻辑:处理空头仓位的止盈止损
if (activePosition == "short")
    lowestPrice := math.min(lowestPrice, close);//更新持仓期间最低价
    profitRatio = (entryPrice - lowestPrice) / entryPrice * 100;//计算盈利比例
    bounce = (close - lowestPrice) / lowestPrice * 100;//计算从最低点的反弹比例
    lossRatio = (close - entryPrice) / entryPrice * 100;//计算亏损比例
    
    //移动止盈条件:达到目标盈利且反弹超过设定值时平仓
    if (profitRatio >= profitPercent and bounce >= pullbackPercent)
        strategy.close("Short");//平空头仓位
        activePosition := "none";//重置仓位状态
        //显示止盈平仓标签
        label.new(bar_index, low, "Short Profit Take!", style=label.style_label_up, color=color.purple)
    
    //止损条件:亏损超过最大允许值时平仓
    if (profitRatio < profitPercent and lossRatio >= maxLossPercent)
        strategy.close("Short");//平空头仓位
        activePosition := "none";//重置仓位状态
        //显示止损平仓标签
        label.new(bar_index, low, "Short Stop Loss!", style=label.style_label_up, color=color.red)