이치모쿠 균형과 암묵적 갈등을 기반으로 한 양적 거래 전략


생성 날짜: 2024-02-20 17:12:35 마지막으로 수정됨: 2024-02-20 17:12:35
복사: 0 클릭수: 606
avatar of ChaoZhang ChaoZhang
1
집중하다
1617
수행원

이치모쿠 균형과 암묵적 갈등을 기반으로 한 양적 거래 전략

개요

이 전략은 직시 균형 지표와 암시 충돌 지표를 결합하여 비교적 간단한 양적 거래 전략을 구현한다. 직시 균형 선이 암시 충돌 선보다 높고 종결 가격이 직시 균형 선보다 높을 때 구매 신호를 생성하고, 직시 균형 선이 암시 충돌 선보다 낮고 종결 가격이 직시 균형 선보다 낮을 때 판매 신호를 생성한다. 이 전략은 암호화폐와 같은 고 변동성 자산의 단선 거래에 적합하다.

전략 원칙

1차 균형 지표는 전전선, 기준선, 지연선 세 개의 곡선을 포함한다. 전전선은 가장 최근의 일정 기간의 평균값을 나타내고, 기준선은 더 긴 기간의 평균값을 나타내고, 지연선은 보통 전전선과 기준선의 평균값이다. 단기 평균값이 장기 평균값보다 높을 때, 현재 가격 상승 경향에 있음을 나타낸다.

숨겨진 충돌 지표는 선행선 A와 선행선 B의 두 곡선을 포함한다. 이들은 서로 다른 길이의 기간 동안 가격 변동의 폭을 나타내는 평균값이다. 선행선 A가 선행선 B보다 높을 때, 단기간에 변동이 증가하여 가격 상승이 충분하다는 것을 나타냅니다.

이 전략은 초시평형선을 이용하여 대략적인 트렌드 방향을 판단하고, 숨겨진 충돌 선행선을 이용하여 가격 동력을 판단하고, 종결 가격과 결합하여 정확한 거래 신호를 형성한다. 상승 추세와 변동이 확대될 때 구매하고, 하락 추세와 변동이 축소될 때 판매하여 수익을 얻는다.

전략적 이점

이것은 간단한 양적 거래 전략으로 다음과 같은 장점이 있습니다.

  1. 지표의 조합을 사용하여 가격 추세와 동력을 종합적으로 판단하여 거래 신호가 더 신뢰할 수 있습니다.
  2. 특정 브레이크포인트에서만 입점하면 무효 거래가 너무 많이 발생하지 않습니다.
  3. 높은 변동성 자산에 적합한 단선 거래는 더 많은 수익을 얻을 수 있습니다.
  4. 전략 논리는 간단하고, 이해하기 쉽고, 수정하기 쉽습니다.
  5. 더 많은 지표를 쉽게 확장하여 다중 인자 모델을 형성할 수 있습니다.

위험 분석

이 전략에는 다음과 같은 위험도 있습니다.

  1. mistrade 위험. 단편적 손실을 통제하기 위해 스톱을 설정해야 한다.
  2. 가격 역전 위험. 지표가 신호를 보낸 후 가격이 역전되어 손실이 발생할 수 있습니다. 이 위험을 줄이기 위해 포지션 조건을 적절하게 완화 할 수 있습니다.
  3. 매개 변수 최적화 위험. 다른 매개 변수가 결과에 큰 영향을 미치므로, 여러 조합 테스트를 통해 최적의 매개 변수를 찾아내는 것이 필요하다.
  4. 과도한 최적화 위험. 역사적인 데이터에서 잘하지만 실제 거래에서는 실패한다. 과도한 최적화를 피하기 위해 변수 조합의 수를 제어해야합니다.

전략 최적화

이 정책은 다음과 같은 부분에서 최적화될 수 있습니다.

  1. 더 많은 지표의 조합을 테스트하여 더 좋은 변수를 찾으십시오. KDJ, BOLL, MACD 등이 일반적으로 시도 할 수 있습니다.
  2. 손해 중지 메커니즘에 가입하십시오. 이동식 손해 중지 또는 배수 손해 중지 설정하십시오.
  3. 입시 필터링 조건을 최적화한다. 거래량이나 변동률 지표 등을 포함할 수 있다.
  4. 포지션 보유 규칙을 최적화하십시오.
  5. 기계 학습 요소를 추가한다. 신경 네트워크와 같은 더 나은 파라미터 조합을 찾는다.

요약하다

이 전략은 전체적으로 매우 간단한 양적 거래 전략으로, 일목의 균형선과 숨겨진 충돌 지표와 결합하여 가격 추세와 동력을 판단하여 거래 신호를 형성한다. 이 전략은 높은 변동성 자산의 단선 거래에 적합하며, 좋은 수익을 얻을 수 있다. 물론, 어떤 전략도 완벽할 수 없으며, 이 전략에는 약간의 최적화 공간이 있으며, 출장 규칙, 손해 방지 장치, 선택 파라미터 등의 측면에서 개선될 수 있어, 그 효과를 더 좋게 할 수 있다.

전략 소스 코드
/*backtest
start: 2024-01-20 00:00:00
end: 2024-02-19 00:00:00
period: 1h
basePeriod: 15m
exchanges: [{"eid":"Futures_Binance","currency":"BTC_USDT"}]
*/

//@version=5
strategy("Ichimoku Cloud + ema 50 Strategy", overlay=true)

len = input.int(50, minval=1, title="Length")
src = input(close, title="Source")
out = ta.ema(src, len)

conversionPeriods = input.int(9, minval=1, title="Conversion Line Length")
basePeriods = input.int(26, minval=1, title="Base Line Length")
laggingSpan2Periods = input.int(52, minval=1, title="Leading Span B Length")
displacement = input.int(1, minval=1, title="Lagging Span")

donchian(len) => math.avg(ta.lowest(len), ta.highest(len))
conversionLine = donchian(conversionPeriods)
baseLine = donchian(basePeriods)
leadLine1 = math.avg(conversionLine, baseLine)
leadLine2 = donchian(laggingSpan2Periods)

p1 = plot(leadLine1, offset = displacement - 1, color=#A5D6A7,
     title="Leading Span A")
p2 = plot(leadLine2, offset = displacement - 1, color=#EF9A9A,
     title="Leading Span B")
fill(p1, p2, color = leadLine1 > leadLine2 ? color.rgb(67, 160, 71, 90) : color.rgb(244, 67, 54, 90))

plot(out, title="EMA", color=color.white)

// Condition for Buy Signal
buy_signal = close > out and leadLine1 > leadLine2

// Condition for Sell Signal
sell_signal = close < out and leadLine2 > leadLine1

// Strategy entry and exit conditions
if (buy_signal)
    strategy.entry("Buy", strategy.long)
if (sell_signal)
    strategy.entry("Sell", strategy.short)

// Exit long position if candle closes below EMA 50
if (strategy.opentrades > 0)
    if (close < out)
        strategy.close("Buy")

// Exit short position if candle closes above EMA 50
if (strategy.opentrades < 0)
    if (close > out)
        strategy.close("Sell")