이치모쿠 긴코 효에 기반한 트렌드 추종 전략


생성 날짜: 2024-01-18 15:03:28 마지막으로 수정됨: 2024-01-18 15:03:28
복사: 2 클릭수: 360
1
집중하다
1213
수행원

이치모쿠 긴코 효에 기반한 트렌드 추종 전략

개요

이 전략은 초점 평형표 지표에 기반한 트렌드 추적 전략이다. 이 전략은 초점 평형표의 전환선, 기준선, 그리고 클라우드 형태를 이용하여 매우 엄격한 입시 조건을 설정하고, 간단한 스톱로스를 사용하여 주문을 닫는다. 이 전략은 긴 선의 트렌드 거래에 적용된다.

전략 원칙

이 전략은 첫 번째 균형 표의 전환선, 기준선, 앞선선 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)