Chiến lược giao dịch đột phá


Ngày tạo: 2023-11-02 16:40:26 sửa đổi lần cuối: 2023-11-02 16:40:26
sao chép: 1 Số nhấp chuột: 573
1
tập trung vào
1617
Người theo dõi

Chiến lược giao dịch đột phá

Tổng quan

Chiến lược này dựa trên lý thuyết phá vỡ, bằng cách so sánh giá cao nhất và giá thấp nhất, để đánh giá xu hướng có đảo ngược hay không, để phát hiện điểm phá vỡ tiềm năng, giao dịch khi điểm phá vỡ xảy ra. Chiến lược đơn giản và trực tiếp, được sử dụng để theo dõi các dấu hiệu của sự thay đổi mạnh mẽ trong thị trường.

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

Chiến lược này trước tiên tính toán trung bình di chuyển của giá cao nhất và giá thấp nhất trong một chu kỳ nhất định dựa trên thiết lập của người dùng, giá trung bình di chuyển cao nhất đại diện cho đường lên và giá trung bình di chuyển thấp nhất đại diện cho đường xuống. Khi giá phá vỡ đường lên, cho thấy giá có xu hướng tăng, chiến lược sẽ mở nhiều vị trí; khi giá giảm xuống, cho thấy giá có xu hướng giảm, chiến lược sẽ mở vị trí trống. Người dùng có thể thiết lập chỉ làm nhiều hoặc chỉ làm trống.

Chiến lược này cũng cung cấp các thiết lập dừng lỗ tùy chọn. Khi thực hiện nhiều lần, điểm dừng lỗ là trên đường ray; khi thực hiện nhiều lần, điểm dừng lỗ là dưới đường ray. Điều này có thể làm giảm tổn thất. Người dùng cũng có thể chọn điểm đột phá làm điểm dừng lỗ, tức là thực hiện nhiều lần dừng lỗ là dưới đường ray, điểm dừng lỗ là trên đường ray, điều này mang lại không gian lợi nhuận lớn hơn.

Lợi thế chiến lược

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

  1. Các chiến lược này đơn giản, trực tiếp, dễ hiểu và dễ thực hiện.

  2. Có thể nhanh chóng nắm bắt các điểm biến động của xu hướng giá và điều chỉnh vị trí kịp thời.

  3. Có một tùy chọn dừng lỗ có thể được thiết lập theo sở thích rủi ro cá nhân.

  4. Các tín hiệu giao dịch được tạo rõ ràng, không có các tín hiệu giả thường xuyên.

  5. Các tham số có thể cấu hình ít hơn, dễ sử dụng hơn.

  6. Bạn có thể tùy chỉnh để làm nhiều hơn hoặc không làm gì cả.

Rủi ro chiến lược

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

  1. Một tín hiệu đột phá có thể là một đột phá giả và không thể kéo dài.

  2. Thiết lập vòng đột phá không chính xác có thể bỏ lỡ xu hướng đường dài hơn.

  3. Không tính đến khối lượng giao dịch khi phá vỡ, có thể dẫn đến việc theo đuổi.

  4. Có một số sự chậm trễ, có thể bỏ lỡ những phần tốt hơn.

  5. Trong một thời gian dài, các nhà đầu tư đã có những bước ngoặt lớn trong các hoạt động kinh doanh của họ.

  6. Nếu chỉ giao dịch dựa trên điểm đột phá, lợi nhuận sẽ không chắc chắn.

Tối ưu hóa chiến lược

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

  1. Kết hợp với chỉ số khối lượng giao dịch, tránh phá vỡ giả. Ví dụ: khối lượng giao dịch được tăng lên khi phá vỡ, cho thấy phá vỡ có thể thực sự có hiệu quả.

  2. Tối ưu hóa các tham số chu kỳ của trung bình di chuyển để nó có thể phù hợp với sự thay đổi xu hướng trong các giai đoạn khác nhau. Bạn cũng có thể thử các loại trung bình di chuyển khác nhau.

  3. Bạn có thể thiết lập độ lớn hồi phục để xác nhận thêm sau khi điểm đột phá xảy ra, tránh đột phá giả.

  4. Bạn có thể tham gia các công cụ chỉ số trung bình di chuyển như kênh Bollinger để có thêm hướng dẫn.

  5. Có thể kết hợp với các chỉ số khác như RSI, MACD để có thêm tín hiệu giao dịch hỗ trợ và cải thiện độ chính xác của quyết định.

  6. Tối ưu hóa chiến lược dừng lỗ để thích ứng tốt hơn với biến động thị trường, đồng thời kiểm soát rủi ro.

Tóm tắt

Chiến lược giao dịch đột phá này có ý tưởng tổng thể rõ ràng và dễ hiểu, bằng cách theo dõi giá đột phá lên và xuống đường để đánh giá thời gian ra sân. Có nhiều không gian tối ưu hóa chiến lược, có thể tăng cường hiệu quả chiến lược bằng cách tích hợp nhiều thông tin chỉ số và tối ưu hóa tham số. Sau khi làm quen với ý tưởng cơ bản của chiến lược, có thể đạt được hiệu quả giao dịch tốt hơn theo các tham số cần điều chỉnh của riêng mình.

Mã nguồn chiến lược
/*backtest
start: 2023-10-02 00:00:00
end: 2023-11-01 00:00:00
period: 1d
basePeriod: 1h
exchanges: [{"eid":"Futures_Binance","currency":"BTC_USDT"}]
*/

//Noro
//2018

//@version=3
strategy(title = "Noro's Brakeout Strategy v2.0", shorttitle = "Brakeout str 2.0", overlay = true, default_qty_type = strategy.percent_of_equity, default_qty_value = 100, pyramiding = 0)

//Settings
needlong = input(true, defval = true, title = "Long")
needshort = input(true, defval = true, title = "Short")
capital = input(100, defval = 100, minval = 1, maxval = 10000, title = "Capital, %")
len = input(4, defval = 4, minval = 1, maxval = 1000, title = "Length")
bod = input(false, defval = false, title = "Body mode")
rev = input(false, defval = false, title = "Revers")
showlines = input(true, defval = true, title = "Show Lines?")
fromyear = input(1900, defval = 1900, minval = 1900, maxval = 2100, title = "From Year")
toyear = input(2100, defval = 2100, minval = 1900, maxval = 2100, title = "To Year")
frommonth = input(01, defval = 01, minval = 01, maxval = 12, title = "From Month")
tomonth = input(12, defval = 12, minval = 01, maxval = 12, title = "To Month")
fromday = input(01, defval = 01, minval = 01, maxval = 31, title = "From day")
today = input(31, defval = 31, minval = 01, maxval = 31, title = "To day")

//Extremums
min = bod ? min(open, close) : low
max = bod ? max(open, close) : high
upex = highest(max, len) + syminfo.mintick * 10
dnex = lowest(min, len) - syminfo.mintick * 10
col = showlines ? blue : na
plot(upex, color = col, linewidth = 2)
plot(dnex, color = col, linewidth = 2)

//Trading
lot = 0.0
lot := strategy.position_size != strategy.position_size[1] ? strategy.equity / close * capital / 100 : lot[1]

if (not na(close[len])) and rev == false
    strategy.entry("Long", strategy.long, needlong == false ? 0 : lot, stop = upex)
    strategy.entry("Short", strategy.short, needshort == false ? 0 : lot, stop = dnex)
    
if (not na(close[len])) and rev == true
    strategy.entry("Long", strategy.long, needlong == false ? 0 : lot, limit = dnex)
    strategy.entry("Short", strategy.short, needshort == false ? 0 : lot, limit = upex)

if time > timestamp(toyear, tomonth, today, 23, 59)
    strategy.close_all()