Chiến lược giao dịch định lượng dựa trên đột phá Yiyun và chỉ báo ADX


Ngày tạo: 2024-02-02 17:50:30 sửa đổi lần cuối: 2024-02-02 17:50:30
sao chép: 0 Số nhấp chuột: 410
1
tập trung vào
1214
Người theo dõi

Chiến lược giao dịch định lượng dựa trên đột phá Yiyun và chỉ báo ADX

Tổng quan

Chiến lược này được gọi là chiến lược giao dịch định lượng dựa trên một đám mây đột phá và chỉ số ADX. Nó kết hợp phân tích kỹ thuật đồ thị đám mây và chỉ số xu hướng trung bình (ADX) để quyết định khi nào tạo vị trí đầu nhiều hoặc đầu trống. Cụ thể, nó tạo vị trí khi giá phá vỡ các khu vực quan trọng của đồ thị đám mây và chỉ số ADX cho thấy xu hướng mạnh.

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

Chiến lược này sử dụng các hình ảnh hình ảnh đám mây trong chỉ số chu kỳ để xác định các vùng hỗ trợ và kháng cự quan trọng. Nó kết hợp với chỉ số ADX để xác định cường độ của xu hướng. Các quy tắc chiến lược giao dịch cụ thể như sau:

Tín hiệu xây dựng nhiều đầu:

  • Đường anten di chuyển lên xuyên qua đường chuẩn
  • Đường trễ quay lên trên trục 0
  • Giá cả cao hơn so với các biểu đồ trên đám mây
  • ADX thấp hơn 45 (chỉ ra xu hướng không mở rộng quá mức)
  • + DI cao hơn - DI (chỉ ra xu hướng tăng)

Tín hiệu đóng khoang:

  • Đường anten di chuyển xuống xuyên qua đường chuẩn
  • Đường chậm chuyển hướng xuống qua trục 0
  • Giá thấp hơn so với hình ảnh của đám mây
  • ADX cao hơn 45 ((dẫn đến xu hướng có thể đảo ngược))
  • + DI thấp hơn - DI (chỉ ra là xu hướng giảm)

Phân tích lợi thế

Chiến lược này kết hợp với phân tích kỹ thuật đồ họa và các chỉ số phân tích xu hướng để xác định hiệu quả xu hướng và khu vực mạnh mẽ của thị trường. Các ưu điểm cụ thể như sau:

  1. Sử dụng đồ họa đám mây để đánh giá các vùng hỗ trợ và kháng cự quan trọng để nắm bắt xu hướng mạnh
  2. Kết hợp với chỉ số ADX để đánh giá cường độ của xu hướng thực sự, tránh giao dịch sai
  3. Quy tắc rõ ràng, dễ sử dụng, dễ sử dụng

Rủi ro và giải pháp

Chiến lược này cũng có một số rủi ro, chủ yếu tập trung vào sự không ổn định được xác định bởi chỉ số ADX. Các rủi ro cụ thể và giải pháp như sau:

  1. Tính toán ADX có tính chậm trễ, có thể bỏ lỡ sự đảo ngược nhanh. Các tham số ADX có thể được giảm xuống một cách thích hợp để làm cho nó nhạy cảm hơn
  2. ADX không hiệu quả trong các trường hợp chấn động. Các bộ lọc chỉ số khác có thể được thêm vào, chẳng hạn như kênh BOLL.
  3. Một mô hình đám mây cũng có thể bị hỏng. Bạn có thể điều chỉnh tham số thích hợp hoặc thêm các chỉ số hỗ trợ khác

Đề xuất tối ưu hóa chiến lược

Chiến lược này cũng có thể được tối ưu hóa theo các khía cạnh sau:

  1. Điều chỉnh các tham số đồ họa của một đám mây để phù hợp với nhiều giống hơn
  2. Tăng chiến lược dừng lỗ, kiểm soát tổn thất đơn lẻ
  3. Kết hợp các chỉ số khác nhau để tạo ra các chỉ số tổng hợp để lọc tín hiệu
  4. Thêm mô-đun dự đoán mô hình, sử dụng học máy để xác định thêm các hiệu ứng tín hiệu xu hướng

Tóm tắt

Chiến lược này kết hợp phân tích kỹ thuật đồ họa đám mây và chỉ số đánh giá xu hướng ADX để tạo ra một bộ chiến lược giao dịch định lượng rõ ràng và hoàn chỉnh. Nó đánh giá các vùng hỗ trợ kháng cự quan trọng đồng thời cân bằng với đánh giá xu hướng, có thể nắm bắt cơ hội thị trường hiệu quả. Chiến lược này dễ sử dụng trên thực tế, cũng có không gian có thể tối ưu hóa, tổng thể là một bộ chiến lược định lượng chất lượng.

Mã nguồn chiến lược
/*backtest
start: 2023-01-26 00:00:00
end: 2024-02-01 00:00:00
period: 1d
basePeriod: 1h
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/
// © Coinrule

//@version=5
strategy('Ichimoku Cloud with ADX (By Coinrule)',
         overlay=true,
         initial_capital=1000,
         process_orders_on_close=true,
         default_qty_type=strategy.percent_of_equity,
         default_qty_value=30,
         commission_type=strategy.commission.percent,
         commission_value=0.1)

showDate = input(defval=true, title='Show Date Range')
timePeriod = time >= timestamp(syminfo.timezone, 2022, 1, 1, 0, 0)


// Stop Loss and Take Profit for Shorting
Stop_loss = input(1) / 100
Take_profit = input(5) / 100
longStopPrice = strategy.position_avg_price * (1 - Stop_loss)
longTakeProfit = strategy.position_avg_price * (1 + Take_profit)


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

middle(len) => math.avg(ta.lowest(len), ta.highest(len))

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

// Plot Ichimoku Kinko Hyo
plot(tenkan, color=color.new(#0496ff, 0), title='Tenkan-Sen')
plot(kijun, color=color.new(#991515, 0), title='Kijun-Sen')
plot(close, offset=-cs_offset + 1, color=color.new(#459915, 0), title='Chikou-Span')
sa = plot(senkouA, offset=ss_offset - 1, color=color.new(color.green, 0), title='Senkou-Span A')
sb = plot(senkouB, offset=ss_offset - 1, color=color.new(color.red, 0), title='Senkou-Span B')
fill(sa, sb, color=senkouA > senkouB ? color.green : color.red, title='Cloud color', transp=90)

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


// ADX
[pos_dm, neg_dm, avg_dm] = ta.dmi(14, 14)


// Entry/Exit Signals
tk_cross_bull = tenkan > kijun
tk_cross_bear = tenkan < kijun
cs_cross_bull = ta.mom(close, cs_offset - 1) > 0
cs_cross_bear = ta.mom(close, cs_offset - 1) < 0
price_above_kumo = close > ss_high
price_below_kumo = close < ss_low

bullish = tk_cross_bull and cs_cross_bull and price_above_kumo and avg_dm < 45 and pos_dm > neg_dm
bearish = tk_cross_bear and cs_cross_bear and price_below_kumo and avg_dm > 45 and pos_dm < neg_dm

strategy.entry('Long', strategy.long, when=bullish and long_entry and timePeriod)
strategy.close('Long', when=bearish and not short_entry)

strategy.entry('Short', strategy.short, when=bearish and short_entry and timePeriod)
strategy.close('Short', when=bullish and not long_entry)