Chiến lược phá vỡ động lực với dừng biến động

Tác giả:ChaoZhang, Ngày: 2023-11-13 17:20:51
Tags:

img

Tổng quan

Đây là một chiến lược theo xu hướng dựa trên đột phá và dừng biến động. Chiến lược xác định hướng xu hướng bằng cách phá vỡ giá của đường dừng lỗ động. Nó đi vào giao dịch khi giá xuyên qua đường dừng lỗ và sử dụng đường dừng lỗ để theo dõi xu hướng và khóa lợi nhuận. Chiến lược nhằm mục đích nắm bắt xu hướng trung dài trong khi kiểm soát rủi ro bằng các điểm dừng động.

Chiến lược logic

Chiến lược này sử dụng chỉ số dừng biến động để xác định hướng xu hướng và theo dõi dừng lỗ.

  1. Tính toán ATR (Middle True Range) của giá
  2. Nhận đường dừng lỗ bằng cách nhân ATR với hệ số dừng lỗ
  3. Khi giá tăng lên, kỷ lục giá cao nhất, đường dừng lỗ là giá cao nhất trừ ATR * hệ số
  4. Khi giá giảm, ghi lại giá thấp nhất, đường dừng lỗ là giá thấp nhất cộng với ATR * hệ số

Đường dừng lỗ dao động lên và xuống với giá, tạo thành một kênh năng động.

Khi giá vượt qua đường dừng lỗ, nó báo hiệu một sự đảo ngược xu hướng.

  • Khi giá phá vỡ trên đường dừng lỗ, đi dài
  • Khi giá phá vỡ dưới đường dừng lỗ, đi ngắn

Sau khi mở vị trí, chiến lược theo dõi dừng lỗ với dòng:

  • Đối với dài, dừng lỗ là giá cao nhất trừ ATR * hệ số
  • Nói ngắn gọn, dừng lỗ là giá thấp nhất cộng với ATR * hệ số

Khi giá chạm vào đường dừng lỗ một lần nữa, vị trí sẽ được đóng.

Bằng cách này, chiến lược có thể theo dõi xu hướng kịp thời trong khi kiểm soát rủi ro bằng cách dừng.

Phân tích lợi thế

Chiến lược có những lợi thế sau:

  1. Có thể nắm bắt sự đảo ngược xu hướng kịp thời và theo dõi xu hướng
  2. Sử dụng stop loss động để điều chỉnh vị trí stop dựa trên biến động thị trường
  3. Cập nhật dừng lỗ với xu hướng khóa lợi nhuận tối đa
  4. Đi trên xu hướng để đạt được lợi nhuận đáng kể
  5. Kiểm soát hiệu quả rủi ro và tránh tổn thất lớn

Phân tích rủi ro

Ngoài ra còn có một số rủi ro cần xem xét:

  1. Stop loss có thể được kích hoạt thường xuyên trong các thị trường dao động
  2. Cần thiết lập đúng stop loss hệ số, quá nhỏ có thể quá nhạy cảm
  3. Phí giao dịch có thể ăn mòn lợi nhuận với giao dịch thường xuyên
  4. Có thể bỏ lỡ một số lợi nhuận ở giai đoạn đầu của xu hướng
  5. Rủi ro khi dừng lỗ quá xa với giá

Giải pháp:

  1. Tối ưu hóa hệ số stop loss thông qua backtest để tìm thông số tốt nhất
  2. Sử dụng khung thời gian dài hơn để giảm tần suất giao dịch
  3. Thêm bộ lọc để tránh giao dịch quá mức
  4. Cho phép một số tính linh hoạt trong khoảng cách dừng nhưng không quá lớn

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. Tối ưu hóa hệ số stop loss để tìm kết hợp tham số tốt nhất
  2. Thêm bộ lọc để tránh whipsaws trong thị trường dao động
  3. Kết hợp nhiều khung thời gian để xác minh tín hiệu
  4. Tối ưu hóa kích thước vị trí, tăng dần kích thước
  5. Xem xét điều chỉnh năng động của khung thời gian
  6. Kết hợp với các yếu tố cơ bản của cổ phiếu để nắm bắt các xu hướng chính

Tóm lại

Nhìn chung, chiến lược đột phá đà với dừng biến động này là một hệ thống theo xu hướng rất thực tế. Nó có thể nắm bắt các cơ hội đảo ngược xu hướng và theo xu hướng trong khi kiểm soát rủi ro hiệu quả với các điểm dừng năng động. Với điều chỉnh tham số thích hợp, nó có thể đạt được lợi nhuận tốt trong các thị trường xu hướng. Nhưng một số vấn đề cần được giải quyết như điểm dừng quá nhạy cảm, tần suất giao dịch cao vv. Các tối ưu hóa thêm có thể biến nó thành một chiến lược giao dịch lượng hiệu quả và mạnh mẽ.


/*backtest
start: 2023-11-11 00:00:00
end: 2023-11-12 00:00:00
period: 3m
basePeriod: 1m
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/
//@version=4
strategy(shorttitle='Volatility Stop Strategy',title='Volatility Stop Strategy (by Coinrule)', overlay=true, initial_capital = 100, process_orders_on_close=true, default_qty_type = strategy.percent_of_equity, default_qty_value = 100, commission_type=strategy.commission.percent, commission_value=0.1)

// Works better on 3h, 1h, 2h, 4h
// Best time frame 2H

//Backtest dates
fromMonth = input(defval = 1,    title = "From Month",      type = input.integer, minval = 1, maxval = 12)
fromDay   = input(defval = 1,    title = "From Day",        type = input.integer, minval = 1, maxval = 31)
fromYear  = input(defval = 2021, title = "From Year",       type = input.integer, minval = 1970)
thruMonth = input(defval = 1,    title = "Thru Month",      type = input.integer, minval = 1, maxval = 12)
thruDay   = input(defval = 1,    title = "Thru Day",        type = input.integer, minval = 1, maxval = 31)
thruYear  = input(defval = 2112, title = "Thru Year",       type = input.integer, minval = 1970)

showDate  = input(defval = true, title = "Show Date Range", type = input.bool)

start     = timestamp(fromYear, fromMonth, fromDay, 00, 00)        // backtest start window
finish    = timestamp(thruYear, thruMonth, thruDay, 23, 59)        // backtest finish window
window()  => time >= start and time <= finish ? true : false       // create function "within window of time"

length = input(20, "Length", minval = 2)
src = input(close, "Source")
factor = input(3.0, "vStop Multiplier", minval = 0.25, step = 0.25)
volStop(src, atrlen, atrfactor) =>
    var max     = src
    var min     = src
    var uptrend = true
    var stop    = 0.0
    atrM        = nz(atr(atrlen) * atrfactor, tr)
    max         := max(max, src)
    min         := min(min, src)
    stop        := nz(uptrend ? max(stop, max - atrM) : min(stop, min + atrM), src)
    uptrend     := src - stop >= 0.0
    if uptrend != nz(uptrend[1], true)
        max    := src
        min    := src
        stop   := uptrend ? max - atrM : min + atrM
    [stop, uptrend]

[vStop, uptrend] = volStop(src, length, factor)


//Entry 


strategy.entry(id="long", long = true, when = crossover(close, vStop) and window())

//Exit
strategy.close("long", when = crossunder(close, vStop))

plot(vStop,"Vstop", color.black, linewidth=2)


Thêm nữa