Chiến lược mua/bán trên Candle Close

Tác giả:ChaoZhang, Ngày: 2024-01-08 11:11:18
Tags:

img

Tổng quan

Chiến lược này kích hoạt tín hiệu mua / bán bằng cách so sánh giá đóng của nến hiện tại và nến trước đó.

Cụ thể, nếu nến hiện tại đóng cửa trên mức giá cao nhất của nến trước, một tín hiệu mua được kích hoạt. Nếu nến hiện tại đóng cửa dưới mức giá thấp nhất của nến trước, một tín hiệu bán được kích hoạt.

Chiến lược logic

  1. Nhận giá cao nhất và thấp nhất trong lịch sử của khung thời gian được chỉ định (ví dụ: hàng ngày, hàng giờ)
  2. Tính toán stop loss và take profit distance
    • Khoảng cách dừng lỗ = Khoảng cách cao nhất của nến trước - Khoảng cách thấp nhất của nến trước
    • Khoảng cách lấy lợi nhuận = Khoảng cách dừng lỗ * 3 (1:3 tỷ lệ rủi ro-lợi nhuận)
  3. Xác định mối quan hệ giữa kết thúc hiện tại và mức cao/mức thấp trước đó
    • Nếu hiện tại đóng > nến trước cao nhất, kích hoạt tín hiệu mua
    • Nếu hiện tại đóng < nến trước thấp nhất, kích hoạt bán tín hiệu
  4. Thiết lập dừng lỗ và lấy lợi nhuận sau khi nhập
    • Sau khi mua, thiết lập dừng lỗ tại nến trước thấp nhất - khoảng cách dừng lỗ, lấy lợi nhuận tại nến trước cao nhất + lấy lợi nhuận khoảng cách
    • Sau khi bán, thiết lập dừng lỗ tại nến trước cao nhất + khoảng cách dừng lỗ, lấy lợi nhuận tại nến trước thấp nhất - lấy lợi nhuận khoảng cách

Điều trên là logic giao dịch cơ bản của chiến lược này.

Phân tích lợi thế

  • Ý tưởng chiến lược đơn giản và rõ ràng, dễ hiểu và thực hiện
  • Sử dụng thông tin nến để xác định hướng xu hướng
  • Có cơ chế dừng lỗ và lấy lợi nhuận để kiểm soát rủi ro

Phân tích rủi ro

  • Phán quyết chỉ dựa trên một khung thời gian có thể tạo ra nhiều tín hiệu sai
  • Không xem xét nhiều yếu tố như thay đổi khối lượng, biến động v.v.
  • Các thiết lập dừng lỗ và lấy lợi nhuận có thể không phù hợp, quá rộng hoặc quá chật đều có rủi ro

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

  • Kết hợp nhiều yếu tố để xác nhận tín hiệu đầu vào, như khối lượng, trung bình động vv
  • Tối ưu hóa các thuật toán dừng lỗ và lấy lợi nhuận để có mức dừng lỗ hợp lý hơn và đủ lợi nhuận
  • Điều chỉnh tham số có thể cần thiết cho các sản phẩm khác nhau
  • Khung thời gian dài hơn có thể được thử nghiệm

Tóm lại

Ý tưởng chiến lược đơn giản và rõ ràng nói chung, sử dụng giá đóng nến để xác định hướng xu hướng và cũng có lệnh dừng lỗ / lấy lợi nhuận để kiểm soát rủi ro, nó có thể phục vụ như một chiến lược cơ bản cho cổ phiếu và giao dịch tiền điện tử. Nhưng với phán đoán chỉ dựa trên một khung thời gian, nó có xu hướng tạo ra tín hiệu sai dễ dàng hơn.


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

//@version=5
strategy("Buy/Sell on Candle Close", overlay=true)

var float prevLowest = na
var float prevHighest = na
var float slDistance = na
var float tpDistance = na

// Specify the desired timeframe here (e.g., "D" for daily, "H" for hourly, etc.)
timeframe = "D"

// Fetching historical data for the specified timeframe
pastLow = request.security(syminfo.tickerid, timeframe, low, lookahead=barmerge.lookahead_on)
pastHigh = request.security(syminfo.tickerid, timeframe, high, lookahead=barmerge.lookahead_on)

if bar_index > 0
    prevLowest := pastLow[1]
    prevHighest := pastHigh[1]

currentClose = close

if not na(prevLowest) and not na(prevHighest)
    slDistance := prevHighest - prevLowest
    tpDistance := 3 * slDistance // Adjusted for 1:3 risk-reward ratio

// Buy trigger when current close is higher than previous highest
if not na(prevLowest) and not na(prevHighest) and currentClose > prevHighest
    strategy.entry("Buy", strategy.long)
    strategy.exit("Buy TP/SL", "Buy", stop=prevLowest - slDistance, limit=prevHighest + tpDistance)

// Sell trigger when current close is lower than previous lowest
if not na(prevLowest) and not na(prevHighest) and currentClose < prevLowest
    strategy.entry("Sell", strategy.short)
    strategy.exit("Sell TP/SL", "Sell", stop=prevHighest + slDistance, limit=prevLowest - tpDistance)

plot(prevLowest, color=color.blue, title="Previous Lowest")
plot(prevHighest, color=color.red, title="Previous Highest")







Thêm nữa