이치모쿠 킨코 히오 지표 균형 추세 전략

저자:차오장, 날짜: 2023-11-24 14:38:47
태그:

img

전반적인 설명

균형 트렌드 전략 (balancing trend strategy) 은 이치모쿠 킨코 히오 지표를 활용한 트렌드 추후 전략이다. 여러 지표를 결합하여 트렌드 방향을 파악하고, 장기 자본 증가를 달성하기 위해 황소 시장에서 길고 곰 시장에서 짧게 간다.

전략 원칙

이 전략의 핵심은 이치모쿠 킨코 히오 지표에 기반하고 있으며, 이 지표는 텐칸-센 (변환선), 키준-센 (기본선), 센코 스판 A (리딩 스판 A), 센코 스판 B (리딩 스판 B) 및 치코 스판 (리딩 스판 Lagging Span) 으로 구성됩니다. 가격이 클라우드 위에 있을 때 상승 추세를 나타냅니다. 가격이 클라우드 아래에 있을 때 하락 추세를 나타냅니다.

거래 신호는 다음 조건의 조합에 기초하여 생성됩니다.

  1. 텐칸-센이 키준-센을 넘어서 상승 신호로
  2. 텐칸-센은 하향 신호로 키준-센 아래로 넘는다.
  3. 시코 스판 크로스오버 상승으로 상승성 확인이 됩니다.
  4. 시코 스판 크로스오버가 하락하는 것으로 하락세를 확인합니다.
  5. 상승 지표로 RSI 50 이상
  6. 하향 지표로 50 이하의 RSI
  7. 가격 상승률은 상승세를 나타냅니다.
  8. 구름 아래의 가격은 하락 추세를 나타냅니다.

모든 상승 조건이 충족될 때 길게 가고 모든 하락 조건이 충족될 때 짧게 됩니다.

이점 분석

이 전략은 트렌드 추종 및 과잉 구매 과잉 판매 지표를 결합하여 트렌드 방향을 효과적으로 식별합니다. 주요 장점은 다음과 같습니다.

  1. 이치모쿠 킨코 히오는 단기 시장 소음에 속지 않고 중장기 동향을 파악할 수 있습니다.
  2. RSI를 포함하면 과잉 구매 및 과잉 판매 구역을 결정하고, 회전 기회를 놓치지 않도록 합니다.
  3. 변동성이 충분히 높을 때만 행동하고 비효율적인 거래를 피합니다.
  4. 엄격한 입국과 출국 규칙은 위험을 최대한 완화합니다.

위험 분석

이 전략에서 주목해야 할 몇 가지 위험:

  1. 이치모쿠 킨코 히오는 출입시간을 늦추는 지연효과가 있습니다.
  2. 거래 신호의 빈도가 낮고 여러 조건의 조합으로 거래 수가 충분하지 않습니다.
  3. 포지션 사이즈와 리스크 관리, 과잉 거래에 대한 위험은 고려하지 않습니다.

대응 솔루션:

  1. 이치모쿠를 줄여서 감수성을 높여
  2. 무역의 빈도를 높이기 위해 입국 조건의 엄격성을 줄입니다.
  3. 위험 관리 및 포지션 사이즈 모듈을 통합하여 거래 리스크 노출 및 전체 포지션을 제어합니다.

최적화 방향

이 전략은 다음과 같은 측면에서 개선될 수 있습니다.

  1. KDJ, MACD와 같은 추가 지표를 추가하거나 결합하여 신호 소스를 다양화합니다.
  2. 이치모쿠를 최적화해 민감도를 높여
  3. 손해를 막는 메커니즘을 추가하여 수익을 확보하고 위험을 통제합니다.
  4. 계정 크기에 기반한 동적 위치 크기 모듈을 포함합니다.
  5. 롱 포지션의 리스크를 관리하기 위한 헤지 모듈을 추가합니다.

요약

전체적으로이 균형 트렌드 전략은 신뢰할 수 있고 견고한 트렌드 추적 시스템입니다. 트렌드 거래의 주요 과제를 해결합니다. 트렌드 식별 정확성과 거래 생성 주파수를 균형 잡습니다. 매개 변수 조정 및 모듈 확장을 통해 개선 할 여지가 있습니다. 장기적으로 적용 할 수있는 전략입니다.


/*backtest
start: 2023-11-16 00:00:00
end: 2023-11-20 08:00:00
period: 3m
basePeriod: 1m
exchanges: [{"eid":"Futures_Binance","currency":"BTC_USDT"}]
*/

//@version=4
strategy("Ichimoku Kinko Hyo: ETH 3h Strategy by tobuno", overlay=true)

//Inputs
ts_bars = input(22, minval=1, title="Tenkan-Sen Bars")
ks_bars = input(60, minval=1, title="Kijun-Sen Bars")
ssb_bars = input(120, minval=1, title="Senkou-Span B Bars")
cs_offset = input(30, minval=1, title="Chikou-Span Offset")
ss_offset = input(30, minval=1, title="Senkou-Span Offset")
long_entry = input(true, title="Long Entry")
short_entry = input(true, title="Short Entry")

//Volatility
vollength = input(defval=2, title="VolLength")
voltarget = input(defval=0.2, type=float, step=0.1, title="Volatility Target")
Difference = abs((close - open)/((close + open)/2) * 100)
MovingAverage = sma(Difference, vollength)
highvolatility = MovingAverage > voltarget

////////////////////////////////////////////////////////////////////////////////
// BACKTESTING RANGE
 
// From Date Inputs
fromDay = input(defval = 1, title = "From Day", minval = 1, maxval = 31)
fromMonth = input(defval = 1, title = "From Month", minval = 1, maxval = 12)
fromYear = input(defval = 2019, title = "From Year", minval = 1970)
 
// To Date Inputs
toDay = input(defval = 31, title = "To Day", minval = 1, maxval = 31)
toMonth = input(defval = 12, title = "To Month", minval = 1, maxval = 12)
toYear = input(defval = 2020, title = "To Year", minval = 1970)
 
// Calculate start/end date and time condition
startDate = timestamp(fromYear, fromMonth, fromDay, 00, 00)
finishDate = timestamp(toYear, toMonth, toDay, 00, 00)
time_cond = true
 
////////////////////////////////////////////////////////////////////////////////

middle(len) => avg(lowest(len), highest(len))

// Ichimoku Components
tenkan = middle(ts_bars)
kijun = middle(ks_bars)
senkouA = avg(tenkan, kijun)
senkouB = middle(ssb_bars)

//RSI
change = change(close)
gain = change >= 0 ? change : 0.0
loss = change < 0 ? (-1) * change : 0.0
avgGain = rma(gain, 14)
avgLoss = rma(loss, 14)
rs = avgGain / avgLoss
rsi = 100 - (100 / (1 + rs))

// Plot Ichimoku Kinko Hyo
plot(tenkan, color=#0496ff, title="Tenkan-Sen")
plot(kijun, color=#991515, title="Kijun-Sen")
plot(close, offset=-cs_offset+1, color=#459915, title="Chikou-Span")
sa=plot(senkouA, offset=ss_offset-1, color=green, title="Senkou-Span A")
sb=plot(senkouB, offset=ss_offset-1, color=red, title="Senkou-Span B")
fill(sa, sb, color = senkouA > senkouB ? green : red, title="Cloud color")

ss_high = max(senkouA[ss_offset-1], senkouB[ss_offset-1])
ss_low = min(senkouA[ss_offset-1], senkouB[ss_offset-1])

// Entry/Exit Signals
tk_cross_bull = tenkan > kijun
tk_cross_bear = tenkan < kijun
cs_cross_bull = mom(close, cs_offset-1) > 0
cs_cross_bear = mom(close, cs_offset-1) < 0
price_above_kumo = close > ss_high
price_below_kumo = close < ss_low
rsi_bullish = rsi > 50
rsi_bearish = rs < 50
bullish = tk_cross_bull and cs_cross_bull and price_above_kumo and rsi_bullish and highvolatility
bearish = tk_cross_bear and cs_cross_bear and price_below_kumo and rsi_bearish and highvolatility

strategy.entry("Long", strategy.long, when=bullish and long_entry and time_cond)
strategy.entry("Short", strategy.short, when=bearish and short_entry and time_cond)

strategy.close("Long", when=bearish and not short_entry and time_cond)
strategy.close("Short", when=bullish and not long_entry and time_cond)


더 많은