Chiến lược giao dịch phá vỡ trái ngược

Tác giả:ChaoZhang, Ngày: 2023-10-25 12:09:40
Tags:

img

Tổng quan

Chiến lược giao dịch phá vỡ đối nghịch là một chiến lược lấy các tín hiệu đối nghịch dựa trên giá tăng hoặc giảm liên tiếp để đi dài khi điều kiện ngắn được đáp ứng hoặc đi ngắn khi điều kiện dài được đáp ứng. Nó nhằm mục đích tạo ra lợi nhuận bằng cách thực hiện giao dịch đối nghịch khi một tài sản chỉ tạo ra tổn thất với một chiến lược nhất định.

Chiến lược logic

Chiến lược được thực hiện chủ yếu thông qua các phần sau:

  1. Thiết lập các giai đoạn liên tiếp cho giá tăng và giảm, tức là liên tiếpBarsUp và liên tiếpBarsDown. Khi xu hướng thời gian hiện tại đạt đến chiều dài đã thiết lập, một tín hiệu giao dịch được kích hoạt.

  2. Tính toán thời gian tăng và giảm của giá hiện tại so với giá giai đoạn trước. Tính toán thời gian tăng hoặc giảm liên tiếp hiện tại theo thời gian tăng và giảm dựa trên tăng và giảm.

  3. Đặt khoảng thời gian backtesting để giới hạn chiến lược chỉ hoạt động trong thời gian backtesting thông qua time_cond.

  4. Thiết lập thời gian giao dịch hàng ngày để giới hạn các tín hiệu giao dịch chỉ được phát hành trong khung thời gian đã thiết lập thông qua timetobuy.

  5. Khi chu kỳ tăng liên tiếp đạt đến chiều dài đặt, phát ra một tín hiệu dài thông qua chiến lược. dài. Khi chu kỳ giảm liên tiếp đạt đến chiều dài đặt, phát ra một tín hiệu ngắn thông qua chiến lược. ngắn.

  6. Giá dừng lỗ và lấy lợi nhuận có thể được thiết lập. Đặt dừng ngắn hạn cho các vị trí dài và dừng dài hạn cho các vị trí ngắn. Đặt lợi nhuận dài hạn cho các vị trí dài và lợi nhuận ngắn hạn cho các vị trí ngắn.

  7. Thông điệp tín hiệu thương mại có thể được đặt trong khi gửi.

  8. Phát hành tín hiệu dài hoặc ngắn khi các điều kiện được đáp ứng dựa trên các thông số và mức giá trên.

Phân tích lợi thế

Chiến lược phá vỡ ngược lại này có những lợi thế sau:

  1. Lấy các điểm đảo ngược giá. Hoạt động ngược lại có thể thu được lợi nhuận tốt. Hoạt động theo hướng ngược lại khi giá hình thành xu hướng có thể kiếm lợi nhuận khi đảo ngược giá.

  2. Các tham số có thể cấu hình linh hoạt. Các tham số như các khoảng thời gian liên tiếp có thể được điều chỉnh, mức dừng lỗ và lấy lợi nhuận có thể được thiết lập, khung thời gian giao dịch có thể được giới hạn. Các tham số có thể được tối ưu hóa theo điều kiện thị trường.

  3. Dừng lỗ và lấy lợi nhuận có thể kiểm soát rủi ro. Thiết lập dừng lỗ và lấy lợi nhuận trước sẽ giúp kiểm soát rủi ro giao dịch sau khi đi dài hoặc ngắn.

  4. Thông điệp giao dịch tạo điều kiện cho giao dịch tự động.

  5. Phạm vi thời gian kiểm tra lại tạo điều kiện cho việc kiểm tra chiến lược.

Phân tích rủi ro

Chiến lược cũng có một số rủi ro cần lưu ý:

  1. Tránh các sự kiện tin tức quan trọng. Xu hướng giá không thể đoán trước được trong các thông báo lớn, gây ra tín hiệu và lỗ dài và ngắn đồng thời.

  2. Ít hiệu quả khi sự đảo ngược không rõ ràng. Ít hiệu quả khi xu hướng mơ hồ, giao dịch ngược lại nên được sử dụng một cách thận trọng.

  3. Rủi ro quá phù hợp dữ liệu backtesting. Tối ưu hóa nên tránh quá phụ thuộc vào dữ liệu backtesting, không đại diện cho xu hướng trong tương lai. Các thông số nên được điều chỉnh phù hợp trong giao dịch trực tiếp.

  4. Tần suất giao dịch cao có nguy cơ giao dịch quá mức. Các thiết lập chu kỳ ngắn có thể dẫn đến tần suất giao dịch quá mức và rủi ro về lợi nhuận ổn định dài hạn.

  5. Các chiến lược dừng lỗ và lấy lợi nhuận có thể được tối ưu hóa để giảm rủi ro.

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

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

  1. Thêm phát hiện xu hướng để tránh sự đảo ngược ngẫu nhiên trong các thị trường không có xu hướng, sử dụng biến động, kênh vv để đánh giá xu hướng và nắm bắt sự đảo ngược.

  2. Tối ưu hóa dừng và lấy để điều chỉnh dựa trên biến động thị trường, sử dụng các phương pháp dựa trên tỷ lệ phần trăm, ATR hoặc các phương pháp thích nghi khác.

  3. Thêm phân tích khối lượng để tránh tín hiệu sai từ các mô hình giá một mình.

  4. Đa dạng hóa danh mục đầu tư trên nhiều sản phẩm để giảm rủi ro tài sản duy nhất.

  5. Tối ưu hóa tham số và học máy: Thu thập nhiều dữ liệu lịch sử hơn và sử dụng học máy để tự động tối ưu hóa các tham số cho các chiến lược mạnh mẽ hơn.

Kết luận

Chiến lược phá vỡ ngược lại cung cấp tín hiệu giao dịch tốt bằng cách nắm bắt sự đảo ngược giá thông qua các hoạt động ngược lại. Những lợi thế bao gồm cấu hình linh hoạt, kiểm soát rủi ro và phù hợp với giao dịch tự động. Nhưng rủi ro tồn tại và cần cải thiện liên tục các tham số và logic để có lợi nhuận ổn định dài hạn.


/*backtest
start: 2023-10-17 00:00:00
end: 2023-10-24 00:00:00
period: 45m
basePeriod: 5m
exchanges: [{"eid":"Futures_Binance","currency":"BTC_USDT"}]
*/

//@version=4

// Strategy
strategy("Up/Down Strategy - Contrarian", overlay=true, initial_capital = 10000, default_qty_value = 10000, default_qty_type = strategy.cash)

consecutiveBarsUp = input(1, title='Consecutive Bars Up')
consecutiveBarsDown = input(1, title='Consecutive Bars Down')

price = close

ups = 0.0
ups := price > price[1] ? nz(ups[1]) + 1 : 0

dns = 0.0
dns := price < price[1] ? nz(dns[1]) + 1 : 0

// Strategy Backtesting
startDate  = input(timestamp("2021-01-01T00:00:00"), type = input.time, title='Backtesting Start Date')
finishDate = input(timestamp("2021-12-31T00:00:00"), type = input.time, title='Backtesting End Date')

time_cond  = true

//Time Restriction Settings
startendtime = input("", title='Time Frame To Enter Trades')
enableclose = input(false, title='Enable Close Trade At End Of Time Frame')
timetobuy = true
timetoclose = true

// Stop Loss & Take Profit Tick Based
enablesltp = input(false, title='Enable Take Profit & Stop Loss')
stopTick = input(5.0, title='Stop Loss Ticks', type=input.float) / 100
takeTick = input(10.0, title='Take Profit Ticks', type=input.float) / 100

longStop = strategy.position_avg_price - stopTick
shortStop = strategy.position_avg_price + stopTick
shortTake = strategy.position_avg_price - takeTick
longTake = strategy.position_avg_price + takeTick

plot(strategy.position_size > 0 and enablesltp ? longStop : na, style=plot.style_linebr, color=color.red, linewidth=1, title="Long Fixed SL")
plot(strategy.position_size < 0 and enablesltp ? shortStop : na, style=plot.style_linebr, color=color.red, linewidth=1, title="Short Fixed SL")
plot(strategy.position_size > 0 and enablesltp ? longTake : na, style=plot.style_linebr, color=color.green, linewidth=1, title="Long Take Profit")
plot(strategy.position_size < 0 and enablesltp ? shortTake : na, style=plot.style_linebr, color=color.green, linewidth=1, title="Short Take Profit")

// Alert messages
message_enterlong  = input("", title="Long Entry message")
message_entershort = input("", title="Short Entry message")
message_closelong = input("", title="Close Long message")
message_closeshort = input("", title="Close Short message")

// Strategy Execution
if (dns >= consecutiveBarsDown) and time_cond and timetobuy
    strategy.entry("Long", strategy.long, stop = high + syminfo.mintick, alert_message = message_enterlong)
    
if (ups >= consecutiveBarsUp) and time_cond and timetobuy
    strategy.entry("Short", strategy.short, stop = low + syminfo.mintick, alert_message = message_entershort)
    
if strategy.position_size < 0 and timetoclose and enableclose
    strategy.close_all(alert_message = message_closelong)
if strategy.position_size > 0 and timetoclose and enableclose
    strategy.close_all(alert_message = message_closeshort)
    
if strategy.position_size < 0 and enablesltp and time_cond
    strategy.exit(id="Close Long", stop=longStop, limit=longTake, alert_message = message_closelong)
if strategy.position_size > 0 and enablesltp and time_cond
    strategy.exit(id="Close Short", stop=shortStop, limit=shortTake, alert_message = message_closeshort)






Thêm nữa