역사적 가격 돌파 하이브리드 트렌드 트레이딩 시스템(HBTS)

MA SMA EMA WMA VWMA
생성 날짜: 2024-12-05 14:40:05 마지막으로 수정됨: 2024-12-05 14:40:05
복사: 0 클릭수: 431
avatar of ChaoZhang ChaoZhang
1
집중하다
1617
수행원

역사적 가격 돌파 하이브리드 트렌드 트레이딩 시스템(HBTS)

개요

이 전략은 역사적인 가격 돌파구와 평행선 필터를 기반으로 한 트렌드 추적 시스템이다. 이 전략은 다중 주기적 가격 돌파구 신호와 이동 평균을 결합하여 시장 트렌드를 식별하고, 엄격한 출구 규칙을 통해 중기 및 장기 시장 움직임을 포착한다. 이 전략은 55 일간의 가격 돌파구를 다중 신호로 사용하고, 20 일간의 가격 돌파구를 평행 위치 신호로 사용하고, 200 일간의 평행선을 트렌드 필터로 도입하여假破裂으로 인한 위험을 효과적으로 줄인다.

전략 원칙

이 전략의 핵심 논리는 가격 돌파구와 트렌드 추적에 기반을 두고 있습니다.

  1. 입시 신호: 가격이 55 일간의 최고치를 기록하고 200 일간의 평균선 위에 위치하고 있을 때 시스템에서 여러 신호를 발송합니다.
  2. 출구 신호: 가격이 20일 하락을 기록했을 때 시스템 평점으로 거래 종료
  3. 트렌드 필터: 200 일 평균선을 대 트렌드 판단 기준으로 사용하여 평균선 위에만 포지션을 개설하십시오.
  4. 포지션 관리: 매 거래에 10%의 계좌 순액을 사용함
  5. 평선 선택: SMA, EMA, WMA, VWMA 네 가지 평선 방식을 지원하며, 시장 특성에 따라 유연하게 선택할 수 있습니다.

전략적 이점

  1. 논리는 간단하고 명확합니다: 전략은 고전적인 가격 돌파구와 평균 지표를 사용하여 이해하기 쉽고 실행됩니다.
  2. 리스크 제어: 명확한 중지 조건이 설정되어 있으며, 일률적인 필터링과 포지션 제어로 리스크를 관리합니다.
  3. 적응력: 매개 변수를 조정하여 다양한 시장 환경에 적응할 수 있습니다.
  4. 트렌드 포착 능력: 여러 시간 주기의 가격 돌파구를 통해 트렌드 방향을 확인
  5. 높은 수준의 자동화: 명확한 정책 규칙, 프로그램화된 실행

전략적 위험

  1. 위기 시장 위험: 수평 정리 단계에서 가짜 브레이크 신호가 발생할 수 있습니다.
  2. 슬라이드 위험: 유동성이 낮은 시장에서, 브레이크 시 슬라이드가 더 커질 수 있습니다.
  3. 트렌드 리버스 위험: 큰 트렌드 전환점 근처에서 큰 회전이 발생할 수 있습니다.
  4. 매개 변수 감수성: 시장 환경에 따라 최적 매개 변수가 크게 다를 수 있다.
  5. 자금 관리 위험: 고정 비율 포지션은 경우에 따라 과도한 위험이 될 수 있습니다.

전략 최적화 방향

  1. 신호 확인 메커니즘: 거래량 돌파구와 같은 보조 지표를 추가하여 가짜 돌파구를 필터링 할 수 있습니다.
  2. 다이내믹 스톱로즈: ATR과 같은 변동률 지표를 도입하여 다이내믹 스톱로즈를 구현한다
  3. 포지션 관리 최적화: 시장의 변동에 따라 포지션 비율을 동적으로 조정
  4. 다중주기 분석: 신호 신뢰성을 높이기 위해 더 많은 시간 주기의 분석을 추가
  5. 시장 환경 식별: 현재의 시장 환경을 판단하기 위해 트렌드 강도 지표를 추가

요약하다

이것은 고전적인 해파리 거래 법칙과 현대적인 기술 분석 도구를 결합한 전략 시스템이다. 가격 돌파구를 통해 트렌드를 포착하고, 평평선 필터를 사용하여 방향을 확인하고, 합리적인 포지션 관리와 함께 위험을 제어한다. 전략 논리는 명확하고, 실용성이 강하며, 좋은 확장성을 가지고 있다.

전략 소스 코드
/*backtest
start: 2019-12-23 08:00:00
end: 2024-12-04 00:00:00
period: 1d
basePeriod: 1d
exchanges: [{"eid":"Futures_Binance","currency":"BTC_USDT"}]
*/

//@version=5
strategy("Turtle Traders - Andrei", overlay=true, 
     default_qty_type=strategy.percent_of_equity, default_qty_value=10)

// ====== Inputs ======
// Período para a máxima das compras
lookback_buy = input.int(title="Período para Máxima de Compra", defval=55, minval=1)

// Período para a mínima das vendas
lookback_sell = input.int(title="Período para Mínima de Venda", defval=20, minval=1)

// Período da Média Móvel
ma_length = input.int(title="Período da Média Móvel", defval=200, minval=1)

// Tipo de Média Móvel
ma_type = input.string(title="Tipo de Média Móvel", defval="SMA", options=["SMA", "EMA", "WMA", "VWMA"])

// ====== Cálculos ======
// Cálculo da Média Móvel baseada no tipo selecionado
ma = switch ma_type
    "SMA" => ta.sma(close, ma_length)
    "EMA" => ta.ema(close, ma_length)
    "WMA" => ta.wma(close, ma_length)
    "VWMA" => ta.vwma(close, ma_length)

// Cálculo da máxima dos últimos 'lookback_buy' candles
highest_buy = ta.highest(high, lookback_buy)

// Cálculo da mínima dos últimos 'lookback_sell' candles
lowest_sell = ta.lowest(low, lookback_sell)

// ====== Condições de Negociação ======
// Condição de entrada: fechamento acima da máxima dos últimos 'lookback_buy' candles E acima da MA
longCondition = (high == highest_buy) and (close > ma)

if (longCondition)
    strategy.entry("Comprar", strategy.long)

// Condição de saída: fechamento abaixo da mínima dos últimos 'lookback_sell' candles
exitCondition = (low == lowest_sell)

if (exitCondition)
    strategy.close("Comprar")

// ====== Plotagens ======
// Plotar a máxima de 'lookback_buy' candles
plot(highest_buy, color=color.green, title="Máxima", linewidth=2)

// Plotar a mínima de 'lookback_sell' candles
plot(lowest_sell, color=color.red, title="Mínima", linewidth=2)

// Plotar a Média Móvel
plot(ma, color=color.blue, title="Média Móvel", linewidth=2)

// ====== Sinais Visuais ======
// Sinal de entrada
plotshape(series=longCondition, location=location.belowbar, color=color.green, 
          style=shape.labelup, title="Sinal de Compra", text="")

// Sinal de saída
plotshape(series=exitCondition, location=location.abovebar, color=color.red, 
          style=shape.labeldown, title="Sinal de Venda", text="")