클라우드 브레이크아웃을 기반으로 한 듀얼 이동 평균 모멘텀 전략

CLOUD MA
생성 날짜: 2025-02-08 15:10:06 마지막으로 수정됨: 2025-02-08 15:10:06
복사: 4 클릭수: 330
avatar of ChaoZhang ChaoZhang
1
집중하다
1617
수행원

클라우드 브레이크아웃을 기반으로 한 듀얼 이동 평균 모멘텀 전략

개요

이 전략은 클라우드 브레이크와 쌍평선 교차를 기반으로 한 동적 거래 시스템이다. 시장의 동향 방향과 동력의 변화를 식별하기 위해 클라우드 지표의 여러 구성 요소를 결합하여 가격과 클라우드의 위치 관계 및 전환선과 기준선과의 교차를 통해 거래 신호를 생성한다. 전략의 핵심 아이디어는 강력한 추세에서 동적 기회를 포착하는 것이다.

전략 원칙

이 전략은 다음과 같은 핵심 요소들을 사용합니다.

  1. 전환선 ((Tenkan-Sen): 9주기의 최고 가격과 최저 가격의 중간 지점을 계산하여 단기 시장 추세를 반영합니다.
  2. 기준선 ((Kijun-Sen): 26주기의 최고 가격과 최저 가격의 중간 지점을 계산하여 중기 시장 추세를 반영합니다.
  3. 선행역 A ((Senkou Span A): 전환선과 기준선의 평균, 26주기를 앞으로 이동
  4. 선행 밴드 B ((Senkou Span B): 52주기 동안의 최고 가격과 최저 가격의 중간 지점을 계산하여 26주기를 앞으로 이동
  5. 뒤떨어진 라인 ((Chikou Span): 현재 종결 가격 26주기 후진

입장 조건:

  • 다중 머리: 가격이 구름층 위에 위치하고 (지구선 A와 B보다 높게) 그리고 전환선에서 기준선을 통과한다
  • 공백: 가격이 구름 아래에 위치하고 (이하 선행 A와 B) 그리고 전환 라인은 기준 라인을 통과합니다.

출구 조건: 반대의 거래 신호가 발생했을 때 평점

전략적 이점

  1. 다중 시간 프레임 분석: 다른 주기에서 지표 조합을 통해 더 포괄적인 시장 관점을 제공합니다.
  2. 트렌드 확인: 트렌드 필터로 클라우드 위치를 사용하여 가짜 돌파의 위험을 줄이십시오.
  3. 동력 인식: 평행선 교차로 동력 변화를 포착하여 출전 시기의 정확성을 향상시킵니다.
  4. 자기 적응성: 지표 매개 변수는 시장의 변동에 따라 자동으로 조정되어 다른 시장 환경에 적응합니다.
  5. 시각적 직관: 동향의 방향과 강도를 보여주는 구름의 시각화

전략적 위험

  1. 위기 시장 위험: 수평 정리 단계에서 빈번한 잘못된 신호가 발생할 수 있습니다.
  2. 뒤떨어진 위험: 더 긴 주기의 이동 평균을 사용하여 빠른 시장 기회를 놓칠 수 있습니다.
  3. 매개 변수 민감성: 다른 매개 변수 설정은 전략 성능에 큰 영향을 미칩니다.
  4. 트렌드 리버스 위험: 급격한 트렌드 리버스가 발생할 경우 큰 회수

위험 관리 제안:

  • 다른 기술 지표와 상호 검증
  • 적절한 손절매 포지션을 설정하세요
  • 다른 시장 주기의 동적에 따라 조정 변수
  • 포지션 관리 전략

전략 최적화 방향

  1. 변수 최적화:
  • 다양한 시장 환경에 대한 변수 민감성 분석
  • 적응 변수 조정 메커니즘을 도입
  1. 신호 필터:
  • 거래량 확인 메커니즘 추가
  • 변동성 필터 추가
  • 시장 구조 분석과 함께
  1. 위험 관리:
  • 역동적 상쇄 메커니즘 개발
  • 변동률 기반의 포지션 관리를 구현
  • 복귀 제어 모듈에 추가

요약하다

이것은 트렌드 추적과 동적 거래를 결합한 통합 전략 시스템입니다. 클라우드 돌파구와 일률적 교차의 조합을 통해 전략의 안정성을 유지하면서 시장의 트렌드 기회를 효과적으로 포착 할 수 있습니다. 전략의 성공적인 적용은 파라미터 최적화, 위험 제어 및 시장 적응의 세 가지 중요한 측면에 진지하게 관심을 기울여야합니다.

전략 소스 코드
/*backtest
start: 2024-02-08 00:00:00
end: 2025-02-06 08:00:00
period: 2d
basePeriod: 2d
exchanges: [{"eid":"Futures_Binance","currency":"BTC_USDT"}]
*/

//@version=5
strategy("Ichimoku Cloud Strategy", shorttitle="IchimokuStrat", overlay=true)

//=== Užívateľské vstupy ===//
tenkanLen          = input.int(9,   "Tenkan-Sen Length")
kijunLen           = input.int(26,  "Kijun-Sen Length")
senkouSpanBLen     = input.int(52,  "Senkou Span B Length")
displacement       = input.int(26,  "Cloud Displacement")

//=== Výpočet Ichimoku liniek ===//

// Tenkan-Sen (Conversion Line)
tenkanHigh = ta.highest(high, tenkanLen)
tenkanLow  = ta.lowest(low, tenkanLen)
tenkan     = (tenkanHigh + tenkanLow) / 2.0

// Kijun-Sen (Base Line)
kijunHigh = ta.highest(high, kijunLen)
kijunLow  = ta.lowest(low, kijunLen)
kijun     = (kijunHigh + kijunLow) / 2.0

// Senkou Span A = (Tenkan + Kijun)/2, posunutý dopredu
spanA = (tenkan + kijun) / 2.0

// Senkou Span B = (highest high + lowest low)/2, posunutý dopredu
spanBHigh = ta.highest(high, senkouSpanBLen)
spanBLow  = ta.lowest(low, senkouSpanBLen)
spanB     = (spanBHigh + spanBLow) / 2.0

// Chikou Span (voliteľný) = current close, posunutý dozadu
chikou = close[displacement]

//=== Podmienky pre LONG / SHORT ===//
// Cena NAD oblakom => close > spanA a close > spanB
// Tenkan NAD Kijun => tenkan > kijun
longCondition = (close > spanA and close > spanB) and (tenkan > kijun)

// Cena POD oblakom => close < spanA a close < spanB
// Tenkan POD Kijun => tenkan < kijun
shortCondition = (close < spanA and close < spanB) and (tenkan < kijun)

//=== Vstup do pozícií ===//
if longCondition
    strategy.entry("Long", strategy.long)
if shortCondition
    strategy.entry("Short", strategy.short)

//=== Výstup pri opačnom signáli ===//
if strategy.position_size > 0 and shortCondition
    strategy.close("Long", comment="Exit Long")
if strategy.position_size < 0 and longCondition
    strategy.close("Short", comment="Exit Short")

//=== Vykreslenie Ichimoku = vyplnený oblak ===//

// Najskôr si ulož premenne (plot) pre spanA, spanB
plotA = plot(spanA, title="Span A", offset=displacement, color=color.new(color.green, 0))
plotB = plot(spanB, title="Span B", offset=displacement, color=color.new(color.red, 0))

// Namiesto plotfill() použijeme fill()
fill(plotA, plotB, title="Cloud Fill", color=color.new(color.green, 80))