이치모쿠 클라우드 차트를 기반으로 한 양적 거래 전략


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

이치모쿠 클라우드 차트를 기반으로 한 양적 거래 전략

개요

이 전략은 이치모쿠 클라우드 그래프 지표에 기반하여 양적 거래 시스템을 설계했으며, 주로 좋은 추세를 보이는 자산에 사용한다. 이 전략은 안정적인 수익을 달성하기 위해 중단, 중단, 중단 추적 등의 기능을 통합했다.

전략 원칙

이치모쿠 클라우드 그래프는 전환선, 기준선, 전각선 1, 전각선 2, 그리고 클라우드 그래프로 구성된다. 이 전략의 거래 신호는 가격과 전각선과의 관계에서 나온다. 구체적으로, 가격이 상단 전각선 1을 통과하면 구매 신호가 발생하고, 가격이 하단 전각선 1을 통과하면 판매 신호가 발생한다. 또한, 전각선 2는 보조 판단 지표로도 쓰인다.

이 전략은 또한 ATR 지표에 기반한 중지 손실과 중단 지점을 설정합니다. ATR 지표는 시장의 변동성을 효과적으로 포착 할 수 있습니다. 중지 손실은 ATR의 2 배이며, 중지 중지량은 ATR의 4 배입니다. 이것은 단편 손실을 효과적으로 제어하고 수익의 일부를 잠금 할 수 있습니다.

마지막으로, 이 전략은 추적 스톱 메커니즘을 채택한다. 구체적으로, 더 많은 주문을 할 경우, ATR의 2배를 후퇴로 설정하여 수익을 잠금하기 위해 스톱 라인을 실시간으로 조정한다.

전략적 강점 분석

  1. 이치모쿠 클라우드 그래프 지표에 기반하여 트렌드를 효과적으로 파악할 수 있습니다.
  2. ATR 지표와 결합하여 손실을 중지하여 위험을 제어합니다.
  3. 트래킹 스톱로스 (Tracking Stop Loss) 를 사용하면 수익을 잘 고정할 수 있습니다.
  4. 전략 논리는 간단하고 명확하며 이해하기 쉽고 검증 가능합니다.
  5. 다른 시장에 따라 조정 가능한 매개 변수

위험 분석

  1. 이치모쿠 클라우드 그래프는 파라머 설정에 민감하며, 부적절한 설정으로 거래 기회를 놓치거나 잘못된 신호를 생성할 수 있다.
  2. 추적 중지 설정이 너무 커지면 손실이 너무 빨리 중단 될 수 있습니다.
  3. 강력한 주식은 ATR 지표가 제시한 스톱 라인을 뚫거나 스톱 라인을 추적할 수 있습니다.
  4. 거래 비용도 수익성에 영향을 미칩니다.

위험과 대응하는 방법:

  1. 이치모쿠 클라우드 지도의 파라미터를 최적화하여 가장 적합한 설정을 찾습니다.
  2. 적당한 추적 중지 손실을 평가합니다. 너무 크거나 너무 작지 않습니다.
  3. 강력한 주식들에 대해 적절히 완화할 수 있는 손해배상 범위
  4. 낮은 수수료가 있는 증권사 선택

전략 최적화 방향

  1. 다른 기술 지표와 결합하여 신호 필터링을 사용하여 잘못된 거래를 줄이십시오.
  2. 역사 데이터 / 재검토에 기반하여 파라미터를 최적화
  3. 다른 품종의 파라미터 설정은 개별적으로 최적화할 수 있습니다.
  4. 동적으로 조정할 수 있습니다.
  5. 알고리즘과 결합하여 특징을 설계하여 더 신뢰할 수 있는 거래 신호를 구축합니다.

요약하다

이 전략은 전반적으로 안정적인 트렌드 추적 전략이다. 이치모쿠 클라우드 그래프 지표를 기반으로 트렌드 방향을 판단한다. ATR 지표를 사용하여 중지 손실을 설정한다. 추적 중지 손실을 사용하여 수익을 잠금한다. 장점은 논리적으로 간결하고 이해하기 쉽다. 단일 손실을 제어할 수 있다.

전략 소스 코드
/*backtest
start: 2023-01-05 00:00:00
end: 2024-01-11 00:00:00
period: 1d
basePeriod: 1h
exchanges: [{"eid":"Futures_Binance","currency":"BTC_USDT"}]
*/

//@version=5
strategy("Ichimoku Cloud Strategy with SL, TP, and Trailing Stop", overlay=true)

conversionPeriods = input(9, "Conversion Line Length")
basePeriods = input(26, "Base Line Length")
laggingSpan2Periods = input(52, "Leading Span B Length")
displacement = input(26, "Lagging Span")
atrLength = input(14, title="ATR Length")

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

// Plot the Ichimoku Cloud components
plot(conversionLine, color=color.blue, title="Conversion Line")
plot(baseLine, color=color.red, title="Base Line")
plot(leadLine1, color=color.green, title="Leading Span A")
plot(leadLine2, color=color.orange, title="Leading Span B")
plot(leadLine1 > leadLine2 ? leadLine1 : leadLine2, color=color.green, title="Kumo Cloud Upper Line")
plot(leadLine1 < leadLine2 ? leadLine1 : leadLine2, color=color.red, title="Kumo Cloud Lower Line")

// ATR for stop loss and take profit
atrValue = ta.atr(atrLength)
stopLoss = atrValue * 2
takeProfit = atrValue * 4

// Strategy entry and exit conditions
longCondition = ta.crossover(close, leadLine1) and close > leadLine2
shortCondition = ta.crossunder(close, leadLine1) and close < leadLine2

// Plot buy and sell signals
plotshape(series=longCondition ? leadLine1 : na, title="Buy Signal", location=location.belowbar, color=color.green, style=shape.triangleup, size=size.small)
plotshape(series=shortCondition ? leadLine1 : na, title="Sell Signal", location=location.abovebar, color=color.red, style=shape.triangledown, size=size.small)

// Execute strategy orders with stop loss and take profit
strategy.entry("Buy", strategy.long, when=longCondition)
strategy.close("Buy", when=shortCondition) // Close buy position when sell condition is met
strategy.entry("Sell", strategy.short, when=shortCondition)
strategy.close("Sell", when=longCondition) // Close sell position when buy condition is met

// Trailing stop
strategy.cancel("Trailing Stop")
var float trailingStopPrice = na
if (longCondition)
    trailingStopPrice := math.max(trailingStopPrice, close - atrValue * 2)
    strategy.exit("Trailing Stop", from_entry="Buy", trail_offset=atrValue * 2, trail_price=trailingStopPrice)
else if (shortCondition)
    trailingStopPrice := math.min(trailingStopPrice, close + atrValue * 2)
    strategy.exit("Trailing Stop", from_entry="Sell", trail_offset=atrValue * 2, trail_price=trailingStopPrice)