이치모쿠 킨코 히오를 바탕으로 한 엄격한 트렌드 전략

저자:차오장, 날짜: 2024-01-18 15:03:28
태그:

img

전반적인 설명

이치는 이치모쿠 킨코 히오 지표에 기초하여 설계된 트렌드 다음 전략이다. 이치는 이치모쿠 시스템에서 여러 메트릭을 사용하여 매우 엄격한 입시 규칙을 설정하며, 트렌드를 잠금하기 위해 간단한 출구를 가지고 있다. 이 전략은 장기 트렌드 거래를 목적으로 한다.

전략 논리

이 전략은 트렌드 방향과 강도를 결정하기 위해 이치모쿠 시스템에서 전환선, 기본선, 선도 스펜 A, 선도 스펜 B 및 가격 자체 사이의 관계를 사용합니다. 구체적인 규칙은 다음과 같습니다.

  1. 현재 클라우드 확장 및 클라우드 위에 가격;
  2. 미래 클라우드 확장
  3. 구름 위의 기본선
  4. 기본선 위에 있는 변환선
  5. 회전선 위의 가격
  6. 현재와 미래의 선행 스프랜 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)


더 많은