Chiến lược so sánh giá đóng cửa hàng ngày

Tác giả:ChaoZhang, Ngày: 2023-09-17 18:28:31
Tags:

Tổng quan

Chiến lược này xác định hướng bằng cách so sánh giá đóng cửa của thanh hiện tại với giá đóng cửa của thanh trước đó. Đây là một chiến lược theo xu hướng đơn giản, đi dài khi giá tăng và ngắn khi giá giảm. Không cần các chỉ số phức tạp, chỉ thông tin giá cơ bản nhất được sử dụng để xác định hướng xu hướng.

Chiến lược logic

  1. Tính toán sự khác biệt tỷ lệ phần trăm giữa giá đóng cửa của thanh hiện tại và giá đóng cửa của thanh trước.

  2. Nếu tỷ lệ phần trăm lớn hơn ngưỡng, nó chỉ ra giá tăng, đi dài.

  3. Nếu tỷ lệ phần trăm thấp hơn ngưỡng âm, nó chỉ ra giá giảm, đi ngắn.

  4. Mức giới hạn được thiết lập là 0, có nghĩa là đi dài trên bất kỳ tăng và ngắn trên bất kỳ giảm.

  5. Không có logic dừng lỗ hoặc lấy lợi nhuận, chỉ dựa vào sự bền vững của xu hướng cho lợi nhuận.

Phân tích lợi thế

  1. Phương pháp xác định xu hướng rất đơn giản và trực quan, dễ hiểu và thực hiện.

  2. Không cần phải tính toán bất kỳ chỉ số kỹ thuật nào, giảm tiêu thụ tài nguyên.

  3. Chỉ tập trung vào thông tin giá cơ bản, tránh tiếng ồn chỉ số không cần thiết.

  4. Kết quả backtest tuyệt vời nhưng màn trình diễn trực tiếp là đáng nghi ngờ.

Phân tích rủi ro

  1. Không có lệnh dừng lỗ sẽ khiến rủi ro mất mát không giới hạn.

  2. Không hiệu quả trong các thị trường hỗn loạn, dễ bị mắc kẹt.

  3. Có nguy cơ quá mức, hiệu suất trực tiếp vẫn chưa được xác nhận.

  4. Theo xu hướng thuần túy không thể giữ được lợi nhuận, lợi nhuận thực hiện được giới hạn.

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

  1. Thêm stop loss để kiểm soát rủi ro.

  2. Tích hợp các biện pháp biến động để giảm các whipsaws trong thị trường hỗn loạn.

  3. Kiểm tra các thông số thời gian khác nhau để tăng độ bền.

  4. Thêm các chỉ số xác định xu hướng để tránh chuyển động giá không hợp lý.

  5. Tối ưu hóa lợi nhuận như nhìn lại giá cao nhất để mở rộng tiềm năng lợi nhuận.

Tóm lại

Ý tưởng cốt lõi của chiến lược đơn giản nhưng hiệu suất thực tế của nó là đáng nghi ngờ. Các cơ chế kiểm soát rủi ro mạnh mẽ hơn và kiểm tra tối ưu hóa tham số là cần thiết trước khi áp dụng thực tế. Nhưng khái niệm cơ bản đáng để học hỏi.


/*backtest
start: 2023-08-17 00:00:00
end: 2023-09-16 00:00:00
period: 2h
basePeriod: 15m
exchanges: [{"eid":"Futures_Binance","currency":"BTC_USDT"}]
*/

//@version=2
strategy("Daily Close Comparison Strategy (by ChartArt)", shorttitle="CA_-_Daily_Close_Strat", overlay=false)

// ChartArt's Daily Close Comparison Strategy
//
// Version 1.0
// Idea by ChartArt on February 28, 2016.
//
// This strategy is equal to the very
// popular "ANN Strategy" coded by sirolf2009,
// but without the Artificial Neural Network (ANN).
//
// Main difference besides stripping out the ANN
// is that I use close prices instead of OHLC4 prices.
// And the default threshold is set to 0 instead of 0.0014
// with a step of 0.001 instead of 0.0001.
//
// This strategy goes long if the close of the current day
// is larger than the close price of the last day.
// If the inverse logic is true, the strategy
// goes short (last close larger current close).
//
// This simple strategy does not have any
// stop loss or take profit money management logic.
//
// List of my work: 
// https://www.tradingview.com/u/ChartArt/
// 
//  __             __  ___       __  ___ 
// /  ` |__|  /\  |__)  |   /\  |__)  |  
// \__, |  | /~~\ |  \  |  /~~\ |  \  |  
// 
// 

threshold = input(title="Price Difference Threshold", type=float, defval=0, step=0.001)

getDiff() =>
    yesterday=security(syminfo.tickerid, 'D', close[1])
    today=security(syminfo.tickerid, 'D', close)
    delta=today-yesterday
    percentage=delta/yesterday
    
closeDiff = getDiff()
 
buying = closeDiff > threshold ? true : closeDiff < -threshold ? false : buying[1]

hline(0, title="zero line")

bgcolor(buying ? green : red, transp=25)
plot(closeDiff, color=silver, style=area, transp=75)
plot(closeDiff, color=aqua, title="prediction")

longCondition = buying
if (longCondition)
    strategy.entry("Long", strategy.long)

shortCondition = buying != true
if (shortCondition)
    strategy.entry("Short", strategy.short)

Thêm nữa