Chiến lược chốt lời dừng lỗ theo xu hướng


Ngày tạo: 2024-02-21 14:55:41 sửa đổi lần cuối: 2024-02-21 14:55:41
sao chép: 0 Số nhấp chuột: 632
1
tập trung vào
1621
Người theo dõi

Chiến lược chốt lời dừng lỗ theo xu hướng

Tổng quan

Ý tưởng chính của chiến lược này là dựa trên xu hướng giá hàng tuần để xác định hướng hoành tráng, trong trường hợp hoành tráng, nhập nhiều lệnh sau khi hình dạng mặt trời xuất hiện; dừng khi giá tăng lên điểm dừng dự kiến và dừng nếu giảm xuống điểm dừng dự kiến.

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

Chiến lược này bắt đầu bằng việc 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 giá đóng cửa hiện tại lớn hơn giá đóng cửa ngày trước, nó được coi là xu hướng giảm giá, ngược lại là giảm giá.

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

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

Đó là giá đóng cửa ngày trước lớn hơn giá mở cửa ngày trước (đường dương), và giá mở cửa ngày trước lớn hơn giá đóng cửa ngày trước (đường hở), và đang trong xu hướng lạc quan, đáp ứng điều kiện nhập cảnh đa đầu.

Sau khi vào thị trường, điểm dừng lỗ được thiết lập là giá đóng cửa ngày hôm trước, trừ 1,382 lần chiều dài đường thực tế ngày trước:

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

Điểm dừng được thiết lập với giá đóng cửa ngày hôm trước cộng với chênh lệch giữa điểm dừng lỗ và giá đóng cửa gấp đôi:

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

Để thực hiện điều này, các nhà đầu tư sẽ phải thu hồi các khoản lỗ.

Phân tích lợi thế

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

  1. Giao dịch dựa trên xu hướng, tránh rủi ro giảm giá
  2. Sử dụng tín hiệu kết hợp của ánh nắng mặt trời và lỗ hổng để tránh nhiều người vào sớm
  3. Định vị dừng lỗ hợp lý, kiểm soát tổn thất đơn lẻ
  4. Không gian dừng lớn hơn, tiềm năng lợi nhuận cao

Phân tích rủi ro

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

  1. Không thể đánh giá được điểm đảo chiều và có thể bỏ lỡ cơ hội 100000000000000000000
  2. Hạn chế quá gần, có khả năng bị lật
  3. Không kiểm soát chi phí, lợi nhuận có thể giảm khi giao dịch quá thường xuyên

Để kiểm soát những rủi ro này, bạn có thể xem xét thêm các tối ưu hóa sau:

  1. Đặt trailer gần điểm dừng để theo dõi điểm dừng
  2. Thêm mô-đun kiểm soát chi phí, hạn chế tần suất mở kho
  3. Tăng sự phán đoán về SUPPORT/RESISTANCE

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

Chiến lược này cũng có thể được tối ưu hóa theo các hướng sau:

  1. Xác định xu hướng dựa trên nhiều yếu tố khác, chẳng hạn như hướng của đường trung bình di chuyển, thay đổi khối lượng giao dịch.
  2. Tối ưu hóa tín hiệu vào cửa, kết hợp nhiều hình dạng đường K
  3. Động thái theo dõi dừng lỗ, tự động điều chỉnh theo biến động giá
  4. Thêm mô-đun định lượng để kiểm soát quy mô vị trí
  5. Gói thời gian đa chu kỳ, lọc xu hướng ở cấp độ cao hơn

Tóm tắt

Chiến lược này khá thực tế, ý tưởng cốt lõi là giao dịch xu hướng nổi bật, đồng thời kiểm soát rủi ro. Nó có thể được sử dụng như là chiến lược cơ bản cho giao dịch ngắn trong ngày, hoặc có thể được tối ưu hóa theo mô đun cho các thị trường và giống khác nhau, để đạt được danh mục giao dịch đa dạng. Trong ứng dụng thực tế, vẫn cần chú ý đến việc kiểm soát chi phí và phòng ngừa rủi ro, giữ tâm lý thích hợp là rất quan trọng.

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