Chiến lược mua và bán dựa trên giá đóng cửa của K-line


Ngày tạo: 2024-01-08 11:11:18 sửa đổi lần cuối: 2024-01-08 11:11:18
sao chép: 2 Số nhấp chuột: 1039
1
tập trung vào
1617
Người theo dõi

Chiến lược mua và bán dựa trên giá đóng cửa của K-line

Tổng quan

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

Cụ thể, một tín hiệu mua sẽ được kích hoạt nếu giá đóng cửa K hiện tại cao hơn giá cao nhất của K trước; và một tín hiệu bán sẽ được kích hoạt nếu giá đóng cửa K hiện tại thấp hơn giá thấp nhất của K trước.

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

  1. Lấy giá cao nhất và giá thấp nhất trong lịch sử cho một khoảng thời gian nhất định (ví dụ như đường ngày, đường giờ, v.v.)
  2. Tính toán khoảng cách dừng và khoảng cách dừng
    • Khoảng cách dừng lỗ = giá cao nhất trên đường K trên đường K thấp nhất
    • Khoảng cách dừng = Khoảng cách dừng * 3 ((đặt tỷ lệ dừng dừng là 1: 3)
  3. Xác định mối quan hệ giữa giá đóng cửa K hiện tại với giá cao nhất và thấp nhất của K trước đó
    • Nếu giá đóng cửa hiện tại > giá cao nhất trên đường K, sẽ kích hoạt tín hiệu mua
    • Nếu giá đóng cửa hiện tại < giá thấp nhất trên đường K, sẽ kích hoạt tín hiệu bán
  4. Thiết lập dừng và dừng sau khi nhập
    • Sau khi mua, thiết lập Stop Loss là giá thấp nhất trên K-line - Stop Loss Distance, Stop Stop là giá cao nhất trên K-line + Stop Stop Distance
    • Sau khi bán, thiết lập dừng là giá cao nhất của dòng K trước + khoảng cách dừng, dừng là giá thấp nhất của dòng K trước - khoảng cách dừng

Đây là logic giao dịch cơ bản của chiến lược này.

Phân tích lợi thế

  • Kế hoạch chiến lược rõ ràng, đơn giản, dễ hiểu và thực hiện
  • Sử dụng thông tin K-line để định hướng xu hướng
  • Rủi ro kiểm soát hệ thống ngăn chặn

Phân tích rủi ro

  • Xác định hình dạng đường K chỉ dựa trên một chu kỳ thời gian có thể tạo ra nhiều tín hiệu giả
  • Không tính đến các yếu tố khác như biến đổi khối lượng giao dịch, biến động, v.v.
  • Các thiết bị ngăn chặn có thể không được thiết lập đúng cách và có nguy cơ quá lớn hoặc quá nhỏ.

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

  • Kết hợp các yếu tố khác để xác nhận tín hiệu nhập cảnh như khối lượng giao dịch, đường trung bình, v.v.
  • Tối ưu hóa các thuật toán dừng lỗ để dừng lỗ hợp lý hơn và dừng lỗ đầy đủ hơn
  • Các thiết lập tham số khác nhau có thể cần điều chỉnh
  • Có thể kiểm tra hiệu quả của chu kỳ dài hơn

Tóm tắt

Chiến lược tổng thể của chiến lược này rất đơn giản và rõ ràng, sử dụng thông tin giá đóng cửa K để đánh giá xu hướng, đồng thời thiết lập rủi ro kiểm soát dừng lỗ, có thể là chiến lược cơ bản cho giao dịch cổ phiếu, tiền kỹ thuật số. Tuy nhiên, chỉ dựa trên hình dạng K-line của một chu kỳ thời gian duy nhất, dễ tạo ra tín hiệu giả, có rất nhiều không gian tối ưu hóa, cần xem xét thêm kết hợp nhiều yếu tố và điều chỉnh tham số để cải thiện hiệu quả của chiến lược.

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