chiến lược giao dịch ngắn hạn

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

img

Tổng quan

Đây là một chiến lược giao dịch ngắn hạn dựa trên sự đột phá của kênh. Nó sử dụng sự đột phá của đường ray trên và dưới của kênh để xác định sự bắt đầu và kết thúc của xu hướng, và đưa ra quyết định giao dịch phù hợp. Trong các thị trường có xu hướng mạnh, chiến lược đột phá này có thể tạo ra lợi nhuận tốt.

Chiến lược logic

  1. Chiến lược đầu tiên tính toán mức cao nhất và thấp nhất trong một khoảng thời gian nhất định để xây dựng đường ray trên và dưới của kênh.

  2. Nếu giá phá vỡ trên đường ray trên, đi dài. Nếu giá phá vỡ dưới đường ray dưới, đi ngắn.

  3. Sử dụng stop loss di chuyển để kiểm soát rủi ro.

  4. Có hai quy tắc ra ngoài tùy chọn: quay lại đường trung hoặc theo lệnh dừng lỗ di chuyển.

  5. Thời gian kênh và các tham số khác có thể được điều chỉnh để tối ưu hóa chiến lược cho các điều kiện thị trường khác nhau.

Phân tích lợi thế

  1. Dễ dàng thực hiện, chỉ cần theo dõi mối quan hệ giá-kênh và làm theo các quy tắc giao dịch.

  2. Giao dịch theo xu hướng, không có rủi ro chống lại xu hướng.

  3. Kênh rõ ràng và trực quan cung cấp tín hiệu nhập cảnh rõ ràng.

  4. Lợi nhuận tốt, có thể đạt được lợi nhuận thỏa đáng trong hầu hết các trường hợp.

  5. Nhiều thông số điều chỉnh để tối ưu hóa trên các thị trường khác nhau.

Phân tích rủi ro

  1. Việc phá vỡ có thể thất bại, nguy cơ bị mắc kẹt tồn tại.

  2. Kênh cần một thời gian để hình thành, không phù hợp với các thị trường giới hạn phạm vi.

  3. Quay lại mức dừng lỗ giữa có thể quá bảo thủ, không thể giữ xu hướng.

  4. Tối ưu hóa tham số cần dữ liệu lịch sử, quá phù hợp có thể trong giao dịch trực tiếp.

  5. Giao dịch cơ học của các điểm đột phá có thể làm tăng tần suất giao dịch và chi phí trượt.

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

  1. Đánh giá các kênh của các giai đoạn khác nhau và chọn kênh tối ưu nhất.

  2. Kiểm tra quay trở lại giữa và di chuyển dừng lỗ để tìm một cơ chế thoát tốt hơn.

  3. Tối ưu hóa tỷ lệ dừng lỗ để giảm nguy cơ bị dừng lại.

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

  5. Xem xét tăng kích thước vị trí nhưng kiểm soát rủi ro.

Tóm lại

Nhìn chung, đây là một chiến lược đột phá ngắn hạn trưởng thành. Nó có các quy tắc nhập cảnh rõ ràng, kiểm soát rủi ro thích hợp và hoạt động tốt nói chung. Sự cải thiện hơn nữa có thể đạt được thông qua điều chỉnh tham số. Nhưng cần lưu ý những hạn chế vốn có, điều chỉnh cần thiết cho các thị trường khác nhau. Nếu được sử dụng có hệ thống, nó nên mang lại lợi nhuận tổng thể nhất quán.


/*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()


Thêm nữa