Một xu hướng nghiêm ngặt theo chiến lược dựa trên Ichimoku Kinko Hyo

Tác giả:ChaoZhang, Ngày: 2024-01-18 15:03:28
Tags:

img

Tổng quan

Đây là một chiến lược theo xu hướng được thiết kế dựa trên chỉ số Ichimoku Kinko Hyo. Nó đặt ra các quy tắc nhập cảnh rất nghiêm ngặt bằng cách sử dụng nhiều số liệu từ hệ thống Ichimoku, trong khi có lối ra đơn giản để khóa xu hướng. Chiến lược được thiết kế cho giao dịch xu hướng dài hạn.

Chiến lược logic

Chiến lược này sử dụng mối quan hệ giữa đường chuyển đổi, đường cơ sở, phạm vi dẫn đầu A, phạm vi dẫn đầu B và giá từ hệ thống Ichimoku để xác định hướng và sức mạnh của xu hướng.

  1. Mây hiện tại mở rộng và giá trên mây;
  2. Mây tương lai mở rộng;
  3. Đường cơ sở trên mây;
  4. Đường chuyển đổi trên đường cơ sở;
  5. Giá trên đường chuyển đổi;
  6. Dải dẫn A hiện tại và tương lai, đường dẫn B, đường cơ sở và góc đường chuyển đổi hướng lên.

Nó kích hoạt tín hiệu mua khi tất cả các điều kiện trên được đáp ứng, và tín hiệu bán khi tất cả các điều kiện được đảo ngược.

Chiến lược này cũng đặt phạm vi dẫn A là đường dừng lỗ. Nó làm phẳng các vị trí khi giá vượt dưới mức dừng lỗ.

Phân tích lợi thế

Đây là một chiến lược cực kỳ nghiêm ngặt, có hiệu quả tránh các tín hiệu sai và khóa trong các xu hướng chính. Nó cũng sử dụng nhiều chỉ số để xác định xu hướng, ngăn ngừa sự thất bại hệ thống của các chỉ số duy nhất.

Chiến lược ưu tiên thời gian giữ dài, do đó giảm tần suất giao dịch và chi phí từ hoa hồng và trượt.

Phân tích rủi ro

Stop loss của chiến lược này tương đối rộng, được đặt ở phạm vi dẫn đầu A, gây ra rủi ro mất mát lớn mỗi giao dịch.

Ngoài ra, có ít tín hiệu được tạo ra, có thể bỏ lỡ một số cơ hội ngắn hạn.

Cơ hội cải thiện

Các quy tắc nhập âm thanh tinh tế để tạo ra sự cân bằng giữa nhận nhiều tín hiệu hơn và lọc ra tiếng ồn.

Khám phá các kỹ thuật dừng lỗ tiên tiến hơn như dừng tự động hoặc từ xa để kiểm soát lỗ giao dịch duy nhất.

Kiểm tra tác động của các bộ tham số khác nhau để tìm ra các giá trị tối ưu.

Kết luận

Đây là một chiến lược theo xu hướng đặc biệt nghiêm ngặt dựa trên hệ thống Ichimoku Kinko Hyo. Bằng cách sử dụng nhiều chỉ số Ichimoku để đo xu hướng, nó tránh được các tín hiệu sai đáng tin cậy.


/*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)


Thêm nữa