이 전략은 트렌드를 추적하기 위해 이치모쿠 클라우드 차트를 다양한 보조 지표와 결합합니다. 주로 트렌드 방향을 결정하고 신호 품질을 향상시키기 위해 필터링을위한 MACD, CMF, TSI 및 기타 지표를 결정하기 위해 이치모쿠 클라우드를 사용합니다. 이것은 여러 가지 요인에 대한 포괄적인 판단에 기반한 강력한 트렌드 전략입니다.
이 전략은 주로 트렌드 방향을 판단하기 위해 이치모쿠 클라우드의 변환을 활용합니다. 텐칸센이 클라우드 위에 넘어가면 길게 갈 것이고 텐칸센이 아래로 넘어가면 짧게 갈 것입니다. 한편, 시그널 품질을 보장하기 위해 다층 필터링을 위해 치코 스판, MACD 히스토그램, CMF 및 TSI를 사용합니다.
구체적으로, 긴 신호는 다음과 같은 경우에 작동합니다.
짧은 신호는 위의 조건이 뒤집어지면 발생합니다. 그러한 포괄적인 기준에 의해 대부분의 잘못된 신호를 필터링하고 시장의 주요 추세를 포착 할 수 있습니다.
이 전략의 가장 큰 장점은 여러 가지 지표를 결합함으로써 잘못된 신호를 필터링하고 강한 경향을 감지하는 것입니다. 구체적으로:
이러한 판단을 통해 전략은 중장기 핫 섹터를 효과적으로 식별하고 트렌드 거래에서 이익을 얻을 수 있습니다.
이 전략의 주요 위험은 다음과 같습니다.
해결책:
주요 최적화 방향:
더 나은 매개 변수 조합을 찾기 위해 더 많은 백테스트를 통해 매개 변수 최적화
리스크 제어에 스톱 로스 메커니즘을 추가합니다.
수익을 잠금하기 위해 후속 스톱 손실을 추가
더 나은 필터 조합을 찾기 위해 더 많은 지표를 테스트
실제 탈출을 구분하는 규칙을 추가합니다.
이 전략은 이치모쿠 클라우드와 여러 보조 지표를 효과적으로 결합합니다. 매개 변수 최적화, 스톱 로스 메커니즘, 지표 선택에 대한 추가 개선은 높은 안정적인 수익을 위해 안정성과 신호 품질을 향상시킬 수 있습니다. 전략은 강력한 실용적 가치를 가지고 있습니다.
/*backtest start: 2024-01-11 00:00:00 end: 2024-01-13 14:00:00 period: 1m basePeriod: 1m exchanges: [{"eid":"Futures_Binance","currency":"BTC_USDT"}] */ // This source code is subject to the terms of the Mozilla Public License 2.0 at https://mozilla.org/MPL/2.0/ // © exlux99 //@version=4 strategy("Ichimoku with MACD/ CMF/ TSI", overlay=true, margin_long=0, margin_short=0) //Inputs ts_bars = input(10, minval=1, title="Tenkan-Sen Bars") ks_bars = input(30, minval=1, title="Kijun-Sen Bars") ssb_bars = input(52, minval=1, title="Senkou-Span B Bars") cs_offset = input(26, minval=1, title="Chikou-Span Offset") ss_offset = input(26, minval=1, title="Senkou-Span Offset") long_entry = input(true, title="Long Entry") short_entry = input(true, title="Short Entry") 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) 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 fast_length = input(title="Fast Length", type=input.integer, defval=17) slow_length = input(title="Slow Length", type=input.integer, defval=28) src = input(title="Source", type=input.source, defval=close) signal_length = input(title="Signal Smoothing", type=input.integer, minval = 1, maxval = 50, defval = 5) sma_source = input(title="Simple MA(Oscillator)", type=input.bool, defval=true) sma_signal = input(title="Simple MA(Signal Line)", type=input.bool, defval=true) // Calculating fast_ma = sma_source ? sma(src, fast_length) : ema(src, fast_length) slow_ma = sma_source ? sma(src, slow_length) : ema(src, slow_length) macd = fast_ma - slow_ma signal = sma_signal ? sma(macd, signal_length) : ema(macd, signal_length) hist = macd - signal 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 //CMF lengthA = input(8, minval=1, title="CMF Length") ad = close==high and close==low or high==low ? 0 : ((2*close-low-high)/(high-low))*volume mf = sum(ad, lengthA) / sum(volume, lengthA) //TSI long = input(title="Long Length", type=input.integer, defval=8) short = input(title="Short Length", type=input.integer, defval=8) price = close double_smooth(src, long, short) => fist_smooth = ema(src, long) ema(fist_smooth, short) pc = change(price) double_smoothed_pc = double_smooth(pc, long, short) double_smoothed_abs_pc = double_smooth(abs(pc), long, short) tsi_value = 100 * (double_smoothed_pc / double_smoothed_abs_pc) bullish = tk_cross_bull and cs_cross_bull and price_above_kumo and hist > 0 and mf > 0.1 and tsi_value > 0 bearish = tk_cross_bear and cs_cross_bear and price_below_kumo and hist < 0 and mf < -0.1 and tsi_value < 0 strategy.entry("Long", strategy.long, when=bullish and long_entry) strategy.entry("Short", strategy.short, when=bearish and short_entry) strategy.close("Long", when=bearish and not short_entry) strategy.close("Short", when=bullish and not long_entry)