Chiến lược theo dõi đám mây tám giác

Tác giả:ChaoZhang, Ngày: 2023-12-20 15:08:22
Tags:

img

Tổng quan

Đây là một chiến lược theo xu hướng định lượng dựa trên chỉ số Ichimoku. Nó chủ yếu xây dựng các vị trí dài và ngắn trong điều kiện cụ thể để theo dõi xu hướng thị trường, kết hợp với một số cơ chế dừng lỗ để kiểm soát rủi ro.

Nguyên tắc chiến lược

Cốt lõi của chiến lược này là xây dựng các tín hiệu giao dịch dựa trên chỉ số Ichimoku với một số cài đặt tham số nhất định. Chỉ số Ichimoku bao gồm bốn đường: đường chuyển đổi, đường cơ sở, khoảng dẫn A và khoảng chậm B. Đường chuyển đổi thường được gọi là Tenkan-sen và đường cơ sở được gọi là Kijun-sen. Chiến lược này thiết lập các tham số khác nhau cho Tenkan-sen và Kijun-sen để tạo ra tín hiệu giao dịch chéo vàng và chéo chết. Ngoài ra, nó cũng kết hợp các vụ phá vỡ đám mây như một điều kiện phụ để kích hoạt các mục nhập.

Cụ thể, chiến lược chủ yếu tuân theo các quy tắc giao dịch sau:

  1. Đi dài khi giá phá vỡ trên Tenkan-sen và rời khỏi đám mây;

  2. Đóng các vị trí dài khi giá giảm xuống dưới Tenkan-sen;

  3. Đi ngắn khi giá phá vỡ dưới Kijun-sen và đi vào đám mây;

  4. Đóng các vị trí ngắn khi giá tăng trở lại trên Tenkan-sen.

Thông qua các nguyên tắc giao dịch dài và ngắn như vậy, chiến lược có thể nắm bắt hiệu quả các xu hướng di chuyển trên thị trường.

Phân tích lợi thế

So với các chiến lược giao dịch trung bình động phổ biến khác, chiến lược này có những lợi thế sau:

  1. Phán quyết xu hướng chính xác hơn dựa trên Ichimoku. Ichimoku bao gồm nhiều đường trung bình động, làm cho nó đáng tin cậy hơn để nhận diện xu hướng và lọc ra tiếng ồn từ các MAs đơn lẻ.

  2. Hiệu ứng lọc tốt hơn với nhiều đường.

  3. Rủi ro có thể kiểm soát được. Đặt đường dừng lỗ cho phép dừng lỗ kịp thời và kiểm soát rủi ro.

  4. Các khoản rút nhỏ hơn. Các giao dịch ít bất lợi hơn so với các chiến lược theo xu hướng khác làm giảm lỗ rút.

  5. Điều chỉnh tham số linh hoạt. Các tham số có thể được điều chỉnh để thích nghi với các điều kiện thị trường khác nhau.

Rủi ro và tối ưu hóa

Vẫn có một số rủi ro cần lưu ý cho chiến lược này:

  1. Hiệu suất kém trên các thị trường giới hạn phạm vi.

  2. Không nhận ra sự đảo ngược đầy đủ. yếu trong việc xác định sự đảo ngược xu hướng ngắn hạn, có thể bỏ lỡ cơ hội hoặc gặp phải sự đảo ngược đột ngột.

  3. Sự dựa vào điều chỉnh tham số thực nghiệm. Các tham số khác nhau có thể ảnh hưởng đáng kể đến hiệu suất đòi hỏi kinh nghiệm lịch sử phong phú.

Các khía cạnh sau đây có thể được tối ưu hóa để giải quyết các rủi ro trên:

  1. Thêm các chỉ số biến động để phát hiện thị trường không có xu hướng và tạm dừng chiến lược.

  2. Bao gồm các tín hiệu đảo ngược bổ sung như đường chéo trung bình động.

  3. Sử dụng máy học để tối ưu hóa tham số tự động thay vì điều chỉnh bằng tay.

  4. Thiết lập các đường dừng lỗ năng động dựa trên biến động thị trường.

Kết luận

Nhìn chung, chiến lược này tận dụng sức mạnh của Ichimoku trong việc nắm bắt xu hướng di chuyển. Với điều chỉnh và tối ưu hóa tham số thích hợp, nó có thể đạt được độ bền tốt hơn và phục vụ như một chiến lược hiệu quả đáng xem xét cho giao dịch trực tiếp.


/*backtest
start: 2022-12-13 00:00:00
end: 2023-12-19 00:00:00
period: 1d
basePeriod: 1h
exchanges: [{"eid":"Futures_Binance","currency":"BTC_USDT"}]
*/

//@version=3
strategy(title="RENKO ICHIMOKU STRATEGY", shorttitle="RENKO ICHIMOKU STRATEGY", overlay=true)
ro = open
rc = close

tenkanSenPeriods = input(10, minval=1, title="Tenkan-sen"),
kijunSenPeriods = input(30, minval=1, title="Kijun-sen")
SenkouSpanBPeriods = input(60, minval=1, title="Senkou Span B"),
displacement = input(30, minval=1, title="Chikou Span (Displacement)")

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

tenkanSen = donchian(tenkanSenPeriods)
kijunSen = donchian(kijunSenPeriods)
SenkouSpanA = avg(tenkanSen, kijunSen)
SenkouSpanB = donchian(SenkouSpanBPeriods)

plot(tenkanSen, color=#0496ff, linewidth=2, title="Tenkan-sen")
// plot(kijunSen, color=#991515, title="Kijun-sen")
// plot(close, offset = -displacement, color=#459915, title="Chikou Span")

p1 = plot(SenkouSpanA, offset = displacement, color=green, title="Senkou Span A")
p2 = plot(SenkouSpanB, offset = displacement, color=red, title="Senkou Span B")
fill(p1, p2, color = SenkouSpanA > SenkouSpanB ? green : red)

// Entry/Exit Signals
tk_cross_bull = tenkanSen > kijunSen
tk_cross_bear = tenkanSen < kijunSen

price_below_tenkan = open < tenkanSen and close < tenkanSen
price_above_tenkan = open > tenkanSen and close > tenkanSen

price_below_kinjun = close < kijunSen
price_above_kinjun = close > kijunSen

tekan_above_kinjun = tenkanSen > kijunSen
tekan_below_kinjun = tenkanSen < kijunSen

ss_high = max(SenkouSpanA[displacement-1], SenkouSpanB[displacement-1])
ss_low = min(SenkouSpanA[displacement-1], SenkouSpanB[displacement-1])
price_inside_kumo = close > ss_high and close < ss_low

price_below_kumo = rc[1] < ro[1] and rc[0] < ro[0] and rc[1] < ss_low 
price_above_kumo = rc[1] > ro[1] and rc[0] > ro[0] and rc[1] > ss_high 

cs_cross_bull = mom(close, displacement-1) > 0
cs_cross_bear = mom(close, displacement-1) < 0

bullish = cs_cross_bull and not price_inside_kumo
bearish = cs_cross_bear and not price_inside_kumo



strategy.entry("Long", strategy.long, when=price_above_kumo and price_above_tenkan )
strategy.close("Long", when=price_below_tenkan )

strategy.entry("Short", strategy.short, when=price_below_kumo and price_below_tenkan )
strategy.close("Short", when=price_above_tenkan )

// longCondition = crossover(sma(close, 14), sma(close, 28))
// if (longCondition)
//     strategy.entry("My Long Entry Id", strategy.long)

// shortCondition = crossunder(sma(close, 14), sma(close, 28))
// if (shortCondition)
//     strategy.entry("My Short Entry Id", strategy.short)

Thêm nữa