Chiến lược phá vỡ kênh Donchian đôi

Tác giả:ChaoZhang, Ngày: 2024-02-04 09:42:14
Tags:

img

Tổng quan

Chiến lược Breakout kênh Donchian đôi là một chiến lược giao dịch định lượng dựa trên kênh Donchian. Chiến lược này sử dụng sự kết hợp của các kênh Donchian nhanh và chậm để đạt được giao dịch breakout có rủi ro thấp và lợi nhuận cao.

Chiến lược logic

Chiến lược này chủ yếu sử dụng hai kênh Donchian, bao gồm một kênh chậm hơn với thời gian dài hơn và một kênh nhanh hơn với thời gian ngắn hơn.

Kênh Donchian chậm có một khoảng thời gian dài hơn có thể lọc hiệu quả tiếng ồn thị trường, làm cho các tín hiệu đột phá của nó đáng tin cậy hơn.

Kênh Donchian nhanh có thời gian ngắn hơn có thể nhanh chóng phản ứng với biến động giá ngắn hạn. Khi giá phá vỡ lại qua kênh này, nó báo hiệu một sự đảo ngược xu hướng và thúc đẩy một lối ra để dừng lỗ hoặc kiếm lợi nhuận.

Ngoài ra, một điều kiện biến động được thiết lập như một bộ lọc cho các tín hiệu nhập cảnh. Chiến lược sẽ chỉ kích hoạt nhập cảnh khi chuyển động giá vượt quá ngưỡng tỷ lệ phần trăm đã xác định trước. Điều này tránh những cú đập thường xuyên trong quá trình củng cố giới hạn phạm vi.

Phân tích lợi thế

  • Cơ chế hai kênh thiết lập hai tuyến phòng thủ và kiểm soát rủi ro hiệu quả
  • Sự kết hợp giữa các kênh nhanh và chậm thu thập các xu hướng hiệu quả
  • Bộ lọc biến động làm giảm các giao dịch không hiệu quả
  • Đồng thời theo dõi xu hướng và ngăn ngừa quá phù hợp
  • Logic đơn giản và rõ ràng, dễ hiểu và nắm vững

Phân tích rủi ro

  • Sự biến động giá mạnh mẽ có thể thâm nhập vào lệnh dừng lỗ và gây ra tổn thất lớn
  • Cài đặt tham số không chính xác (ví dụ: thời gian kênh) có thể làm tổn hại đến hiệu quả chiến lược
  • Chi phí giao dịch cũng làm suy giảm lợi nhuận ở một mức độ nào đó
  • Rủi ro khoảng cách xung quanh các sự kiện quan trọng cần được chú ý

Những rủi ro này có thể được giảm bằng cách tối ưu hóa các tham số, đặt dừng lỗ hợp lý, nhận thức về sự kiện v.v.

Hướng dẫn tối ưu hóa

  • Kiểm tra các kết hợp khác nhau của thời gian kênh Donchian
  • Tối ưu hóa tham số biến động cho thời gian vào tốt nhất
  • Thêm chỉ số kiểm tra xu hướng để tránh giao dịch ngược xu hướng
  • Chọn cổ phiếu dựa trên các nguyên tắc cơ bản
  • Điều chỉnh cơ chế dừng lỗ để hạn chế lỗ

Kết luận

Chiến lược Breakout kênh Double Donchian nói chung là một chiến lược theo xu hướng tương đối ổn định và đáng tin cậy. Nó kết hợp các điểm mạnh của cả việc nắm bắt xu hướng và kiểm soát rủi ro, làm cho nó phù hợp như một mô-đun cơ bản trong các chiến lược giao dịch chứng khoán khác nhau.


/*backtest
start: 2024-01-04 00:00:00
end: 2024-02-03 00:00:00
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)


slowLen = input.int(50, title="Slow Donchian")
fastLen = input.int(30, title="Fast Donchian")
volatility = input.int(3, title="Volatility (%)")
longProfitPerc = input.float(2, title="Long TP1 (%)", minval=0.0, step=0.1) * 0.01
shortProfitPerc = input.float(2, title="Short TP1 (%)", minval=0.0, step=0.1) * 0.01
TP1Yuzde =input.int(50, title = "TP1 Position Amount (%)")

ubSlow = ta.highest(close, slowLen)[1]
lbSlow = ta.lowest(close, slowLen)[1]

ubFast = ta.highest(close, fastLen)[1]
lbFast = ta.lowest(close, fastLen)[1]

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")

fark = (ubSlow - lbSlow) / lbSlow * 100

longExitPrice  = strategy.position_avg_price * (1 + longProfitPerc)
shortExitPrice = strategy.position_avg_price * (1 - shortProfitPerc)

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

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

if strategy.position_size > 0 and ta.crossunder(close, lbFast) 
    strategy.close("Long", "Close All")

if strategy.position_size < 0 and ta.crossover(close, ubFast)
    strategy.close("Short", "Close All")

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

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

Thêm nữa