Chiến lược theo dõi xu hướng Stop Loss Take Profit

Tác giả:ChaoZhang, Ngày: 2024-01-24 14:17:28
Tags:

img

Tổng quan

Đây là một chiến lược theo dõi xu hướng sử dụng Bollinger Bands để xác định xu hướng và ATR để thiết lập dừng lỗ và lấy lợi nhuận.

Chiến lược logic

  1. Tính toán các đường ray trên và dưới của Bollinger Bands.
  2. Đánh giá xem giá đóng cửa có ở trên đường ray trên hoặc dưới đường ray dưới không. Nếu có, đánh giá nó là thị trường xu hướng, tăng hoặc giảm tương ứng.
  3. Nếu đó là một thị trường xu hướng, tính toán đường xu hướng. đường xu hướng dựa trên giá thấp nhất trừ giá ATR (thị trường bò) hoặc giá cao nhất cộng với giá ATR (thị trường gấu).
  4. Nếu nó không phải là một thị trường xu hướng, giữ đường xu hướng giống như thanh trước.
  5. So sánh đường xu hướng để xác định hướng xu hướng. xu hướng tăng cho tăng, xu hướng giảm cho giảm.
  6. Tạo tín hiệu mua / bán khi hướng đường xu hướng thay đổi.
  7. Đặt dừng lỗ và lấy lợi nhuận: khoảng cách dừng lỗ cố định là 100 lần giá nhập cảnh; chuyển đổi lấy lợi nhuận là 1,1 lần (bull) hoặc 0,9 lần (bear) giá nhập cảnh.

Phân tích lợi thế

  1. Có thể xác định xu hướng thị trường, tránh các giao dịch sai.
  2. Đặt đường xu hướng để tránh bị mắc kẹt.
  3. Các thiết lập dừng lỗ và lợi nhuận hợp lý để kiểm soát rủi ro trong khi đảm bảo lợi nhuận.

Phân tích rủi ro

  1. Cài đặt tham số không đúng có thể bỏ lỡ cơ hội giao dịch.
  2. Bollinger Bands có khả năng đánh giá sai ở các thị trường giới hạn phạm vi.
  3. Dừng mất quá gần có thể bị dừng ra dễ dàng.

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

  1. Tối ưu hóa các thông số Bollinger Bands cho các sản phẩm khác nhau.
  2. Tối ưu hóa các phương pháp tính toán đường xu hướng, ví dụ như giới thiệu các chỉ số khác.
  3. Kiểm tra và tối ưu hóa các thiết lập stop loss và take profit.

Kết luận

Đây là một chiến lược sử dụng Bollinger Bands để xác định xu hướng và thiết lập stop loss và take profit dựa trên đường xu hướng. Những lợi thế cốt lõi là đánh giá xu hướng rõ ràng, dừng lỗ hợp lý và lấy lợi nhuận để kiểm soát rủi ro một cách hiệu quả. Những rủi ro chính đến từ Bollinger Bands đánh giá xu hướng sai và dừng lỗ quá gần.


/*backtest
start: 2023-12-01 00:00:00
end: 2023-12-31 23:59:59
period: 1h
basePeriod: 15m
exchanges: [{"eid":"Futures_Binance","currency":"BTC_USDT"}]
*/

// This Pine Script™ code is subject to the terms of the Mozilla Public License 2.0 at https://mozilla.org/MPL/2.0/
// © zhuenrong

// © Dreadblitz
//@version=4
strategy(shorttitle="FLI", title="Follow Line Indicator", overlay=true)
// 
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)
//
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)
//
alertcondition(sell == 1 ,title="Sell",message="Sell")
alertcondition(buy == 1 ,title="Buy",message="Buy")
alertcondition(buy == 1 or sell == 1 ,title="Buy/Sell",message="Buy/Sell")
if (buy==1)
    strategy.entry("Buy", strategy.long)
if (sell==1)
    strategy.entry("Sell", strategy.short)
// === Stop LOSS ===

if strategy.position_size>0
    strategy.exit("Stop Loss/Profit Long","Buy", stop=strategy.position_avg_price*100, limit=strategy.position_avg_price*1.1)
if strategy.position_size<0
    strategy.exit("Stop Loss/Profit Short","Sell", stop=strategy.position_avg_price*100, limit=strategy.position_avg_price*0.9)

Thêm nữa