Đột phá theo xu hướng - Chiến lược dừng lỗ theo đà


Ngày tạo: 2023-11-13 17:20:51 sửa đổi lần cuối: 2023-11-13 17:20:51
sao chép: 0 Số nhấp chuột: 847
1
tập trung vào
1617
Người theo dõi

Đột phá theo xu hướng - Chiến lược dừng lỗ theo đà

Tổng quan

Chiến lược này là chiến lược theo dõi xu hướng đường dài trung bình được thiết kế dựa trên các chỉ số phá vỡ và dừng động. Chiến lược sử dụng giá phá vỡ đường dừng động để xác định hướng xu hướng, vào sân khi giá phá vỡ đường dừng, sau đó sử dụng đường dừng để theo dõi xu hướng và khóa lợi nhuận. Chiến lược này nhằm mục đích nắm bắt xu hướng đường dài trung bình, đồng thời sử dụng dừng động để kiểm soát rủi ro.

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

Chiến lược này sử dụng chỉ số dừng động Volatility Stop để xác định hướng xu hướng và theo dõi dừng. Variability Stop tính một đường dừng động dựa trên phạm vi biến động của giá.

  1. ATR (trung bình biến động thực tế của giá)
  2. Đường dừng dựa trên giá trị ATR nhân một hệ số dừng
  3. Khi giá tăng, ghi giá cao nhất, dừng là giá cao nhất trừ ATR nhân hệ số
  4. Khi giá giảm, ghi lại mức giá thấp nhất, đường dừng là mức giá thấp nhất cộng với ATR nhân với hệ số

Do đó, đường dừng sẽ biến động lên và xuống theo biến động của giá, tạo thành một kênh động.

Khi giá phá vỡ đường dừng lỗ, biểu thị xu hướng đảo ngược, chiến lược sẽ mở vị trí:

  • Chiến lược mở nhiều vị trí khi giá từ dưới lên phá vỡ ngưỡng dừng
  • Chiến lược sẽ mở lỗ khi giá phá vỡ đường dừng từ trên xuống

Sau khi mở vị trí, chiến lược sẽ sử dụng đường dừng để theo dõi dừng:

  • Đường dừng của nhiều vị trí là giá cao nhất trừ ATR nhân hệ số
  • Đường dừng lỗ của vị trí trống là giá thấp nhất cộng với ATR nhân hệ số

Khi giá chạm lại đường dừng lỗ, chiến lược sẽ dừng lỗ.

Bằng cách này, chiến lược có thể được thực hiện một cách trật tự, theo dõi xu hướng để đảo ngược, đồng thời sử dụng lệnh dừng để kiểm soát rủi ro.

Phân tích lợi thế

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

  1. Có thể kịp thời nắm bắt được xu hướng đảo ngược và tránh bỏ lỡ cơ hội.
  2. Sử dụng dừng động, bạn có thể điều chỉnh vị trí dừng theo biến động của thị trường, làm cho dừng lại hợp lý hơn
  3. Vị trí dừng lỗ sẽ được cập nhật theo xu hướng, cho phép khóa lợi nhuận tối đa
  4. Trong xu hướng, bạn có thể đạt được lợi nhuận lớn hơn khi vượt qua.
  5. Kiểm soát rủi ro một cách hiệu quả, tránh thua lỗ quá mức

Phân tích rủi ro

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

  1. Trong trường hợp xảy ra chấn động, có thể xảy ra tình huống thường xuyên bị kích hoạt.
  2. Cần thiết lập hệ số dừng hợp lý, quá nhỏ sẽ quá nhạy cảm, quá lớn sẽ mất đi ý nghĩa dừng
  3. Cần chú ý đến ảnh hưởng của phí giao dịch, giao dịch thường xuyên chiếm lợi nhuận
  4. Có thể mất một phần lợi nhuận trong giai đoạn đầu của xu hướng
  5. Cần chú ý đến rủi ro khi đường dừng quá xa giá

Phản ứng:

  1. Bạn có thể tìm tham số tối ưu bằng cách tra lại để tối ưu hóa hệ số dừng
  2. Tăng thời gian giao dịch, giảm tần suất giao dịch
  3. Có thể xem xét thêm bộ lọc filtrter để tránh giao dịch quá thường xuyên
  4. Bạn có thể mở rộng khoảng cách giữa các đường dừng một cách thích hợp, nhưng không quá lớn.

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

Chiến lược này có thể được tối ưu hóa thêm bằng cách:

  1. Tối ưu hóa hệ số dừng để tìm ra sự kết hợp tốt nhất
  2. Thêm bộ lọc để tránh bị giam giữ trong cơn động đất
  3. Kết hợp nhiều chu kỳ thời gian để xác minh và cải thiện chất lượng tín hiệu
  4. Tối ưu hóa quản lý vị trí, tăng vị trí dần dần
  5. Cân nhắc chuyển động chu kỳ giao dịch
  6. Lựa chọn cổ phiếu cơ bản để nắm bắt xu hướng chính

Tóm tắt

Chiến lược phá vỡ xu hướng - dừng động lực là một chiến lược theo dõi xu hướng rất thực tế. Nó có thể nắm bắt cơ hội đảo ngược xu hướng, theo xu hướng, đồng thời sử dụng khả năng dừng động để kiểm soát rủi ro hiệu quả. Nếu các tham số được tối ưu hóa đúng cách, có thể thu được lợi nhuận tốt hơn trong tình huống xu hướng.

Mã nguồn chiến lược
/*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)