Tài nguyên đang được tải lên... tải...

Donchian Breakout chiến lược giao dịch

Tác giả:ChaoZhang, Ngày: 2024-04-29 14:56:35
Tags:

img

Tổng quan

Chiến lược giao dịch đột phá Donchian là một hệ thống giao dịch dựa trên chỉ số 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 bằng cách phá vỡ các dải trên và dưới của kênh Donchian, và sử dụng tỷ lệ phần thưởng rủi ro cố định (RR) để lấy lợi nhuận và dừng lỗ. Khi giá vượt qua dải trên của kênh Donchian và tạo ra một mức cao mới tương đối với thời gian kênh Donchian, nó sẽ dài; khi nó vượt qua dải dưới và tạo ra một mức thấp mới, nó sẽ ngắn.

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

  1. Tính toán kênh Donchian: Dựa trên khoảng thời gian kênh Donchian được đặt (mất mặc định 20), tính toán giá cao nhất và thấp nhất trong khoảng thời gian đó như các dải trên và dưới của kênh Donchian tương ứng, và tính toán điểm giữa các dải trên và dưới như dải giữa của kênh Donchian.
  2. Xác định liệu có tạo ra một mức cao / thấp mới hay không: Bằng cách lặp lại và so sánh các dải trên và dưới kênh Donchian hiện tại với các dải trên và dưới của vài giai đoạn trước đó, xác định liệu có tạo ra một mức cao hoặc thấp mới tương đối với giai đoạn kênh Donchian hay không.
  3. Breakout entry: Khi giá đóng phá vỡ trên dải trên màu xanh Donchian, nó đi vào một vị trí dài; khi nó phá vỡ dưới dải dưới màu xanh Donchian, nó đi vào một vị trí ngắn.
  4. Lấy lợi nhuận và dừng lỗ: Khi mở một vị trí, hãy ghi lại giá nhập cảnh và giá băng tần trung tâm kênh Donchian hiện tại, và tính chênh lệch giá giữa hai. Lạm dừng lỗ được đặt ở băng tần trung tâm kênh Donchian, và lợi nhuận được tính dựa trên tỷ lệ phần thưởng rủi ro (bất định 5 lần) và chênh lệch giá.
  5. Khóa vị trí: Khi giá đạt đến giá lấy lợi nhuận hoặc dừng lỗ, vị trí được đóng.

Ưu điểm chiến lược

  1. Thích hợp cho các thị trường xu hướng: Chiến lược Breakout Donchian đi vào các vị trí bằng cách phá vỡ các dải trên / dưới, theo hướng xu hướng thị trường, và hoạt động tốt trên các thị trường xu hướng.
  2. Bộ lọc cao / thấp mới: Chiến lược lọc ra một số tín hiệu tiếng ồn và đột phá sai bằng cách xác định xem có một mức cao / thấp mới được tạo ra trong thời gian kênh Donchian, cải thiện chất lượng của tín hiệu nhập cảnh.
  3. Tỷ lệ phần thưởng rủi ro cố định: Các vị trí lấy lợi nhuận và dừng lỗ cho mỗi giao dịch dựa trên tỷ lệ phần thưởng rủi ro cố định, làm cho rủi ro có thể kiểm soát được và thuận lợi cho quản lý tiền.
  4. Các thông số đơn giản: Các thông số chiến lược tương đối đơn giản để thiết lập, chủ yếu là thời gian kênh Donchian và Tỷ lệ Tỷ lệ Lợi nhuận Rủi ro, giúp 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: Vị trí dừng lỗ của chiến lược là dải giữa kênh Donchian. Trong xu hướng không rõ ràng hoặc thị trường biến động, có thể có tình huống khi một giao dịch duy nhất bị mất mát lớn.
  2. Giao dịch thường xuyên: Nếu thời gian kênh Donchian được đặt quá ngắn, nó có thể dẫn đến việc mở và đóng các vị trí thường xuyên, làm tăng chi phí giao dịch.
  3. Sự đảo ngược xu hướng: Trong quá trình đảo ngược xu hướng, chiến lược có thể trải qua nhiều lần dừng lỗ liên tiếp.
  4. Tính nhạy cảm của các tham số: Hiệu suất chiến lược nhạy cảm với các cài đặt tham số và cần được tối ưu hóa dựa trên các đặc điểm thị trường và chu kỳ giao dịch khác nhau.

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

  1. Động thái dừng lỗ: Điều chỉnh vị trí dừng lỗ trong thời gian thực dựa trên biến động giá, biến động, v.v., chẳng hạn như sử dụng ATR làm tham chiếu dừng lỗ để giảm rủi ro giao dịch duy nhất.
  2. Việc lọc xu hướng: Thêm các chỉ số đánh giá xu hướng như trung bình động và chỉ mở các vị trí 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: Kết hợp với các chỉ số động lực như RSI và MACD để đánh giá toàn diện thời gian mở các vị trí.
  4. Quản lý vị trí: Điều chỉnh kích thước vị trí năng động dựa trên sức mạnh xu hướng thị trường, biến động, v.v., để kiểm soát rủi ro tổng thể.
  5. Điều chỉnh tham số: Sử dụng máy học và các phương pháp khác để tối ưu hóa các cài đặt tham số theo cách thích nghi.

Tóm lại

Chiến lược giao dịch phá vỡ Donchian là một hệ thống giao dịch theo xu hướng dựa trên chỉ số kênh Donchian cổ điển. Nó mở các vị trí thông qua việc phá vỡ các dải trên và dưới của kênh Donchian và phán đoán về mức cao / thấp mới, lấy lợi nhuận và dừng lỗ dựa trên tỷ lệ phần thưởng rủi ro cố định. Chiến lược có logic đơn giản và phù hợp với thị trường xu hướng. Tuy nhiên, nó hoạt động kém trong thị trường biến động và nhạy cảm với cài đặt tham số. Nó có thể được tối ưu hóa hơn nữa thông qua việc giới thiệu các lỗ dừng động, lọc xu hướng, quản lý vị trí, v.v., để cải thiện độ bền của 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)
//---------------------------------------------//

Thêm nữa