균형 트렌드 전략 (balancing trend strategy) 은 이치모쿠 킨코 히오 지표를 활용한 트렌드 추후 전략이다. 여러 지표를 결합하여 트렌드 방향을 파악하고, 장기 자본 증가를 달성하기 위해 황소 시장에서 길고 곰 시장에서 짧게 간다.
이 전략의 핵심은 이치모쿠 킨코 히오 지표에 기반하고 있으며, 이 지표는 텐칸-센 (변환선), 키준-센 (기본선), 센코 스판 A (리딩 스판 A), 센코 스판 B (리딩 스판 B) 및 치코 스판 (리딩 스판 Lagging Span) 으로 구성됩니다. 가격이 클라우드 위에 있을 때 상승 추세를 나타냅니다. 가격이 클라우드 아래에 있을 때 하락 추세를 나타냅니다.
거래 신호는 다음 조건의 조합에 기초하여 생성됩니다.
모든 상승 조건이 충족될 때 길게 가고 모든 하락 조건이 충족될 때 짧게 됩니다.
이 전략은 트렌드 추종 및 과잉 구매 과잉 판매 지표를 결합하여 트렌드 방향을 효과적으로 식별합니다. 주요 장점은 다음과 같습니다.
이 전략에서 주목해야 할 몇 가지 위험:
대응 솔루션:
이 전략은 다음과 같은 측면에서 개선될 수 있습니다.
전체적으로이 균형 트렌드 전략은 신뢰할 수 있고 견고한 트렌드 추적 시스템입니다. 트렌드 거래의 주요 과제를 해결합니다. 트렌드 식별 정확성과 거래 생성 주파수를 균형 잡습니다. 매개 변수 조정 및 모듈 확장을 통해 개선 할 여지가 있습니다. 장기적으로 적용 할 수있는 전략입니다.
/*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)