트리플 이동 평균 팬 핀 패턴 동적 위험 양적 거래 전략

SMA EMA ATR PIN BAR Trailing Stop Dynamic Leverage
생성 날짜: 2025-05-14 11:07:47 마지막으로 수정됨: 2025-05-14 11:07:47
복사: 2 클릭수: 266
avatar of ianzeng123 ianzeng123
2
집중하다
319
수행원

트리플 이동 평균 팬 핀 패턴 동적 위험 양적 거래 전략 트리플 이동 평균 팬 핀 패턴 동적 위험 양적 거래 전략

개요

트리플 이동 평균 扇形 引脚形态 동적 위험량 거래 전략은 기술 분석과 위험 관리를 결합한 종합적인 거래 시스템이다. 이 전략의 핵심은 트리플 이동 평균 ((빠른 EMA, 중간 EMA, 느린 SMA) 을 기반으로 형성된 트렌드 확인 시스템이며, 고전적 引脚形态 ((Pin Bar) 을 입력 신호로 결합하고, 다층의 위험 제어 장치를 통합한다. 전략은 재배치 방지 기술을 사용하여, 모든 신호가 확인된 K선 데이터에 기반하여 생성되는 것을 보장하고, 신호 신뢰성을 효과적으로 향상시킨다. 시스템은 0.1배에서 100배의 유연한 레버 조정을 지원하며, 재원 비율에 기반한 포지션 관리 및 이중 중지 손실 보호 장치를 구현한다.

전략 원칙

이 전략의 거래 원칙은 다음과 같은 몇 가지 핵심 구성 요소에 기반합니다.

  1. 트리플 이동 평균 트렌드 확인 시스템전략: 3개의 다른 주기의 이동 평균을 사용하여 트렌드 환경을 구축하여, 빠른 EMA (설정 6주기), 중간 속도 EMA (설정 18주기) 및 느린 SMA (설정 50주기) 가 명확한 트렌드 배열을 형성하도록 요구합니다. 다중 트렌드 요구 사항: 빠른 EMA > 중간 속도 EMA > 느린 SMA; 공백 트렌드 요구 사항: 빠른 EMA < 중간 속도 EMA < 느린 SMA ᅳ

  2. 핀 형태 신호 인식전략: 트렌드 방향이 확립된 후, 트렌드 방향과 일치하는 핀 형태 ((Pin Bar) 를 구체적인 진입점으로 찾는다. 핀 형태는 K 선과 그림자가 전체 길이의 66% 이상을 차지하도록 요구하며, 충분한 반전력이 있는지 확인한다.

  3. 지연 신호 확인 메커니즘: 재배치 문제를 방지하기 위해, 전략은 완전히 형성된 K선 데이터를 사용하여 ((confirmedClose, confirmedOpen 등) 신호를 생성하고, 신호 확인은 1개의 K선을 지연시켜 거래가 확인된 시장 행동에 기초하여 보장한다.

  4. 동적 위험 관리 시스템

    • 자금 위험 제어: 사용자 설정 된 위험 비율 (usr_risk) 과 레버리지 배수 기반의 위험 금액을 계산
    • 포지션 계산 공식: 위험 금액 = 총 자본 × 위험 비율 × 레버리지 배수
    • 스톱 거리 동적으로 계산된 특정 거래 단위: 단위 = 위험 금액 ÷ 스톱 거리
  5. 이중 차단 보호

    • 고정 스톱: ATR 배수 ((atr_mult) 에 기반한 초기 보호
    • 추적 스톱: slPoints와 slOffset 파라미터를 통해 수익 보호
  6. 시간 창 제어

    • 신호 노후화 메커니즘: ent_canc 파라미터를 통해 오타임 신호를 자동으로 취소
    • 매주 금요일 폐장 자동 청산 기능, 주말 적자 위험을 피하기

전략적 이점

  1. 다시 그리는 디자인: 전략은 완전히 확인된 K선 데이터에 기반하여, 일반적인 지표 재화 문제를 피하고, 실제 디스크 성과와 재검토 결과의 일관성을 높였다.

  2. 좋은 위험 관리 시스템

    • 0.1에서 100배의 미세한 레버리지 조정, 다양한 위험 선호도에 맞게 지원
    • 자금의 비율을 제어하여 자금이 증가할 때 자동으로 포지션을 확장하고 자금이 철수할 때 자동으로 포지션을 축소합니다.
    • 이중 손해배상 메커니즘은 여러 계층의 자금 보호를 제공합니다.
  3. 높은 품질의 신호 필터링

    • 트리플 트렌드 확인 메커니즘은 불확실한 트렌드에서 거래를 피합니다.
    • 핀 형태는 66%의 그림자 비율을 요구하며, 약한 신호를 필터링합니다.
    • 신호와 트렌드 방향의 일치 요구 사항, 역전 거래 위험을 줄여줍니다.
  4. 유연한 시간 관리

    • 자동으로 노후 신호를 취소하여 부적절한 시간에 출입하지 않도록 합니다.
    • 금요일에 자동으로 청산하면 주말의 위험을 피할 수 있습니다.
    • 획기적인 EMA 교차 자동 평점 기능, 트렌드 변화에 신속하게 대응
  5. 적응형 포지션 관리: 시스템은 시장의 변동성 (ATR) 에 따라 자동으로 포지션 크기를 조정하고, 변동성이 큰 시간에 포지션을 줄이고, 변동성이있는 시간에 포지션을 증가시키고, 위험을 동적으로 균형을 이룬다.

전략적 위험

  1. 트렌드 환경의 과도한 의존이 전략은 수평조정시장에서 빈번한 가짜 신호를 발생시킬 수 있으며, 이로 인해 연속적인 스톱로스가 발생할 수 있다. 해결 방법: 트렌드 강도 필터를 추가할 수 있다.

  2. 핀 바 모드의 한계: 핀 바는 강력한 반향 신호이지만, 높은 변동 시장에서 자주 나타날 수 있어 실제적인 의미가 없다. 해결 방법: 거래량 확인을 증가시키거나 핀 바의 그림자 비율 요구 사항을 증가시킬 수 있다.

  3. 리버리지 위험이 전략은 최대 100배의 레버리지를 지원하지만, 너무 높은 레버리지는 급격한 계정 변동 또는 포지션 파열을 초래할 수 있습니다. 해결 방법: 레버리지를 보존적으로 사용하십시오. 초기 설정은 5배 이상으로 설정하지 않고, 역사적인 재검토 결과에 따라 조정하십시오.

  4. 매개 변수 최적화 및 곡선 적합성 위험: 여러 개의 조정 가능한 파라미터를 포함하고 있다 (EMA 주기, ATR 주기 등) 전략이 과잉 최적화 위험에 직면한다. 해결 방법: 여러 시간 주기 및 시장에서 파라미터의 안정성을 테스트하고, 단계적 접근법을 사용하여 (Walk Forward) 분석 검증 파라미터를 사용한다.

  5. 손해배상 설정 위험너무 작은 ATR 배수는 빈번한 손실을 초래할 수 있고, 너무 큰 ATR 배수는 너무 많은 손실을 초래할 수 있다. 해결 방법: 시장 특성과 거래 사이클에 따라 손실을 막는 설정을 찾는 균형점, 자금 위험 제한과 함께 여러 설정을 테스트하는 것이 좋습니다.

전략 최적화 방향

  1. 시장 환경 필터링

    • ATR/가격 비율에 따라 시장이 거래할 수 있는지 여부를 판단하는 등 변동율 필터링 조건을 추가합니다.
    • 시장 지역 패턴 인식 기능을 구현하여 추세와 변동 환경을 구분합니다.
    • 이러한 최적화는 전략에 부적절한 시장 환경에서 거래하는 것을 방지하고 승률을 높일 수 있습니다.
  2. 신호 품질 강화

    • 거래량 확인 요구 사항을 추가하여 핀 바 신호가 충분한 시장 참여를 보장합니다.
    • 핵심 가격 지지 저항 검증을 추가하고 중요한 가격 근처의 신호를 우선적으로 선택합니다.
    • 이러한 최적화는 신호의 품질과 신뢰성을 크게 향상시킬 수 있습니다.
  3. 동적 변수는 스스로 적응합니다.

    • 시장의 변동성에 따라 변수를 자동으로 조정하는 EMA 주기의 적응 조정
    • 시장 구조의 동력에 따라 스톱 거리를 조정할 수 있는 지능형 스톱 시스템을 개발
    • 이러한 최적화는 전략이 다른 시장 단계에 더 잘 적응할 수 있도록 하고 장기적인 안정성을 높일 수 있습니다.
  4. 다중 시간 주기 조정

    • 더 높은 시간 주기의 트렌드 필터 조건을 추가합니다.
    • 다른 시간 주기 신호 연동 확인 메커니즘을 구현
    • 시간주기 연동으로 잡음을 줄이고 신호 신뢰도를 높일 수 있다.
  5. 자금 관리 최적화

    • 예상된 이익/손실 비율에 따라 리스크 비율을 조정하는 수익/손실 비율 기반의 동적 포지션 시스템을 개발
    • 시장의 변동성, 트렌드 강도 및 신호 품질을 종합적으로 고려한 복합 위험 모델을 구현합니다.
    • 다른 시장 조건에 따라 위험을 더 정확하게 조절할 수 있습니다.

요약하다

트리플 이동 평균 팬형 핀 형태 동적 위험 수치 거래 전략은 다중 기술 분석과 위험 관리를 결합한 전문적인 수치 거래 시스템이다. 트리플 이동 평균 트렌드 확인과 핀 바 형태 식별을 결합하여 전략은 강한 추세 시장에서 높은 품질의 거래 기회를 잡을 수 있다. 그것의 핵심 장점은 완벽한 위험 제어 시스템, 재배치 설계 및 유연한 신호 필터링 메커니즘에 있으며, 전문적인 수치화 전략의 특성을 갖는다.

이 전략은 명확한 추세 시장 환경에서 가장 적합하며, 특히 변동성이 높은 금융 상품에 효과적입니다. 그러나 사용자는 전략이 수평 평면으로 정리하는 시장의 한계, 그리고 레버리지 사용 및 파라미터 설정의 잠재적인 위험에 주의해야 합니다. 시장 환경 필터링을 증가시키고, 신호 품질을 강화하고, 파라미터 적응을 구현하는 것과 같은 권장된 최적화 방향을 통해 이 전략은 개선할 여지가 있습니다.

전반적으로, 이것은 구조가 잘 되어 있고, 위험도 조절이 가능하며, 논리가 명확한 양적 거래 전략이며, 충분한 테스트를 거친 경험이 있는 거래자에게 실제 거래에 적용될 수 있습니다. 합리적인 파라미터를 설정하고, 레버리지를 신중하게 사용함으로써, 이 전략은 거래자의 무기고에서 강력한 도구가 될 잠재력을 가지고 있습니다.

전략 소스 코드
/*backtest
start: 2024-05-14 00:00:00
end: 2025-05-12 08:00:00
period: 1d
basePeriod: 1d
exchanges: [{"eid":"Futures_Binance","currency":"DOGE_USDT"}]
*/

//@version=5

strategy("Rich Harvester", overlay=true, 
  initial_capital=200, 
  commission_type=strategy.commission.percent, 
  commission_value=0.1,
  slippage=2,
  default_qty_type=strategy.cash)

// ≡≡≡≡≡≡≡≡≡≡≡≡≡≡≡≡≡≡≡≡≡≡≡≡≡≡≡≡≡≡≡≡≡≡≡≡≡≡≡≡≡≡≡≡≡≡≡≡≡≡≡≡≡
// 抗重绘核心修改(使用已确认K线数据)
// ≡≡≡≡≡≡≡≡≡≡≡≡≡≡≡≡≡≡≡≡≡≡≡≡≡≡≡≡≡≡≡≡≡≡≡≡≡≡≡≡≡≡≡≡≡≡≡≡≡≡≡≡≡
confirmedClose = close[1]
confirmedOpen = open[1]
confirmedHigh = high[1]
confirmedLow = low[1]

// User Input (新增参数)
leverage = input.float(title='杠杆倍数', minval=0.1, maxval=100.0, step=0.1, defval=1.0, group="★ 风险控制")

// User Input (原有参数完全保留)
usr_risk = input.int(title='Equity Risk (%)', minval=1, maxval=100, step=1, defval=3, confirm=false)
atr_mult = input.float(title='Stop Loss (x*ATR, Float)', minval=0.1, maxval=100, step=0.1, defval=0.5, confirm=false)
slPoints = input.int(title='Stop Loss Trail Points (Pips)', minval=1, maxval=1000, step=1, defval=1, confirm=false)
slOffset = input.int(title='Stop Loss Trail Offset (Pips)', minval=1, maxval=1000, step=1, defval=1, confirm=false)
sma_slow = input.int(title='Slow SMA (Period)', minval=1, maxval=500, step=1, defval=50, confirm=false)
ema_medm = input.int(title='Medm EMA (Period)', minval=1, maxval=500, step=1, defval=18, confirm=false)
ema_fast = input.int(title='Fast EMA (Period)', minval=1, maxval=500, step=1, defval=6, confirm=false)
atr_valu = input.int(title='ATR (Period)', minval=1, maxval=500, step=1, defval=14, confirm=false)
ent_canc = input.int(title='Cancel Entry After X Bars (Period)', minval=1, maxval=500, step=1, defval=3, confirm=false)

// Create Indicators (使用确认数据)
slowSMA = ta.sma(confirmedClose, sma_slow)
medmEMA = ta.ema(confirmedClose, ema_medm)
fastEMA = ta.ema(confirmedClose, ema_fast)
atr = ta.atr(atr_valu)[1]  // 使用前值

// ≡≡≡≡≡≡≡≡≡≡≡≡≡≡≡≡≡≡≡≡≡≡≡≡≡≡≡≡≡≡≡≡≡≡≡≡≡≡≡≡≡≡≡≡≡≡≡≡≡≡≡≡≡
// 信号系统优化(延迟信号确认)
// ≡≡≡≡≡≡≡≡≡≡≡≡≡≡≡≡≡≡≡≡≡≡≡≡≡≡≡≡≡≡≡≡≡≡≡≡≡≡≡≡≡≡≡≡≡≡≡≡≡≡≡≡≡
bullishPinBar = (confirmedClose > confirmedOpen and (confirmedOpen - confirmedLow) > 0.66 * (confirmedHigh - confirmedLow)) or
              (confirmedClose < confirmedOpen and (confirmedClose - confirmedLow) > 0.66 * (confirmedHigh - confirmedLow))

bearishPinBar = (confirmedClose > confirmedOpen and (confirmedHigh - confirmedClose) > 0.66 * (confirmedHigh - confirmedLow)) or
               (confirmedClose < confirmedOpen and (confirmedHigh - confirmedOpen) > 0.66 * (confirmedHigh - confirmedLow))

// 趋势过滤条件(使用确认数据)
fanUpTrend = fastEMA > medmEMA and medmEMA > slowSMA
fanDnTrend = fastEMA < medmEMA and medmEMA < slowSMA

// 延迟信号确认(等待K线闭合)
longCondition = fanUpTrend and bullishPinBar[1]  // 延迟1根K线
shortCondition = fanDnTrend and bearishPinBar[1]

// ≡≡≡≡≡≡≡≡≡≡≡≡≡≡≡≡≡≡≡≡≡≡≡≡≡≡≡≡≡≡≡≡≡≡≡≡≡≡≡≡≡≡≡≡≡≡≡≡≡≡≡≡≡
// 交易执行系统(仅修改风险计算部分)
// ≡≡≡≡≡≡≡≡≡≡≡≡≡≡≡≡≡≡≡≡≡≡≡≡≡≡≡≡≡≡≡≡≡≡≡≡≡≡≡≡≡≡≡≡≡≡≡≡≡≡≡≡≡
enterlong() =>
    risk = usr_risk * 0.01 * strategy.equity * leverage  // 添加杠杆影响
    stopLoss = confirmedLow - atr * atr_mult
    entryPrice = confirmedHigh
    units = risk / (entryPrice - stopLoss)
    strategy.entry('long', strategy.long, units, stop=entryPrice)
    strategy.exit('exit long', from_entry='long', trail_points=slPoints, trail_offset=slOffset)

entershort() =>
    risk = usr_risk * 0.01 * strategy.equity * leverage  // 添加杠杆影响
    stopLoss = confirmedHigh + atr * atr_mult
    entryPrice = confirmedLow
    units = risk / (stopLoss - entryPrice)
    strategy.entry('short', strategy.short, units, stop=entryPrice)
    strategy.exit('exit short', from_entry='short', trail_points=slPoints, trail_offset=slOffset)



// ≡≡≡≡≡≡≡≡≡≡≡≡≡≡≡≡≡≡≡≡≡≡≡≡≡≡≡≡≡≡≡≡≡≡≡≡≡≡≡≡≡≡≡≡≡≡≡≡≡≡≡≡≡
// 交易执行系统
// ≡≡≡≡≡≡≡≡≡≡≡≡≡≡≡≡≡≡≡≡≡≡≡≡≡≡≡≡≡≡≡≡≡≡≡≡≡≡≡≡≡≡≡≡≡≡≡≡≡≡≡≡≡
if longCondition 
    enterlong()

if shortCondition 
    entershort()
strategy.cancel('long', ta.barssince(longCondition) > ent_canc)
strategy.cancel('short', ta.barssince(shortCondition) > ent_canc)

strategy.close_all(when=hour == 16 and dayofweek == dayofweek.friday, comment='exit all, market-closed')
strategy.close_all(when=ta.crossunder(fastEMA, medmEMA), comment='exit long, re-cross')
strategy.close_all(when=ta.crossover(fastEMA, medmEMA), comment='exit short, re-cross')

plot(fastEMA, "快EMA", color.new(#FF6B00, 0), 2)
plot(medmEMA, "中EMA", color.new(#0096FF, 0), 2)
plot(slowSMA, "慢SMA", color.new(#00C800, 0), 2)

plotshape(longCondition, "多信号", shape.labelup, location.belowbar, color=#00FF00, text="▲", textcolor=#FFFFFF)
plotshape(shortCondition, "空信号", shape.labeldown, location.abovebar, color=#FF0000, text="▼", textcolor=#FFFFFF)