
Ý 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.
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ỗ.
Chiến lược này có những ưu điểm sau:
Chiến lược này cũng có một số rủi ro:
Để 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:
Chiến lược này cũng có thể được tối ưu hóa theo các hướng sau:
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.
/*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)