Chiến lược đột phá kênh Double Donchian


Ngày tạo: 2024-02-21 11:38:48 sửa đổi lần cuối: 2024-02-21 11:38:48
sao chép: 0 Số nhấp chuột: 971
1
tập trung vào
1617
Người theo dõi

Chiến lược đột phá kênh Double Donchian

Tổng quan

Chiến lược phá vỡ kênh Donchian kép là một chiến lược giao dịch phá vỡ dựa trên kênh Donchian. Nó sử dụng hai kênh Donchian nhanh và chậm để xây dựng tín hiệu giao dịch nhiều đầu và trống.

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

Chiến lược phá vỡ kênh Donchian đôi dựa trên hai tham số:Chu kỳ đường dẫn Donchian chậmChu kỳ đường Donchian nhanhChiến lược này bắt đầu bằng việc tính toán đường ray lên và đường ray xuống của hai đường dẫn Donchian.

  • Chu kỳ kênh Donchian chậm mặc định là 50 đường K, phản ánh xu hướng dài hơn.
  • Chu kỳ kênh Donchian nhanh mặc định là 30 đường K, phản ánh sự thay đổi xu hướng ngắn hơn.

Tín hiệu nhập cảnh là:Giá cả tăng lênTính biến động lớn hơn mức giảm giá◦ Hỏa tiễn có tín hiệu:Giá đã giảm xuốngTính biến động lớn hơn mức giảm giá

Một dấu hiệu dừng lỗ là giá lại.Bị phá vỡ◦ Hạ giá là tín hiệu giá khởi độngĐột phá đường ray

Chính sách này được thiết lập cùng lúc vớiCứ ngưng lại.Điều kiện rút lui. Theo mặc định, tỷ lệ rút lui là 2%, tức là khi giá thay đổi 2% thì dừng bán một nửa vị trí.

Phân tích lợi thế

Chiến lược đột phá qua hai kênh Donchian có những lợi thế sau:

  1. Sử dụng thiết kế hai kênh, có thể bắt được tín hiệu xu hướng của đường dài và đường ngắn, để thực hiện nhập cảnh chính xác hơn.

  2. Điều kiện biến động đã tránh được việc giao dịch thường xuyên trong thị trường ngang.

  3. Cài đặt dừng và dừng lỗ là toàn diện, có thể khóa một phần lợi nhuận hoặc giảm tổn thất.

  4. Lập luận chiến lược đơn giản, rõ ràng, dễ hiểu và dễ thực hiện.

  5. Các tham số có thể tùy chỉnh để phù hợp với các giống và sở thích giao dịch khác nhau.

Phân tích rủi ro

Tuy nhiên, chiến lược đột phá qua hai kênh Donchian cũng có một số rủi ro:

  1. Thiết kế hai kênh nhạy cảm hơn, dễ tạo ra tín hiệu sai. Bạn có thể mở rộng phạm vi kênh thích hợp hoặc điều chỉnh tham số tỷ lệ dao động để giảm tín hiệu sai.

  2. Các lệnh dừng có thể được kích hoạt quá thường xuyên. Bạn có thể đặt giới hạn số lần giao dịch hoặc mở rộng mức dừng.

  3. Lệnh dừng tỷ lệ cố định không thể khóa tối đa lợi nhuận. Bạn có thể xem xét theo dõi động lệnh dừng hoặc can thiệp nhân tạo để xác định giá dừng.

  4. Các trường hợp của đĩa thực ngoài khâu phản hồi có thể không phù hợp với dự kiến, nên xác minh đầy đủ trước, điều chỉnh tham số nếu cần thiết.

Hướng tối ưu hóa

Chiến lược phá vỡ đường hầm Donchian đôi có thể được tối ưu hóa theo các khía cạnh sau:

  1. Kiểm tra thêm các kết hợp tham số chu kỳ để tìm tham số tốt nhất.

  2. Thử các phương pháp tính toán tỷ lệ dao động khác nhau, chẳng hạn như ATR, để tìm tham số ổn định nhất.

  3. Thiết lập giới hạn số lần mở vị trí để tránh sự mất mát do hồi phục vào cuối xu hướng.

  4. Cố gắng theo dõi các điểm dừng động để đạt được lợi nhuận cao hơn.

  5. Kết hợp với các chỉ số khác để lọc tín hiệu vào sân và tăng độ chính xác trong ra quyết định. Ví dụ: kết hợp với chỉ số giao thông tổng hợp.

  6. Tối ưu hóa chiến lược quản lý vốn, chẳng hạn như cổ phần cố định, công thức Kelly, để kiểm soát tỷ lệ lợi nhuận rủi ro tốt hơn.

Tóm tắt

Chiến lược phá vỡ kênh Donchian đôi là một chiến lược theo dõi xu hướng tuyệt vời. Nó đồng thời có khả năng nhận ra xu hướng và khả năng bảo vệ đảo ngược.

Mã nguồn chiến lược
/*backtest
start: 2024-01-01 00:00:00
end: 2024-01-31 23:59:59
period: 1h
basePeriod: 15m
exchanges: [{"eid":"Futures_Binance","currency":"BTC_USDT"}]
*/

// This Pine Script™ code is subject to the terms of the Mozilla Public License 2.0 at https://mozilla.org/MPL/2.0/
// © omererkan

//@version=5
strategy(title="Double Donchian Channel Breakout", overlay=true, initial_capital = 1000, commission_value = 0.05, default_qty_value = 100, default_qty_type = strategy.percent_of_equity)

// Donchian Channels
slowLen = input.int(50, title="Slow Donchian", group = "Conditions")
fastLen = input.int(30, title="Fast Donchian", group = "Conditions")

// Volatility Calculated as a percentage
volatility = input.int(3, title="Volatility (%)", group = "Conditions")

// Long positions
long = input.bool(true, "Long Position On/Off", group = "Strategy")
longProfitPerc = input.float(2, title="Long TP1 (%)", group = "Strategy", minval=0.0, step=0.1) * 0.01

// Short positions
short = input.bool(true, "Short Position On/Off", group = "Strategy")
shortProfitPerc = input.float(2, title="Short TP1 (%)", group = "Strategy", minval=0.0, step=0.1) * 0.01

// First take profit point for positions
TP1Yuzde =input.int(50, title = "TP1 Position Amount (%)", group = "Strategy")

// Slow Donchian Calculated
ubSlow = ta.highest(high, slowLen)[1]
lbSlow = ta.lowest(low, slowLen)[1]

// Fast Donchian Calculated
ubFast = ta.highest(high, fastLen)[1]
lbFast = ta.lowest(low, fastLen)[1]

// Plot Donchian Channel for entries
plot(ubSlow, color=color.green, linewidth=2, title="Slow DoCh - Upperband")
plot(lbSlow, color=color.green, linewidth=2, title="Slow DoCh - Lowerband")
plot(ubFast, color=color.blue, linewidth=2, title="Fast DoCh - Upperband")
plot(lbFast, color=color.blue, linewidth=2, title="Fast DoCh - Lowerband")

// This calculation, the strategy does not open position in the horizontal market.
fark = (ubSlow - lbSlow) / lbSlow * 100

// Take profit levels
longExitPrice  = strategy.position_avg_price * (1 + longProfitPerc)
shortExitPrice = strategy.position_avg_price * (1 - shortProfitPerc)

// Code long trading conditions
longCondition = ta.crossover(close, ubSlow) and fark > volatility
if longCondition and long == true
    strategy.entry("Long", strategy.long)

// Code short trading conditions
shortCondition = ta.crossunder(close, lbSlow) and fark > volatility
if shortCondition and short == true
    strategy.entry("Short", strategy.short)

// Determine long trading conditions
if strategy.position_size > 0 and ta.crossunder(close, lbFast) 
    strategy.close_all("Close All")

// Determine short trading conditions
if strategy.position_size < 0 and ta.crossover(close, ubFast)
    strategy.close_all("Close All")

// Take Profit Long
if strategy.position_size > 0
    strategy.exit("TP1", "Long", qty_percent = TP1Yuzde, limit = longExitPrice)

// Take Profit Short
if strategy.position_size < 0
    strategy.exit("TP1", "Short", qty_percent = TP1Yuzde, limit = shortExitPrice)