이치모쿠의 전략

저자:차오장, 날짜: 2024-01-31 15:23:21
태그:

img

전반적인 설명

이치모쿠 엔트리는 이치모쿠 클라우드 차트를 사용하여 트렌드 방향을 식별하고 볼링거 밴드 및 RSI 지표와 결합하여 거래 신호를 생성하는 양적 전략입니다. 이 전략은 주로 시장이 현재 텐칸 라인과 키준 라인의 황금 십자가 또는 죽음의 십자가에 따라 상승 추세 또는 하락 추세에 있는지 여부를 결정하고 따라서 긴 및 짧은 포지션에 대한 엔트리 신호를 생성합니다.

전략 논리

이 전략의 핵심은 이치모쿠 클라우드 차트의 두 가지 중요한 라인 - 텐칸 라인과 키준 라인 - 에 있다. 텐칸 라인은 최근 9일 동안 가장 높은 최고와 가장 낮은 최저의 평균이며, 단기 트렌드를 나타낸다. 키준 라인은 지난 26일 동안 가장 높은 최고와 가장 낮은 최저의 평균이며, 중장기 트렌드를 나타낸다. 텐칸 라인이 키준 라인의 위를 넘을 때, 그것은 긴 진입을 신호한다. 텐칸 라인이 키준 라인의 아래로 떨어지면, 그것은 짧은 진입을 신호한다. 이것은 현재의 트렌드 방향을 판단한다.

이치모쿠 클라우드 외에도 전략은 거래 신호를 생성하기 위해 볼링거 밴드 (Bollinger Bands) 및 RSI 지표 (RSI indicator) 를 살펴본다. 폐쇄 가격이 상부 또는 하부 볼링거 밴드를 넘어서면 비정상적인 가격 활동의 징후로 간주됩니다. 과잉 구매 또는 과잉 판매 조건을 결정하기 위해 RSI 지표를 통합하여 일부 잘못된 브레이크오웃을 필터링하여 유효한 입시 신호를 생성 할 수 있습니다.

출구 논리에서는 볼링거 밴드 브레이크오웃이 성공했는지, 트레이드 근접 오시레이터가 0축을 통과하는지 확인하여 수익을 차단하거나 손실을 중단하기로 결정합니다.

이점 분석

이 전략의 가장 큰 장점은 트렌드 결정과 비정상적인 가격 변동을 결합하여 거래 방향을 확인한다는 것입니다. 이치모쿠 클라우드는 트렌드를 명확하게 드러내며 볼링거 밴드는 이상성을 포착합니다. RSI는 잘못된 브레이크오웃을 효과적으로 필터합니다. 여러 개의 조정된 지표의 사용은 거래 신호를 더 신뢰할 수있게 만듭니다. 또한, 스톱 로스와 취득 로직은 이익을 잠금하고 큰 손실을 피하는 데 도움이됩니다.

위험 분석

트렌드 및 변칙을 식별 할 수있는 우위를 가지고 있음에도 불구하고 전략은 여전히 몇 가지 위험을 초래합니다. 트렌드와 함께 거래하기 때문에 범위 시장에서 많은 잘못된 신호가 나타날 수 있습니다. 잘못된 매개 변수 설정은 전략의 성능을 악화시킬 수 있습니다. 다양한 매개 변수 조합을 테스트하고 최적의 값을 찾기 위해 단계적 최적화가 권장됩니다.

최적화 방향

이 전략은 다음과 같은 측면에서 업그레이드 될 수 있습니다.

  1. 볼링거 기간, RSI 기간 등 다양한 매개 변수 조합을 테스트합니다.
  2. 기계 학습 모델을 도입하고, 역사적인 데이터에 기반한 동적 출력 매개 변수를
  3. 시장 정서를 결정하기 위해 정보 흐름을 통합하고, 중요한 순간에 잘못된 움직임을 피하십시오.
  4. 이윤을 유지하기 위해 후속 스톱과 같은 조건형 스톱 손실 방법을 추가합니다.

결론

이치모쿠 엔트리 전략은 다중 지표 통합 트렌드 거래 전략이다. 트렌드 방향과 가격 이상성을 판단함으로써 시장 리듬을 상당히 안정적으로 포착합니다. 개선할 여지가 있지만 전반적으로 이것은 일관된 성과와 제어 가능한 위험에 대한 전략입니다. 매개 변수 조정 및 기계 학습의 도입은이 전략을 더욱 탁월하게 만들 수 있습니다.


/*backtest
start: 2023-01-30 00:00:00
end: 2024-01-30 00:00:00
period: 1d
basePeriod: 1h
exchanges: [{"eid":"Futures_Binance","currency":"BTC_USDT"}]
*/

//@version=5
strategy("ichi strategy", overlay=true)

// Input parameters
rsiLength = input(14, title="RSI Length")
bbLength = input(20, title="Bollinger Bands Length")
bbMultiplier = input(2, title="Bollinger Bands Multiplier")
stopLossPct = input(1, title="Stop Loss Percentage")
takeProfitPct = input(2, title="Take Profit Percentage")

// Calculate Ichimoku Cloud components
tenkan = ta.sma(high + low, 9) / 2
kijun = ta.sma(high + low, 26) / 2
senkouA = (tenkan + kijun) / 2
senkouB = ta.sma(high + low, 52) / 2

// Bollinger Bands
basis = ta.sma(close, bbLength)
upperBB = basis + bbMultiplier * ta.stdev(close, bbLength)
lowerBB = basis - bbMultiplier * ta.stdev(close, bbLength)

// RSI
rsiValue = ta.rsi(close, rsiLength)

// Trade Proximity Oscillator
length = input(14, title="Channels Length")
multiplier = input(2, title="Channels Multiplier")
atr_length = input(14, title="ATR Length")
threshold_percentage = input(1.5, title="Threshold Percentage (%)")

ma = ta.sma(close, length)
std_dev = ta.stdev(close, length)
upper_band = ma + multiplier * std_dev
lower_band = ma - multiplier * std_dev
distance_upper = close - upper_band
distance_lower = lower_band - close
atr_value = ta.atr(atr_length)
threshold = atr_value * threshold_percentage
oscillator = distance_upper - distance_lower

// Strategy logic
longCondition = close > upperBB and tenkan > kijun and ta.crossover(close, basis) and rsiValue < 70
shortCondition = close < lowerBB and tenkan < kijun and ta.crossunder(close, basis) and rsiValue > 30

strategy.entry("Long", strategy.long, when = longCondition)
strategy.entry("Short", strategy.short, when = shortCondition)

// Exit logic
longExitCondition = close < upperBB and ta.crossover(oscillator, 0)
shortExitCondition = close > lowerBB and ta.crossunder(oscillator, 0)

strategy.exit("Take Profit/Stop Loss", from_entry="Long", loss=close - close * stopLossPct / 100, profit=close + close * takeProfitPct / 100, when = longExitCondition)
strategy.exit("Take Profit/Stop Loss", from_entry="Short", loss=close + close * stopLossPct / 100, profit=close - close * takeProfitPct / 100, when = shortExitCondition)

// Plotting
plot(senkouA, color=color.green, title="Senkou A")
plot(senkouB, color=color.red, title="Senkou B")
plot(upperBB, color=color.blue, title="Upper Bollinger Band")
plot(lowerBB, color=color.blue, title="Lower Bollinger Band")

// Additional Plots
plot(tenkan, color=color.orange, title="Tenkan")
plot(kijun, color=color.purple, title="Kijun")



더 많은