Tiếp tục chiến lược đường dây

Tác giả:ChaoZhang, Ngày: 2023-12-01 18:31:39
Tags:

img

Tổng quan

Chiến lược Follow Line là một chiến lược theo dõi xu hướng dựa trên Bollinger Bands và Average True Range (ATR). Nó điều chỉnh năng động đường phán đoán xu hướng để theo dõi xu hướng bằng cách di chuyển nó lên khi giá phá vỡ trên dải trên Bollinger Bands và di chuyển nó xuống khi giá phá vỡ dưới dải dưới Bollinger Bands.

Chiến lược logic

Chiến lược đầu tiên tính toán các dải trên và dưới của Bollinger Bands, cũng như phạm vi trung bình thực sự. sau đó nó đánh giá liệu giá có phá vỡ trên dải trên Bollinger hay dưới dải dưới.

Khi giá phá vỡ trên dải trên, nếu bộ lọc ATR được bật, đường xu hướng được đặt ở mức giá thấp nhất trừ ATR. Nếu bộ lọc ATR bị vô hiệu hóa, đường xu hướng được đặt trực tiếp ở mức giá thấp nhất.

Khi giá phá vỡ dưới dải dưới, nếu bộ lọc ATR được bật, đường xu hướng được đặt ở mức giá cao nhất cộng với ATR. Nếu bộ lọc ATR bị vô hiệu hóa, đường xu hướng được đặt trực tiếp ở mức giá cao nhất.

Do đó, đường phán đoán xu hướng có thể được điều chỉnh năng động dựa trên sự đột phá giá của Bollinger Bands để theo dõi xu hướng.

Khi đường xu hướng hiện tại cao hơn đường xu hướng trước, nó cho thấy xu hướng tăng. Khi đường xu hướng hiện tại thấp hơn đường xu hướng trước, nó cho thấy xu hướng giảm.

Các tín hiệu giao dịch sau đó có thể được tạo ra dựa trên phán đoán xu hướng để đi dài hoặc ngắn.

Phân tích lợi thế

  • Đường xu hướng điều chỉnh năng động có thể nắm bắt xu hướng giá một cách linh hoạt
  • Kết hợp với Bollinger Bands có thể đánh giá kịp thời sự đảo ngược xu hướng trên các bước đột phá
  • Giới thiệu bộ lọc ATR có thể tránh một số tín hiệu đột phá sai

Phân tích rủi ro

  • Các thông số BB không chính xác có thể gây ra sự đột phá sai thường xuyên
  • Các thông số ATR quá mức có thể bỏ lỡ cơ hội đảo ngược xu hướng
  • Cần xem xét dừng lỗ để ngăn ngừa tổn thất từ các động thái cực đoan

Một số rủi ro có thể được giảm thiểu thông qua điều chỉnh tham số, giới thiệu stop loss. cũng có thể kết hợp với các chỉ số khác để lọc tín hiệu để cải thiện tính hợp lệ của đột phá.

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

  • Tối ưu hóa các tham số BB và ATR để tìm các cấu hình tốt nhất
  • Thêm các chỉ số khác để lọc các sự đột phá sai
  • Lựa chọn thời gian BB và ATR dựa trên các công cụ giao dịch cụ thể

Kết luận

Chiến lược Follow Line nhằm mục đích nắm bắt xu hướng giá trong các thị trường biến động. Đây là một chiến lược theo dõi xu hướng hiệu quả. Điều chỉnh tham số và tối ưu hóa thích hợp có thể dẫn đến lợi nhuận tốt. Tuy nhiên, rủi ro cần được quản lý thông qua dừng lỗ và ngăn chặn sự phá vỡ sai.


/*backtest
start: 2023-11-23 00:00:00
end: 2023-11-30 00:00:00
period: 10m
basePeriod: 1m
exchanges: [{"eid":"Futures_Binance","currency":"BTC_USDT"}]
*/

// © Dreadblitz
//@version=4
//
// ▒▒▒▒▒▒▒▒▒▒▒▒▒▒▒▒▒▒▒▒▒▒▒▒▒▒▒▒▒▒▒▒▒▒▒▒▒▒▒▒▒▒▒▒▒▒▒▒▒▒▒▒▒▒▒▒▒▒▒▒▒▒▒▒▒▒▒▒▒▒▒▒▒▒▒▒▒▒▒▒▒▒▒▒▒▒▒▒▒▒▒▒▒▒▒▒▒▒▒▒▒▒▒▒▒▒▒▒▒▒▒▒▒▒ //

strategy(title = " Strategy Follow Line Indicator ",
         shorttitle = "S-FLI",
         overlay = true,
         precision = 8,
         calc_on_order_fills = true,
         calc_on_every_tick = true,
         backtest_fill_limits_assumption = 0,
         default_qty_type = strategy.fixed,
         default_qty_value = 2,
         initial_capital = 10000,
         pyramiding=1,
         currency = currency.USD,
         linktoseries = true)

//
// ▒▒▒▒▒▒▒▒▒▒▒▒▒▒▒▒▒▒▒▒▒▒▒▒▒▒▒▒▒▒▒▒▒▒▒▒▒▒▒▒▒▒▒▒▒▒▒▒▒▒▒▒▒▒▒▒▒▒▒▒▒▒▒▒▒▒▒▒▒▒▒▒▒▒▒▒▒▒▒▒▒▒▒▒▒▒▒▒▒▒▒▒▒▒▒▒▒▒▒▒▒▒▒▒▒▒▒▒▒▒▒▒▒▒ //

backTestSectionFrom = input(title = "═══════════════ From ═══════════════", defval = true, type = input.bool)

FromMonth         = input(defval = 1, title = "Month", minval = 1)
FromDay           = input(defval = 1, title = "Day", minval = 1)
FromYear          = input(defval = 2014, title = "Year", minval = 2000)

backTestSectionTo = input(title = "════════════════ To ════════════════", defval = true, type = input.bool)
ToMonth           = input(defval = 31, title = "Month", minval = 1)
ToDay             = input(defval = 12, title = "Day", minval = 1)
ToYear            = input(defval = 9999, title = "Year", minval = 2000)

Config            = input(title = "══════════════ Config ══════════════", defval = true, type = input.bool)
BBperiod          = input(defval = 21,     title = "BB Period",    type = input.integer, minval = 1)
BBdeviations      = input(defval = 1.00,     title = "BB Deviations",    type = input.float, minval = 0.1, step=0.05)
UseATRfilter      = input(defval = true, title = "ATR Filter",  type = input.bool)
ATRperiod         = input(defval = 5,     title = "ATR Period",    type = input.integer, minval = 1)
hl                = input(defval = false, title = "Hide Labels",  type = input.bool)


backTestPeriod() => true

//
//
// ▒▒▒▒▒▒▒▒▒▒▒▒▒▒▒▒▒▒▒▒▒▒▒▒▒▒▒▒▒▒▒▒▒▒▒▒▒▒▒▒▒▒▒▒▒▒▒▒▒▒▒▒▒▒▒▒▒▒▒▒▒▒▒▒▒▒▒▒▒▒▒▒▒▒▒▒▒▒▒▒▒▒▒▒▒▒▒▒▒▒▒▒▒▒▒▒▒▒▒▒▒▒▒▒▒▒▒▒▒▒▒▒▒▒ //

BBUpper=sma (close,BBperiod)+stdev(close, BBperiod)*BBdeviations
BBLower=sma (close,BBperiod)-stdev(close, BBperiod)*BBdeviations
//
TrendLine = 0.0
iTrend = 0.0
buy = 0.0
sell = 0.0
//
BBSignal = close>BBUpper? 1 : close<BBLower? -1 : 0
// 
if BBSignal == 1 and UseATRfilter == 1
    TrendLine:=low-atr(ATRperiod)
    if TrendLine<TrendLine[1] 
        TrendLine:=TrendLine[1]
if BBSignal == -1 and UseATRfilter == 1
    TrendLine:=high+atr(ATRperiod)
    if TrendLine>TrendLine[1]
        TrendLine:=TrendLine[1]
if BBSignal == 0 and UseATRfilter == 1
    TrendLine:=TrendLine[1]
//
if BBSignal == 1 and UseATRfilter == 0
    TrendLine:=low
    if TrendLine<TrendLine[1] 
        TrendLine:=TrendLine[1]
if BBSignal == -1 and UseATRfilter == 0
    TrendLine:=high
    if TrendLine>TrendLine[1]
        TrendLine:=TrendLine[1]
if BBSignal == 0 and UseATRfilter == 0
    TrendLine:=TrendLine[1]
//
iTrend:=iTrend[1]
if TrendLine>TrendLine[1] 
    iTrend:=1
if TrendLine<TrendLine[1] 
    iTrend:=-1
//
buy:=iTrend[1]==-1 and iTrend==1 ? 1 : na
sell:=iTrend[1]==1 and iTrend==-1? 1 : na
//
plot(TrendLine, color=iTrend > 0?color.blue:color.red ,style=plot.style_line,linewidth=2,transp=0,title="Trend Line") 
plotshape(buy == 1 and hl == false? TrendLine-atr(8) :na, text='💣', style= shape.labelup, location=location.absolute, color=color.blue, textcolor=color.white, offset=0, transp=0,size=size.auto)
plotshape(sell == 1 and hl == false ?TrendLine+atr(8):na, text='🔨', style=shape.labeldown, location=location.absolute, color=color.red, textcolor=color.white, offset=0, transp=0,size=size.auto)

// Strategy Entry
if (backTestPeriod())
    strategy.entry("long", true, 1, when = buy == 1)
    strategy.entry("short", false, 1, when = sell == 1) 

Thêm nữa