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