Chiến lược theo dõi xu hướng đột phá kênh Donchian


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

Chiến lược theo dõi xu hướng đột phá kênh Donchian

Tổng quan

Chiến lược phá vỡ kênh Dongguan là một chiến lược theo dõi xu hướng, nó tạo ra một kênh giá bằng cách tính toán giá cao nhất và giá thấp nhất trong một khoảng thời gian nhất định, và sử dụng biên giới của kênh làm tín hiệu mua và bán. Khi giá phá vỡ đường mòn, hãy làm trống; khi giá phá vỡ đường mòn, hãy làm nhiều hơn.

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

Chiến lược này sử dụng chỉ số đường Dongxian để đánh giá xu hướng giá và tính điểm thoát vào. Các đường Dongxian bao gồm đường lên, đường xuống và đường giữa. đường lên là giá cao nhất, đường dưới là giá thấp nhất và đường giữa là giá trung bình trong một chu kỳ nhất định.

Độ dài của chu kỳ vào và thoát có thể được cấu hình riêng biệt. Khi giá vượt lên, hãy nhập nhiều hơn. Khi giá vượt lên, hãy vào.

Ngoài ra, trong chiến lược cũng có điểm dừng. Đặt điểm dừng của nhiều vị trí là tỷ lệ {1 + điểm dừng của giá nhập, trái ngược với vị trí không có giá. Việc kích hoạt chức năng này có thể khóa lợi nhuận và tránh tổn thất mở rộng.

Nhìn chung, chiến lược này đánh giá xu hướng, đồng thời đảm bảo có đủ không gian để thiết lập các lệnh dừng và dừng. Điều này làm cho nó đặc biệt phù hợp với các loại tiền tệ kỹ thuật số có độ biến động cao.

Phân tích lợi thế

Chiến lược này có những ưu điểm sau:

  1. Chiến lược của họ rất rõ ràng, và việc tạo ra tín hiệu rất đơn giản và đáng tin cậy.
  2. Chỉ số đường Đông Dương không nhạy cảm với biến động giá, có lợi cho việc nắm bắt xu hướng.
  3. Các tham số kênh có thể được tùy chỉnh để phù hợp với các giống và thời gian khác nhau.
  4. Chức năng ngăn chặn thiệt hại tích hợp có thể kiểm soát rủi ro hiệu quả.
  5. Nó được sử dụng cho các loại tiền tệ biến động cao như tiền kỹ thuật số, có tiềm năng thu nhập cao.

Phân tích rủi ro

Chiến lược này cũng có những rủi ro sau:

  1. Mặc dù có chức năng ngăn chặn thiệt hại, nhưng không thể hoàn toàn tránh được rủi ro của thị trường lớn.
  2. Thiết lập tham số không đúng có thể dẫn đến giao dịch quá thường xuyên, tăng chi phí giao dịch và rủi ro trượt.
  3. Chiến lược này không nhạy cảm với biến động giá và có thể bỏ lỡ một số cơ hội giao dịch.

Để kiểm soát những rủi ro trên, các biện pháp sau đây được khuyến cáo:

  1. Tích hợp giảm vốn đầu tư đơn lẻ, phân tán các loại đầu tư, kiểm soát rủi ro tổng thể.
  2. Tối ưu hóa tham số, tìm kiếm sự kết hợp tham số tốt nhất. Bạn có thể thử các phương pháp tự động tối ưu hóa bằng cách sử dụng học máy.
  3. Kết hợp với các chỉ số bổ sung để đánh giá độ tin cậy của tín hiệu đột phá, tránh giao dịch sai.

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

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

  1. Thử nghiệm và tối ưu hóa nhiều tổ hợp tham số để tìm các tham số tốt nhất. Các tham số chính bao gồm chu kỳ đường dẫn, tỷ lệ dừng, có được phép làm thêm không gian không gian, v.v.
  2. Thêm mô hình học máy, tự động xác định các tham số tối ưu. Có thể sử dụng các phương pháp như học tập tăng cường.
  3. Kết hợp với các chỉ số khác để đánh giá xu hướng và độ tin cậy của tín hiệu, chẳng hạn như đường trung bình, khối lượng giao dịch.
  4. Phát triển các chiến lược dừng lỗ, như theo dõi dừng lỗ, Chandelier Exit, để kiểm soát rủi ro hơn nữa.
  5. Mở rộng đến nhiều giống hơn, tìm kiếm những giống thương mại phù hợp nhất với chiến lược này.

Tóm tắt

Chiến lược đột phá kênh Đường Đông Dương nói chung là một chiến lược theo dõi xu hướng có sự phán đoán rõ ràng, có thể kiểm soát rủi ro. Nó đặc biệt phù hợp với các loại tiền tệ kỹ thuật số có biến động cao, có tiềm năng thu nhập cao. Đồng thời, chiến lược này cũng có một số tham số tối ưu hóa và khả năng kết hợp với các chỉ số khác, đây là những hướng có thể mở rộng trong tương lai.

Mã nguồn chiến lược
/*backtest
start: 2023-12-01 00:00:00
end: 2023-12-31 23:59:59
period: 4h
basePeriod: 15m
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/
// © algotradingcc
// Strategy testing and optimisation for free trading bot 

//@version=4
strategy("Donchian Channel Strategy [for free bot]", overlay=true )

//Long optopns
buyPeriodEnter = input(10, "Channel Period for Long enter position")
buyPeriodExit = input(10, "Channel Period for Long exit position")
isMiddleBuy = input(true, "Is exit on Base Line? If 'no' - exit on bottom line")
takeProfitBuy = input(2.5, "Take Profit (%) for Long position")
isBuy = input(true, "Allow Long?")

//Short Options
sellPeriodEnter = input(20, "Channel Period for Short enter position")
sellPeriodExit = input(20, "Channel Period for Short exit position")
isMiddleSell = input(true, "Is exit on Base Line? If 'no' - exit on upper line")
takeProfitSell = input(2.5, "Take Profit (%) for Short position")
isSell = input(true, "Allow Short?")

// Test Start
startYear = input(2005, "Test Start Year")
startMonth = input(1, "Test Start Month")
startDay = input(1, "Test Start Day")
startTest = timestamp(startYear,startMonth,startDay,0,0)

//Test End
endYear = input(2050, "Test End Year")
endMonth = input(12, "Test End Month")
endDay = input(30, "Test End Day")
endTest = timestamp(endYear,endMonth,endDay,23,59)

timeRange = time > startTest and time < endTest ? true : false

// Long&Short Levels
BuyEnter = highest(buyPeriodEnter)
BuyExit = isMiddleBuy ? ((highest(buyPeriodExit) + lowest(buyPeriodExit)) / 2): lowest(buyPeriodExit)

SellEnter = lowest(sellPeriodEnter)
SellExit = isMiddleSell ? ((highest(sellPeriodExit) + lowest(sellPeriodExit)) / 2): highest(sellPeriodExit)

// Plot Data
plot(BuyEnter, style=plot.style_line, linewidth=2, color=color.blue, title="Buy Enter")
plot(BuyExit, style=plot.style_line, linewidth=1, color=color.blue, title="Buy Exit", transp=50)
plot(SellEnter, style=plot.style_line, linewidth=2, color=color.red, title="Sell Enter")
plot(SellExit, style=plot.style_line, linewidth=1, color=color.red, title="Sell Exit", transp=50)

// Calc Take Profits
TakeProfitBuy = 0.0
TakeProfitSell = 0.0
if strategy.position_size > 0
    TakeProfitBuy := strategy.position_avg_price*(1 + takeProfitBuy/100)
    
if strategy.position_size < 0
    TakeProfitSell := strategy.position_avg_price*(1 - takeProfitSell/100)

// Long Position    
if isBuy and timeRange
    strategy.entry("Long", strategy.long, stop = BuyEnter, when = strategy.position_size == 0) 
    
strategy.exit("Long Exit", "Long", stop=BuyExit, limit = TakeProfitBuy, when = strategy.position_size > 0)

// Short Position
if isSell and timeRange
    strategy.entry("Short", strategy.short, stop = SellEnter, when = strategy.position_size == 0) 
    
strategy.exit("Short Exit", "Short", stop=SellExit, limit = TakeProfitSell, when = strategy.position_size < 0)

// Close & Cancel when over End of the Test
if time > endTest
    strategy.close_all()
    strategy.cancel_all()