Chiến lược giao dịch đột phá Donchian


Ngày tạo: 2024-04-29 14:56:35 sửa đổi lần cuối: 2024-04-29 14:56:35
sao chép: 0 Số nhấp chuột: 701
1
tập trung vào
1617
Người theo dõi

Chiến lược giao dịch đột phá Donchian

Tổng quan

Chiến lược giao dịch phá vỡ Donchian là một hệ thống giao dịch dựa trên các chỉ số của kênh Donchian. Ý tưởng chính của chiến lược này là nắm bắt xu hướng thị trường thông qua phá vỡ đường dẫn lên và xuống của kênh Donchian và sử dụng tỷ lệ lợi nhuận rủi ro cố định (RR) để dừng lỗ.

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

  1. Tính toán đường Donchian: dựa trên chu kỳ đường Donchian được thiết lập ((đặc định 20), tính giá cao nhất và giá thấp nhất trong chu kỳ đó, tương ứng là đường lên và đường xuống của đường Donchian, và tính điểm trung tâm của đường lên xuống là đường trung tâm của đường Donchian.
  2. Xác định xem có tạo ra cao mới / thấp mới hay không: Bằng cách lặp lại so sánh đường lên và đường xuống của kênh Donchian hiện tại với đường lên và đường xuống của các chu kỳ trước đó, để xác định xem có tạo ra cao mới hoặc thấp mới trong chu kỳ kênh Donchian tương đối hay không. Nếu tạo ra cao mới, đường trên của Donchian sẽ được hiển thị màu xanh; nếu tạo ra thấp mới, đường dưới của Donchian sẽ được hiển thị màu xanh.
  3. Bắt đầu phá vỡ: mở nhiều vị trí đầu khi giá đóng cửa phá vỡ đường đua Donchian màu xanh, mở vị trí đầu trống khi phá vỡ đường đua Donchian màu xanh. Đó là, phá vỡ chỉ có hiệu lực sau khi tạo ra một mức cao / thấp mới.
  4. Hạn chế dừng: ghi lại giá mở và giá trung đạo Donchian hiện tại khi mở vị trí và tính chênh lệch giữa hai giá. Đặt vị trí dừng ở trung đạo Donchian, vị trí dừng được tính theo tỷ lệ lợi nhuận rủi ro được đặt ((tạm định 5 lần) và chênh lệch giá được tính.
  5. Hạ vị trí: Hạ vị trí khi giá chạm mức dừng hoặc giá dừng lỗ.

Lợi thế chiến lược

  1. Thích hợp với thị trường xu hướng: Chiến lược phá vỡ Donchian bằng cách phá vỡ vị trí mở đường lên / đường xuống, giao dịch theo hướng xu hướng thị trường, hoạt động tốt trong tình huống xu hướng.
  2. Bộ lọc mới cao / mới thấp: Chiến lược này sẽ lọc một số tín hiệu tiếng ồn và đột phá giả để cải thiện chất lượng tín hiệu mở kho bằng cách xác định liệu có tạo ra chu kỳ đường Donchian mới cao / mới thấp hay không.
  3. Tỷ lệ lợi nhuận rủi ro cố định: Các vị trí dừng và dừng lỗ cho mỗi giao dịch dựa trên tỷ lệ lợi nhuận rủi ro cố định, rủi ro có thể kiểm soát được, thuận lợi cho quản lý tiền.
  4. Các tham số đơn giản: Các tham số chiến lược được thiết lập đơn giản, chủ yếu là chu kỳ kênh Donchian và tỷ lệ lợi nhuận rủi ro, tối ưu hóa và kiểm soát dễ dàng hơn.

Rủi ro chiến lược

  1. Mức độ mất mát: Chiến lược dừng lỗ ở vị trí trung tâm của kênh Donchian, trong trường hợp xu hướng không rõ ràng hoặc xung đột, có thể xảy ra tổn thất lớn trong một giao dịch.
  2. Giao dịch thường xuyên: Nếu thiết lập chu kỳ của kênh Donchian nhỏ hơn, có thể dẫn đến việc mở lỗ thường xuyên, tăng chi phí giao dịch.
  3. Xu hướng biến đổi: Trong thời gian biến đổi xu hướng, chiến lược có thể xảy ra nhiều lần dừng lỗ liên tiếp.
  4. Nhận thức tham số: Hiệu suất chiến lược nhạy cảm với các thiết lập tham số, cần tối ưu hóa tham số theo các đặc điểm thị trường và chu kỳ kinh doanh khác nhau.

Hướng tối ưu hóa chiến lược

  1. Hạn chế động lực: Điều chỉnh vị trí dừng lỗ theo thời gian thực, chẳng hạn như sử dụng ATR làm tài liệu dừng lỗ, để giảm rủi ro giao dịch đơn lẻ.
  2. Trình lọc xu hướng: Thêm các chỉ số đánh giá xu hướng như đường trung bình di chuyển, chỉ mở lệnh khi hướng xu hướng rõ ràng, cải thiện chất lượng tín hiệu.
  3. Kết hợp với các chỉ số khác: như kết hợp các chỉ số động lực như RSI, MACD, đánh giá tổng hợp thời gian mở vị trí.
  4. Quản lý vị trí: Điều chỉnh kích thước vị trí theo chiều hướng của thị trường, biến động và các yếu tố khác để kiểm soát rủi ro tổng thể.
  5. Tự thích ứng tham số: Sử dụng các phương pháp như học máy, tự thích ứng để tối ưu hóa các thiết lập tham số.

Tóm tắt

Chiến lược giao dịch phá vỡ Donchian là một hệ thống giao dịch theo dõi xu hướng dựa trên các chỉ số kênh Donchian cổ điển. Các vị trí được mở bằng cách phá vỡ đường dẫn Donchian lên và xuống và phán đoán mức cao / thấp mới, dừng lỗ dựa trên tỷ lệ lợi nhuận rủi ro cố định. Chiến lược này có logic đơn giản, phù hợp với thị trường xu hướng.

Mã nguồn chiến lược
/*backtest
start: 2023-04-23 00:00:00
end: 2024-04-28 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/
// © Dillon_Grech
//---------------------------------------------//

//---------------------------------------------//
// Simple donchian channel break out strategy
// which only enters trades when price closes
// above donchian upper and creates new high 
// (long) or price closes below donchian lower
// and creates new low, relative to the donchian
// length. This is indicated by the donchian
// upper and lower color (blue). Stop loss is
// located at donchian basis and take profit
// is set at Risk Reward (RR) profit target.
//---------------------------------------------//
//@version=5
strategy("Donchian New High/Low Strategy [Dillon Grech]", overlay=true)

//---------------------------------------------//

//---------------------------------------------//
//INDICATOR 1 - Donchian New High Low Price Close
don_length = input.int(20, minval = 1)
don_lower  = ta.lowest(don_length)
don_upper  = ta.highest(don_length)
don_basis  = math.avg(don_upper, don_lower)

//loop
don_lower_upper  = true
don_higher_lower = true
for i = 0 to don_length - 1
    //Check for higher high over don_length
    if don_upper > don_upper[i]
        don_lower_upper := false
    //Check for lower low over don_length
    if don_lower < don_lower[i]
        don_higher_lower := false

//Plot
c_ora = color.orange
c_blu = color.blue
c_gra = color.gray
color_basis = c_ora
color_upper = don_lower_upper  ? c_blu : c_gra
color_lower = don_higher_lower ? c_blu : c_gra
plot(don_basis,     "Don Basis", color_basis, 2)
u = plot(don_upper, "Don Upper", color_upper, 2)
l = plot(don_lower, "Don Lower", color_lower, 2)

//Conditions
Ind_1_L = ta.crossover(close, don_upper[1]) and 
   don_lower_upper[1]
Ind_1_S = ta.crossunder(close,don_lower[1]) and 
   don_higher_lower[1]
//---------------------------------------------//

//---------------------------------------------//
//ENTRY CONDITIONS
entry_long  = strategy.position_size<=0 and
   Ind_1_L
entry_short = strategy.position_size>=0 and
   Ind_1_S

if(entry_long)
    strategy.entry("Long Entry", strategy.long)
if(entry_short)
    strategy.entry("Short Entry", strategy.short)
//---------------------------------------------/

//---------------------------------------------//
//TAKE PROFIT AND STOP LOSS CONDITIONS
profit_RR = input.float(5.0,"RR Profit Target")

//Store Price on new entry signal
entry_price = strategy.opentrades.entry_price(
   strategy.opentrades-1)

//Store Donchain Channel Basis
entry_don_basis = float(0.0)
if entry_long or entry_short
    entry_don_basis := don_basis
else
    entry_don_basis := entry_don_basis[1]

//Get stop loss distance
stop_distance = math.abs(entry_price -
   entry_don_basis)
stop_L   = entry_price - stop_distance
profit_L = entry_price + stop_distance*profit_RR
stop_S   = entry_price + stop_distance
profit_S = entry_price - stop_distance*profit_RR

//Plot TP and SL
plot(entry_long or entry_short ? na :
   strategy.position_size > 0 ? profit_L : na,
   color=color.lime, style=plot.style_linebr,
   linewidth=2)
plot(entry_long or entry_short ? na :
   strategy.position_size > 0 ? stop_L : na,
   color=color.red,  style=plot.style_linebr,
   linewidth=2)
plot(entry_long or entry_short ? na : 
   strategy.position_size < 0 ? profit_S : na,
   color=color.lime, style=plot.style_linebr,
   linewidth=2)
plot(entry_long or entry_short ? na :
   strategy.position_size < 0 ? stop_S : na,
   color=color.red,  style=plot.style_linebr,
   linewidth=2)

//Exit long trades
strategy.exit(id = 'Exit Long', 
   from_entry ='Long Entry', 
   stop = stop_L, limit = profit_L)
strategy.exit(id = 'Exit Short', 
   from_entry ='Short Entry', 
   stop = stop_S, limit = profit_S)
//---------------------------------------------//