Chiến lược giao dịch định lượng dựa trên so sánh giá đóng cửa hàng ngày


Ngày tạo: 2023-11-21 14:34:11 sửa đổi lần cuối: 2023-11-21 14:34:11
sao chép: 0 Số nhấp chuột: 782
1
tập trung vào
1617
Người theo dõi

Chiến lược giao dịch định lượng dựa trên so sánh giá đóng cửa hàng ngày

Tổng quan

Chiến lược này được gọi là chiến lược so sánh giá đóng cửa đường tròn, là chiến lược định lượng để đưa ra quyết định giao dịch dựa trên giá đóng cửa đường tròn. Chiến lược này tạo ra tín hiệu giao dịch bằng cách tính toán chênh lệch giữa giá đóng cửa đường tròn hiện tại và giá đóng cửa ngày hôm trước.

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

Lý luận cốt lõi của chiến lược này là 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 đó.

  1. Tính toán chênh lệch giữa giá đóng cửa ngày hôm nay và giá đóng cửa ngày hôm trước ((today - yesterday)
  2. Tỷ lệ chênh lệch với giá đóng cửa ngày hôm trước.
  3. Nếu tỷ lệ lớn hơn ngưỡng tích cực được thiết lập, sẽ tạo ra tín hiệu mua; nếu tỷ lệ nhỏ hơn ngưỡng tiêu cực được thiết lập, sẽ tạo ra tín hiệu bán
  4. Theo tín hiệu vào làm nhiều hoặc trống kho chỗ

Chiến lược này không đặt các điều kiện dừng lỗ và dừng lại, dựa vào tín hiệu giao dịch được hình thành từ các điều kiện giảm giá để vào và giữ vị trí bình yên.

Phân tích lợi thế

  • Khá đơn giản và dễ hiểu, phù hợp với việc học hỏi giao dịch định lượng
  • Chỉ giao dịch dựa trên giá đóng cửa, tránh giao dịch quá thường xuyên
  • Có thể điều chỉnh tần số giao dịch bằng cách điều chỉnh giá trị thả

Phân tích rủi ro

  • Không có thiết lập dừng lỗ, không thể kiểm soát tổn thất đơn lẻ
  • Có thể tạo ra các tín hiệu giao dịch liên tục dẫn đến giao dịch quá mức
  • Có thể thu hồi lớn và không kiểm soát được tổng tổn thất

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

  • Tăng logic dừng lỗ, kiểm soát tổn thất đơn
  • Tăng giới hạn mở kho để tránh giao dịch quá mức
  • Tối ưu hóa các tham số, tìm kiếm tần suất giao dịch tốt nhất

Tóm tắt

Chiến lược này tạo ra tín hiệu giao dịch bằng cách so sánh giá đóng cửa hàng ngày, ý tưởng đơn giản, phù hợp để học hỏi. Tuy nhiên, chiến lược này có một số rủi ro và cần được tối ưu hóa hơn nữa để sử dụng cho giao dịch thực.

Mã nguồn chiến lược
/*backtest
start: 2022-11-14 00:00:00
end: 2023-11-20 00:00:00
period: 1d
basePeriod: 1h
exchanges: [{"eid":"Futures_Binance","currency":"BTC_USDT"}]
*/

//@version=2
strategy("Daily Close Comparison Strategy (by ChartArt) correct results", 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 correct results", type=float, defval=0, step=0.004)

getDiff() =>
    yesterday=request.security(syminfo.tickerid, 'D', close[1])
    today=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)