Tối ưu hóa chiến lược xu hướng dựa trên biểu đồ đám mây Ichimoku

Tác giả:ChaoZhang, Ngày: 2024-01-19 14:45:21
Tags:

img

Tổng quan

Chiến lược này kết hợp biểu đồ đám mây Ichimoku với các chỉ số phụ khác nhau để theo dõi xu hướng. Nó chủ yếu sử dụng đám mây Ichimoku để xác định hướng xu hướng và MACD, CMF, TSI và các chỉ số khác để lọc để cải thiện chất lượng tín hiệu. Đây là một chiến lược xu hướng mạnh dựa trên các phán đoán toàn diện của nhiều yếu tố.

Nguyên tắc

Chiến lược này chủ yếu sử dụng chuyển đổi của đám mây Ichimoku để đánh giá hướng xu hướng. Nó đi dài khi Tenkan-sen vượt qua trên đám mây và đi ngắn khi Tenkan-sen vượt qua bên dưới. Trong khi đó, nó sử dụng Chikou Span, biểu đồ MACD, CMF và TSI để lọc nhiều lớp để đảm bảo chất lượng tín hiệu.

Cụ thể, tín hiệu dài được kích hoạt khi:

  1. Tenkan-sen vượt qua trên đám mây
  2. Mây rộng và Tenkan-sen đang ở trên Kijun-sen.
  3. Chikou Span đang ở trên đường 0
  4. Giá đóng cửa ở trên đám mây
  5. Biểu đồ MACD trên 0
  6. CMF lớn hơn 0,1
  7. TSI trên 0

Tín hiệu ngắn được kích hoạt khi các điều kiện trên được đảo ngược. Bằng các tiêu chí toàn diện như vậy, hầu hết các tín hiệu sai có thể được lọc ra và các xu hướng chính trên thị trường được nắm bắt.

Ưu điểm

Ưu điểm lớn nhất của chiến lược này là lọc ra các tín hiệu sai và bắt được xu hướng mạnh bằng cách kết hợp nhiều chỉ số.

  1. Chiếc mây Ichimoku quyết định hướng xu hướng chính
  2. Các chỉ số phụ trợ lọc thêm các tín hiệu và giảm rủi ro
  3. Xem xét toàn diện nhiều khung thời gian cho tín hiệu đáng tin cậy hơn
  4. Các quy tắc nghiêm ngặt để chỉ giao dịch các thiết lập chất lượng cao và tránh thị trường hỗn loạn
  5. Cơ chế theo xu hướng để tối đa hóa lợi nhuận xu hướng

Thông qua những phán đoán như vậy, chiến lược có thể xác định hiệu quả các lĩnh vực nóng trung dài hạn và lợi nhuận từ giao dịch xu hướng.

Rủi ro

Những rủi ro chính của chiến lược này bao gồm:

  1. Rủi ro thoát sai gây ra tín hiệu sai
  2. Rủi ro đảo ngược xu hướng dẫn đến mất tất cả lợi nhuận
  3. Tỷ lệ giao dịch tương đối thấp cơ hội bị thiếu

Giải pháp:

  1. Nới lỏng các tiêu chí lọc một cách thích hợp để tăng tần suất giao dịch
  2. Thêm điều kiện dừng lỗ để giới hạn kích thước lỗ
  3. Tối ưu hóa các tham số để cải thiện độ chính xác tín hiệu

Tăng cường

Các hướng tối ưu hóa chính:

  1. Tối ưu hóa tham số thông qua nhiều backtests hơn để tìm kết hợp tham số tốt hơn

  2. Thêm cơ chế dừng lỗ để kiểm soát rủi ro

  3. Thêm dừng lỗ để khóa lợi nhuận

  4. Kiểm tra nhiều chỉ số hơn để tìm kết hợp bộ lọc tốt hơn

  5. Thêm các quy tắc để phân biệt thoát thực sự

Kết luận

Chiến lược này kết hợp hiệu quả đám mây Ichimoku và nhiều chỉ số phụ trợ. Các cải tiến hơn nữa về tối ưu hóa tham số, cơ chế dừng lỗ, lựa chọn chỉ số có thể tăng cường tính ổn định và chất lượng tín hiệu để có lợi nhuận ổn định cao hơn. Chiến lược có giá trị thực tế mạnh mẽ.


/*backtest
start: 2024-01-11 00:00:00
end: 2024-01-13 14:00:00
period: 1m
basePeriod: 1m
exchanges: [{"eid":"Futures_Binance","currency":"BTC_USDT"}]
*/

// This source code is subject to the terms of the Mozilla Public License 2.0 at https://mozilla.org/MPL/2.0/
// © exlux99

//@version=4
strategy("Ichimoku with MACD/ CMF/ TSI", overlay=true, margin_long=0, margin_short=0)



//Inputs
ts_bars = input(10, minval=1, title="Tenkan-Sen Bars")
ks_bars = input(30, minval=1, title="Kijun-Sen Bars")
ssb_bars = input(52, minval=1, title="Senkou-Span B Bars")
cs_offset = input(26, minval=1, title="Chikou-Span Offset")
ss_offset = input(26, minval=1, title="Senkou-Span Offset")
long_entry = input(true, title="Long Entry")
short_entry = input(true, title="Short Entry")

middle(len) => avg(lowest(len), highest(len))

// Ichimoku Components
tenkan = middle(ts_bars)
kijun = middle(ks_bars)
senkouA = avg(tenkan, kijun)
senkouB = middle(ssb_bars)


ss_high = max(senkouA[ss_offset-1], senkouB[ss_offset-1])
ss_low = min(senkouA[ss_offset-1], senkouB[ss_offset-1])

// Entry/Exit Signals
fast_length = input(title="Fast Length", type=input.integer, defval=17)
slow_length = input(title="Slow Length", type=input.integer, defval=28)
src = input(title="Source", type=input.source, defval=close)
signal_length = input(title="Signal Smoothing", type=input.integer, minval = 1, maxval = 50, defval = 5)
sma_source = input(title="Simple MA(Oscillator)", type=input.bool, defval=true)
sma_signal = input(title="Simple MA(Signal Line)", type=input.bool, defval=true)

// Calculating
fast_ma = sma_source ? sma(src, fast_length) : ema(src, fast_length)
slow_ma = sma_source ? sma(src, slow_length) : ema(src, slow_length)
macd = fast_ma - slow_ma
signal = sma_signal ? sma(macd, signal_length) : ema(macd, signal_length)
hist = macd - signal


tk_cross_bull = tenkan > kijun
tk_cross_bear = tenkan < kijun
cs_cross_bull = mom(close, cs_offset-1) > 0
cs_cross_bear = mom(close, cs_offset-1) < 0
price_above_kumo = close > ss_high
price_below_kumo = close < ss_low


//CMF
lengthA = input(8, minval=1, title="CMF Length")
ad = close==high and close==low or high==low ? 0 : ((2*close-low-high)/(high-low))*volume
mf = sum(ad, lengthA) / sum(volume, lengthA)


//TSI
long = input(title="Long Length", type=input.integer, defval=8)
short = input(title="Short Length", type=input.integer, defval=8)
price = close
double_smooth(src, long, short) =>
	fist_smooth = ema(src, long)
	ema(fist_smooth, short)
pc = change(price)
double_smoothed_pc = double_smooth(pc, long, short)
double_smoothed_abs_pc = double_smooth(abs(pc), long, short)
tsi_value = 100 * (double_smoothed_pc / double_smoothed_abs_pc)



bullish = tk_cross_bull and cs_cross_bull and price_above_kumo and hist > 0 and mf > 0.1 and tsi_value > 0
bearish = tk_cross_bear and cs_cross_bear and price_below_kumo and hist < 0  and mf < -0.1 and tsi_value < 0



strategy.entry("Long", strategy.long, when=bullish and long_entry)
strategy.entry("Short", strategy.short, when=bearish and short_entry)

strategy.close("Long", when=bearish and not short_entry)
strategy.close("Short", when=bullish and not long_entry)

Thêm nữa