Chiến lược phá vỡ kênh ngắn hạn


Ngày tạo: 2023-10-25 14:40:21 sửa đổi lần cuối: 2023-10-25 14:40:21
sao chép: 0 Số nhấp chuột: 674
1
tập trung vào
1617
Người theo dõi

Chiến lược phá vỡ kênh ngắn hạn

Tổng quan

Chiến lược này là một chiến lược giao dịch ngắn hạn dựa trên các chỉ số kênh. Nó sử dụng các đột phá trên và dưới đường dẫn để đánh giá sự bắt đầu và kết thúc của xu hướng, sau đó đưa ra quyết định mua và bán. Trong thị trường xu hướng mạnh, chiến lược đột phá này có thể thu được lợi nhuận tốt hơn.

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

  1. Chiến lược này bắt đầu bằng việc tính toán giá cao nhất và giá thấp nhất trong một chu kỳ nhất định, xây dựng đường ray trên và dưới của kênh.

  2. Nếu giá tăng vượt lên đường ray, bạn có thể tham gia nhiều hơn. Nếu giá giảm vượt xuống đường ray, bạn có thể tham gia.

  3. Sử dụng dừng di động để kiểm soát rủi ro. Đường dừng được thiết lập làm đường trung tâm của đường.

  4. Có hai quy tắc rút ra có thể lựa chọn: quay trở lại đường trung tâm và dừng di chuyển. Đầu tiên là rút ra lợi nhuận nhanh, sau đó là kiểm soát rủi ro.

  5. Có thể chọn chu kỳ kênh tùy theo môi trường thị trường, điều chỉnh các tham số như mức dừng lỗ, để tối ưu hóa chiến lược.

Phân tích lợi thế

  1. Hoạt động đơn giản, dễ thực hiện. Chỉ cần theo dõi mối quan hệ giữa giá và kênh, mở lệnh theo quy tắc.

  2. Các nhà đầu tư cũng có thể sử dụng các giao dịch theo xu hướng và không có rủi ro bất lợi.

  3. Hành lang rõ ràng và trực quan, tạo ra một tín hiệu nhập cảnh rõ ràng.

  4. Có một khoảng trống lợi nhuận tốt, thường có thể nhận được một phần thưởng thỏa đáng.

  5. Có nhiều tham số có thể điều chỉnh, có thể được tối ưu hóa cho các thị trường khác nhau.

Phân tích rủi ro

  1. Việc đột phá không nhất thiết phải thành công, có nguy cơ bị mắc kẹt.

  2. Hành lang cần phải được hình thành theo chu kỳ nhất định, không áp dụng cho các trường hợp động đất.

  3. Nhìn lại sự dừng chân của đường trung tâm có thể quá bảo thủ và không thể duy trì xu hướng.

  4. Các tham số tối ưu hóa cần được hỗ trợ bởi dữ liệu lịch sử và có thể đã được tối ưu hóa trên ổ cứng.

  5. Các điểm phá vỡ giao dịch có thể làm tăng số lần giao dịch và chi phí điểm trượt.

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

  1. Đánh giá hiệu quả của các tham số chu kỳ khác nhau, chọn chu kỳ tốt nhất.

  2. Kiểm tra dừng quay trở lại và dừng di chuyển, chọn cơ chế thoát thích hợp hơn.

  3. Tối ưu hóa mức độ dừng lỗ và giảm khả năng kích hoạt dừng lỗ.

  4. Thêm bộ lọc xu hướng để tránh các giao dịch đột phá không phù hợp.

  5. Hãy cân nhắc mở rộng vị thế nhưng hãy kiểm soát rủi ro.

Tóm tắt

Chiến lược này nói chung là một chiến lược đột phá ngắn hạn lâu năm. Nó có quy tắc nhập cảnh rõ ràng, các biện pháp kiểm soát rủi ro được đặt ra và hoạt động hiệu quả hơn. Có thể cải thiện hơn nữa hiệu suất của chiến lược thông qua tối ưu hóa tham số.

Mã nguồn chiến lược
/*backtest
start: 2022-10-18 00:00:00
end: 2023-10-24 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/
// Strategy testing and optimisation for free Bitmex trading bot 
// © algotradingcc 

//@version=4
strategy("Channel Break [for free bot]", overlay=true, default_qty_type= strategy.percent_of_equity, initial_capital = 1000, default_qty_value = 20, commission_type=strategy.commission.percent, commission_value=0.075)

//Options
buyPeriod = input(13, "Channel Period for Long position")
sellPeriod = input(18, "Channel Period for Short position")
isMiddleExit = input(true, "Is exit on Base Line?")
takeProfit = input(46, "Take Profit (%) for position")
stopLoss = input(9, "Stop Loss (%) for position")

// 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(buyPeriod)
BuyExit = isMiddleExit ? (highest(buyPeriod) + lowest(buyPeriod)) / 2: lowest(buyPeriod)

SellEnter = lowest(sellPeriod)
SellExit = isMiddleExit ? (highest(sellPeriod) + lowest(sellPeriod)) / 2: highest(sellPeriod)

// 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 & Stop Loss
TP = 0.0
SL = 0.0
if strategy.position_size > 0
    TP := strategy.position_avg_price*(1 + takeProfit/100)
    SL := strategy.position_avg_price*(1 - stopLoss/100)

if strategy.position_size > 0 and SL > BuyExit
    BuyExit := SL
    
if strategy.position_size < 0
    TP := strategy.position_avg_price*(1 - takeProfit/100)
    SL := strategy.position_avg_price*(1 + stopLoss/100)

if strategy.position_size < 0 and SL < SellExit
    SellExit := SL
    
    
// Long Position    
if timeRange and strategy.position_size <= 0
    strategy.entry("Long", strategy.long, stop = BuyEnter)
strategy.exit("Long Exit", "Long", stop=BuyExit, limit = TP, when = strategy.position_size > 0)


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

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