이치는 이치모쿠 킨코 히오 지표에 기초하여 설계된 트렌드 다음 전략이다. 이치는 이치모쿠 시스템에서 여러 메트릭을 사용하여 매우 엄격한 입시 규칙을 설정하며, 트렌드를 잠금하기 위해 간단한 출구를 가지고 있다. 이 전략은 장기 트렌드 거래를 목적으로 한다.
이 전략은 트렌드 방향과 강도를 결정하기 위해 이치모쿠 시스템에서 전환선, 기본선, 선도 스펜 A, 선도 스펜 B 및 가격 자체 사이의 관계를 사용합니다. 구체적인 규칙은 다음과 같습니다.
위의 모든 조건이 충족되면 구매 신호를 트리거하고, 모든 조건이 뒤집어지면 판매 신호를 트리거합니다.
이 전략은 또한 유도 스펀 A를 스톱 로스 라인으로 설정합니다. 가격이 스톱 로스 이하로 넘어가면 포지션을 평평하게합니다.
이것은 매우 엄격한 전략으로 주요 트렌드에 대한 잘못된 신호와 잠금을 효과적으로 피합니다. 또한 트렌드를 결정하기 위해 여러 지표를 사용하여 단일 메트릭의 체계적인 실패를 방지합니다.
이 전략은 긴 보유 기간을 선호하고, 따라서 거래 빈도와 수수료 및 미연 비용도 줄입니다.
이 전략의 스톱 손실은 상대적으로 넓으며, 주요 스펜 A에 설정되어 거래 당 큰 손실의 위험을 초래합니다. 스톱을 강화하거나 위험을 제어하기 위해 필터를 추가하는 것을 고려하십시오.
또한, 생성된 신호가 적어지고, 단기적 기회는 놓칠 수 있습니다. 더 높은 빈도를 추구하는 거래자는 일부 진입 규칙을 완화하는 것을 고려할 수 있습니다.
더 많은 신호를 받는 것과 잡음을 필터하는 것 사이의 균형을 맞추기 위해 정밀한 조율 입력 규칙을 사용합니다.
단일 거래 손실을 제어하기 위해 자동화 또는 원격 중지와 같은 더 고급 스톱 손실 기술을 탐구하십시오.
최적의 값을 찾기 위해 다른 매개 변수 세트의 영향을 테스트하십시오. 더 정확한 위치 크기를 달성하기 위해 다른 지표를 통합하십시오.
이치는 이치모쿠 킨코 히오 시스템을 기반으로 한 매우 엄격한 트렌드 다음 전략이다. 트렌드를 측정하기 위해 여러 이치모쿠 메트릭을 사용하여 잘못된 신호를 안정적으로 피합니다. 광범위한 스톱 손실은 장기 트렌드를 탈 수 있습니다. 매개 변수 조정 및 리스크 관리 향상으로이 전략은 양적 거래에 대한 강력한 시스템으로 발전 할 수 있습니다.
/*backtest start: 2024-01-10 00:00:00 end: 2024-01-17 00:00:00 period: 30m basePeriod: 15m exchanges: [{"eid":"Futures_Binance","currency":"BTC_USDT"}] */ //@version=3 strategy(title="BadaBing Ichimoku", shorttitle="BadaBing", overlay=true) atr_period = input(title="ATR Period", defval=20) conversion_period = input(title="Conversion Line Period", defval=9, minval=1) base_period = input(title="Base Line Period", defval=26, minval=1) span_b_period = input(title="Span B Period", defval=52, minval=1) displacement = input(title="Displacement", defval=26, minval=1) min_current_cloud_atr = input(title="Min Current Cloud ATR", type=float, defval=1.0) min_future_cloud_atr = input(title="Min Future Cloud ATR", type=float, defval=0) check_base_line_above_cloud = input(title="Check Base Line above Cloud?", type=bool, defval=true) check_conversion_line_above_base_line = input(title="Check Conversion Line above Base Line?", type=bool, defval=true) check_price_above_conversion_line = input(title="Check Price above Conversion Line?", type=bool, defval=true) check_span_a_point_up = input(title="Check Current Span A is pointing Up?", type=bool, defval=false) check_span_b_point_up = input(title="Check Current Span B is pointing Up?", type=bool, defval=false) check_future_span_a_point_up = input(title="Check Future Span A is pointing Up?", type=bool, defval=true) check_future_span_b_point_up = input(title="Check Future Span B is pointing Up?", type=bool, defval=true) check_base_line_point_up = input(title="Check Base Line is Pointing Up?", type=bool, defval=true) check_conversion_line_point_up = input(title="Check Conversion Line is Pointing Up?", type=bool, defval=true) bullish_color = #ccff99 bearish_color = #ff704d span_a_color = #0000cc span_b_color = #000066 conversion_color = #ff99ff base_color = #4da6ff bull_signal_color = #228b22 bear_signal_color = #990000 donchian(len) => avg(lowest(len), highest(len)) bchange(series) => series and not series[1] conversion_line = donchian(conversion_period) base_line = donchian(base_period) future_span_a = avg(conversion_line, base_line) future_span_b = donchian(span_b_period) span_a = future_span_a[displacement] span_b = future_span_b[displacement] current_atr = atr(atr_period) min_cloud_width = min_current_cloud_atr * current_atr current_cloud_long_flag = span_a > (span_b + min_cloud_width) current_cloud_short_flag = span_a < (span_b - min_cloud_width) future_cloud_long_flag = future_span_a > (future_span_b + min_cloud_width) future_cloud_short_flag = future_span_a < (future_span_b - min_cloud_width) base_line_long_flag = check_base_line_above_cloud ? (base_line > span_a) : true base_line_short_flag = check_base_line_above_cloud ? (base_line < span_a) : true conversion_line_long_flag = check_conversion_line_above_base_line ? (conversion_line > base_line) : true conversion_line_short_flag = check_conversion_line_above_base_line ? (conversion_line < base_line) : true price_long_flag = check_price_above_conversion_line ? (close > conversion_line) : true price_short_flag = check_price_above_conversion_line ? (close < conversion_line) : true span_a_point_long_flag = check_span_a_point_up ? (span_a > span_a[1]) : true span_a_point_short_flag = check_span_a_point_up ? (span_a < span_a[1]) : true span_b_point_long_flag = check_span_b_point_up ? (span_b > span_b[1]) : true span_b_point_short_flag = check_span_b_point_up ? (span_b < span_b[1]) : true future_span_a_point_long_flag = check_future_span_a_point_up ? (future_span_a > future_span_a[1]) : true future_span_a_point_short_flag = check_future_span_a_point_up ? (future_span_a < future_span_a[1]) : true future_span_b_point_long_flag = check_future_span_b_point_up ? (future_span_b > future_span_b[1]) : true future_span_b_point_short_flag = check_future_span_b_point_up ? (future_span_b < future_span_b[1]) : true base_line_point_long_flag = check_base_line_point_up ? (base_line > base_line[1]) : true base_line_point_short_flag = check_base_line_point_up ? (base_line < base_line[1]) : true conversion_line_point_long_flag = check_conversion_line_point_up ? (conversion_line > conversion_line[1]) : true conversion_line_point_short_flag = check_conversion_line_point_up ? (conversion_line < conversion_line[1]) : true bada_long = bchange(current_cloud_long_flag) or bchange(future_cloud_long_flag) or bchange(base_line_long_flag) or bchange(conversion_line_long_flag) or bchange(price_long_flag) or bchange(span_a_point_long_flag) or bchange(span_b_point_long_flag) or bchange(future_span_a_point_long_flag) or bchange(future_span_b_point_long_flag) or bchange(base_line_point_long_flag) or bchange(conversion_line_point_long_flag) bada_short = bchange(current_cloud_short_flag) or bchange(future_cloud_short_flag) or bchange(base_line_short_flag) or bchange(conversion_line_short_flag) or bchange(price_short_flag) or bchange(span_a_point_short_flag) or bchange(span_b_point_short_flag) or bchange(future_span_a_point_short_flag) or bchange(future_span_b_point_short_flag) or bchange(base_line_point_short_flag) or bchange(conversion_line_point_short_flag) bada_color = bada_long ? bull_signal_color : bear_signal_color plotshape(bada_long or bada_short, title="bada", style=shape.circle, location=location.belowbar, color=bada_color, transp=50) bing_long = current_cloud_long_flag and future_cloud_long_flag and base_line_long_flag and conversion_line_long_flag and price_long_flag and span_a_point_long_flag and span_b_point_long_flag and future_span_a_point_long_flag and future_span_b_point_long_flag and base_line_point_long_flag and conversion_line_point_long_flag bing_short = current_cloud_short_flag and future_cloud_short_flag and base_line_short_flag and conversion_line_short_flag and price_short_flag and span_a_point_short_flag and span_b_point_short_flag and future_span_a_point_short_flag and future_span_b_point_short_flag and base_line_point_short_flag and conversion_line_point_short_flag bing_color = bing_long ? bull_signal_color : bear_signal_color plotshape(bchange(bing_long or bing_short), title="bing", style=shape.diamond, location=location.abovebar, color=bing_color, transp=0) c = plot(conversion_line, color=conversion_color, title="Conversion Line", linewidth=2) b = plot(base_line, color=base_color, title="Base Line", linewidth=2) p1 = plot(future_span_a, offset = displacement, color=span_a_color, title="Span A", linewidth=3) p2 = plot(future_span_b, offset = displacement, color=red, title="Span B", linewidth=3) fill(p1, p2, color = future_span_a > future_span_b ? bullish_color : bearish_color, transp = 60) strategy.entry("long", true, 1, when=bing_long) strategy.exit("stop", "long", stop=span_a) strategy.close("long", when=close < base_line) strategy.entry("short", false, 1, when=bing_short) strategy.exit("stop", "short", stop=span_a) strategy.close("short", when=close > base_line)