이치모쿠 클라우드와 이동 평균에 기반한 양적 거래 전략

저자:차오장, 날짜: 2024-02-20 17:12:35
태그:

img

전반적인 설명

이 전략은 이치모쿠 클라우드 지표와 이동평균 지표를 결합하여 간단한 양적 거래 전략을 구현합니다. 전환선이 기본선 위에 있고 종료 가격이 전환선 위에있을 때 구매 신호를 생성합니다. 전환선이 기본선 아래에 있고 종료 가격이 전환선 아래에있을 때 판매 신호를 생성합니다. 이 전략은 암호화폐와 같은 높은 변동성 자산의 단기 거래에 적합합니다.

전략 논리

이치모쿠 클라우드는 변환선, 기본선 및 지연 스판 (lagging span) 이라는 세 개의 라인을 포함하고 있다. 변환선은 단기 평균 가격을, 기본선은 장기 평균 가격을 나타낸다. 지연 스판은 일반적으로 변환과 기본선의 평균이다. 단기 평균이 장기 평균보다 높을 때 상승 추세를 나타낸다.

이치모쿠 클라우드는 또한 두 개의 선도선을 포함하고 있습니다: 선도 스판 A 및 선도 스판 B. 그들은 다른 기간 동안 가격 변동의 평균 범위를 나타냅니다. 선도 스판 A가 선도 스판 B보다 높으면 단기간에 변동성과 상승 동력을 확대하는 것을 나타냅니다.

이 전략은 전체 트렌드 방향을 결정하기 위해 전환선을 사용하며 추진력을 측정하기 위해 선도선을 사용합니다. 트렌드, 추진력 및 폐쇄 가격에 따라 거래 신호를 생성합니다. 상승 추세와 확장 변동성이있을 때 길게 이동하고 하락 추세와 수축 변동성이있을 때 짧게 이동합니다.

장점

이 전략의 주요 장점은 다음과 같습니다.

  1. 신뢰할 수 있는 신호를 제공하기 위해 지표의 조합을 사용합니다.
  2. 거짓 신호를 피하기 위해 단 단탄한 탈출구에서만 진입합니다.
  3. 높은 수익 잠재력을 가진 단기 거래에 적합합니다.
  4. 이해하기 쉽고 수정하기 쉬운 간단한 논리입니다.
  5. 더 많은 지표가 있는 다인자 모델로 쉽게 확장할 수 있습니다.

위험성

이 전략의 주요 위험은 다음과 같습니다.

  1. 미스트레이드 위험, 거래당 손실을 조절하기 위해 스톱 로스를 설정해야 합니다.
  2. 가격 반전 위험. 신호가 발사 된 후 가격이 반전 될 수 있습니다. 이 위험을 줄이기 위해 보유 조건을 느슨하게 할 수 있습니다.
  3. 파라미터 최적화 위험. 결과는 파라미터에 민감합니다. 최적을 찾기 위해 철저한 조합 테스트가 필요합니다.
  4. 과도한 위험. 역사적으로 매우 잘 수행 할 수 있지만 실제 거래에서 실패합니다. 매개 변수 조합을 제한해야합니다.

더 나은 기회

이 전략이 향상될 수 있는 몇 가지 방법:

  1. 더 나은 매개 변수를 찾기 위해 KDJ, BOLL, MACD와 같은 더 많은 지표의 조합을 테스트하십시오.
  2. 스톱 로스 메커니즘을 포함합니다. 스톱 로스 이동이나 x 곱하기 atr와 같이요.
  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")


더 많은