Xu hướng theo chiến lược với Stop Loss và Take Profit

Tác giả:ChaoZhang, Ngày: 2024-02-21 14:55:41
Tags:

img

Tổng quan

Ý tưởng chính của chiến lược này là xác định hướng dài và ngắn dựa trên xu hướng giá hàng tuần. Trong xu hướng tăng, nó đi dài khi có một mô hình nến tăng. Nó kiếm lợi nhuận khi giá tăng lên mức lợi nhuận được đặt trước và dừng lỗ khi giảm xuống mức dừng lỗ được đặt trước.

Chiến lược logic

Chiến lược đầu tiên xác định các điều kiện để đánh giá xu hướng hàng tuần:

isUptrend = close > close[1]
isDowntrend = close < close[1] 

Nếu kết thúc hiện tại cao hơn kết thúc trước đó, nó được đánh giá là xu hướng tăng.

Sau đó, tín hiệu giao dịch trong ngày được xác định:

buyCondition = getPrevDayClose() > getPrevDayOpen() and getPrevDayOpen() > getPrevDayClose()[1] and isUptrend

Đó là, mức đóng trước đó cao hơn mức mở trước đó (cây nến tăng), và mức mở trước đó cao hơn mức đóng trước ngày trước (khoảng cách lên), và nó đang trong xu hướng tăng.

Sau khi nhập vào vị trí, lệnh dừng lỗ được thiết lập với mức đóng cửa trước trừ đi 1,382 lần cơ thể thực tế của ngày trước:

stopLoss = getPrevDayClose() - 1.382 * (getPrevDayClose() - getPrevDayOpen())

Lợi nhuận lấy được đặt theo mức đóng trước cộng với 2 lần sự khác biệt giữa đóng trước và dừng lỗ trước:

takeProfit = getPrevDayClose() + 2 * (getPrevDayClose() - stopLoss)

Điều này thực hiện chiến lược dừng lỗ và lợi nhuận.

Phân tích lợi thế

Những lợi thế của chiến lược này bao gồm:

  1. Giao dịch theo xu hướng tránh rủi ro giảm giá ngược xu hướng
  2. Tín hiệu nhập cảnh kết hợp nến tăng và khoảng cách để tránh nhập cảnh dài sớm
  3. Định vị dừng lỗ là hợp lý để kiểm soát lỗ đơn
  4. Lượng lợi nhuận là lớn với tiềm năng lợi nhuận cao

Phân tích rủi ro

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

  1. Không thể xác định các điểm đảo ngược xu hướng, có thể bỏ lỡ cơ hội đảo ngược
  2. Stop loss quá gần với khả năng bị mắc kẹt cao hơn
  3. Không xem xét kiểm soát chi phí, lợi nhuận có thể giảm ở tần suất giao dịch cao

Để kiểm soát những rủi ro này, một số tối ưu hóa có thể được xem xét:

  1. Thiết lập trailer gần stop loss để theo dõi stop loss
  2. Thêm mô-đun kiểm soát chi phí để giới hạn tần suất đặt hàng
  3. Thêm phán quyết hỗ trợ/kháng cự

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

Chiến lược cũng có thể được tối ưu hóa theo những cách sau:

  1. Xác định xu hướng dựa trên nhiều yếu tố như hướng MA, thay đổi khối lượng v.v.
  2. Tối ưu hóa tín hiệu nhập cảnh với nhiều mẫu nến hơn
  3. Động lực theo dõi dừng lỗ và lấy lợi nhuận theo biến động giá
  4. Thêm mô-đun định lượng để điều khiển kích thước vị trí
  5. Sự kết hợp của nhiều khung thời gian để lọc dựa trên xu hướng cấp cao hơn

Tóm lại

Nói chung, đây là một chiến lược khá thực tế, làm nổi bật giao dịch theo xu hướng trong khi kiểm soát rủi ro. Nó có thể phục vụ như một chiến lược giao dịch trong ngày cơ bản và có thể được tối ưu hóa theo mô-đun cho các thị trường và sản phẩm khác nhau để tạo ra danh mục đầu tư giao dịch đa dạng.


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

//@version=5
strategy("Trend Following Strategy with Stop Loss and Take Profit", overlay=true)

// Function to get previous day's close and open
getPrevDayClose() =>
    request.security(syminfo.tickerid, "D", close[1])

getPrevDayOpen() =>
    request.security(syminfo.tickerid, "D", open[1])

// Determine weekly trend
isUptrend = close > close[1]
isDowntrend = close < close[1]

// Determine daily conditions for buy
buyCondition = getPrevDayClose() > getPrevDayOpen() and getPrevDayOpen() > getPrevDayClose()[1] and isUptrend

// Calculate stop loss and take profit
stopLoss = getPrevDayClose() - 1.382 * (getPrevDayClose() - getPrevDayOpen())
takeProfit = getPrevDayClose() + 2 * (getPrevDayClose() - stopLoss)

// Strategy logic
if (isUptrend)
    strategy.entry("Buy", strategy.long, when = buyCondition)
    strategy.exit("Take Profit/Stop Loss", from_entry="Buy", loss=stopLoss, profit=takeProfit)
    
if (isDowntrend)
    strategy.entry("Sell", strategy.short)

// Plotting the trend on the chart
plotshape(series=isUptrend, title="Uptrend", color=color.green, style=shape.triangleup, location=location.abovebar)
plotshape(series=isDowntrend, title="Downtrend", color=color.red, style=shape.triangledown, location=location.belowbar)

// Plotting stop loss and take profit levels on the chart
plot(stopLoss, color=color.red, title="Stop Loss", linewidth=2, style=plot.style_cross)
plot(takeProfit, color=color.green, title="Take Profit", linewidth=2, style=plot.style_cross)


Thêm nữa