Chiến lược thời gian bắt đầu thử nghiệm ngược có thể tùy chỉnh

Tác giả:ChaoZhang, Ngày: 2023-09-26 20:53:15
Tags:

Tổng quan

Mục đích của chiến lược này là cho phép người dùng tùy chỉnh thời gian bắt đầu backtesting để có backtesting linh hoạt và tùy chỉnh hơn.

Chiến lược logic

Chiến lược này sử dụng các chức năng thời gian và dấu thời gian của Pine Script để thực hiện thời gian bắt đầu backtest có thể tùy chỉnh.

Đầu tiên nó cho phép người dùng nhập năm, tháng, ngày, giờ và phút bắt đầu backtest tùy chỉnh trong cài đặt. Sau đó nó sử dụng các đầu vào này để tạo dấu thời gian và lưu trữ nó trong biến startTime.

Trong kiểm tra điều kiện của chiến lược, nó thêm một điều kiện startTime mới. Chiến lược sẽ chỉ bắt đầu khi thời gian hiện tại lớn hơn hoặc bằng startTime.

Ví dụ:

longCondition = crossover(sma(close, 14), sma(close, 28))

if (longCondition and startTime)

  strategy.entry("My Long Entry Id", strategy.long) 

Điều này cho phép thực hiện thời gian bắt đầu backtest tùy chỉnh. Người dùng có thể cấu hình linh hoạt thời gian bắt đầu backtest thay vì bị giới hạn trong thời gian mã hóa cứng.

Phân tích lợi thế

Chiến lược thời gian bắt đầu backtest có thể tùy chỉnh này có những lợi thế sau:

  1. linh hoạt hơn: Người dùng có thể tùy chỉnh hoàn toàn thời gian bắt đầu backtest thay vì bị giới hạn ở một thời điểm cố định.

  2. Thực tế hơn: Thời gian bắt đầu có thể được đặt theo thời gian thực tế của chiến lược, làm cho backtest thực tế hơn.

  3. thuận tiện cho Backtesting dựa trên sự kiện: Thời gian bắt đầu có thể được đặt dựa trên thời gian xảy ra của một sự kiện để backtesting các sự kiện cụ thể.

  4. Điều chỉnh điều kiện dễ dàng: Các điều kiện khởi động backtest có thể dễ dàng được điều chỉnh cho các thử nghiệm backtest được nhắm mục tiêu của các giai đoạn khác nhau.

  5. Lặp lại và đáng tin cậy: Lập tham số thời gian bắt đầu backtest cho phép kết quả backtest lặp lại và đáng tin cậy.

Phân tích rủi ro

Sử dụng thời gian bắt đầu backtest có thể tùy chỉnh cũng có một số rủi ro:

  1. Kết quả phụ thuộc vào thời gian bắt đầu: Thời gian bắt đầu khác nhau có thể dẫn đến kết quả backtest rất khác nhau.

  2. Thời gian bắt đầu cần lựa chọn cẩn thận: Thời gian bắt đầu không hợp lý có thể gây ra sự biến dạng trong kết quả backtest.

  3. Tăng nguy cơ phù hợp đường cong: Dễ dàng quá phù hợp bằng cách điều chỉnh thời gian bắt đầu theo dữ liệu lịch sử.

  4. Giảm khả năng so sánh: Kết quả của chiến lược này ít so sánh với các thử nghiệm ngược thời gian bắt đầu cố định.

Giải pháp:

  1. Kiểm tra lại nhiều lần để đánh giá tác động của thay đổi thời gian bắt đầu đối với kết quả.

  2. Chọn thời gian sự kiện quan trọng như thời gian bắt đầu để giảm thiểu sự biến dạng.

  3. Chú ý điều chỉnh thời gian bắt đầu để tránh quá phù hợp dữ liệu lịch sử.

  4. Giữ các thử nghiệm ngược thời gian bắt đầu cố định làm điểm chuẩn để so sánh với các thử nghiệm ngược tùy chỉnh.

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

Chiến lược thời gian bắt đầu backtest có thể tùy chỉnh này cũng có thể được cải thiện trong các khía cạnh sau:

  1. Hỗ trợ tùy chỉnh thời gian bắt đầu và kết thúc để cấu hình đầy đủ linh hoạt của cửa sổ thời gian backtest.

  2. Hỗ trợ nhiều chế độ thời gian: ngày cụ thể, ngày tương đối, dựa trên sự kiện, vv để cấu hình thời gian thông minh và thuận tiện hơn.

  3. Hỗ trợ giao diện cấu hình đồ họa để thiết lập tham số thời gian trực quan hơn.

  4. Hỗ trợ cấu hình các chi tiết thời gian khác nhau: năm, tháng, ngày, giờ, phút, giây, vv.

  5. Ghi lại cấu hình thời gian backtest cho kết quả có thể tái tạo, có thể truy xuất và so sánh.

  6. Thêm xác nhận các cấu hình thời gian không phù hợp để tránh các thử nghiệm ngược chất lượng thấp do cài đặt thời gian không hợp lý.

  7. Cung cấp thời gian bắt đầu ràng buộc để dễ dàng đồng bộ hóa thời gian bắt đầu trên nhiều chiến lược.

Tóm lại

Chiến lược này cho phép cấu hình thời gian bắt đầu backtest tùy chỉnh và linh hoạt để giảm giới hạn và làm cho backtest thực tế hơn. Nhưng sự phụ thuộc của kết quả vào thời gian bắt đầu cần phải được xem xét để sử dụng nhiều backtest, mô hình dựa trên sự kiện, vv để giảm biến dạng. Chiến lược này cũng có nhiều hướng để cải thiện để đạt được cấu hình thời gian backtest thông minh và thuận tiện hơn trong tương lai.


/*backtest
start: 2022-09-19 00:00:00
end: 2023-09-25 00:00:00
period: 2d
basePeriod: 1d
exchanges: [{"eid":"Futures_Binance","currency":"BTC_USDT"}]
*/

//@version=3
strategy("C320up Strategy Tester Start Time", overlay = true)
// Copy and paste below into your strategy
// Strategy Tester Start Time
xYear = input(2018, title = "Start Year")
xMonth = input(01, title = "Start Month", minval = 01, maxval = 12)
xDay = input(01, title = "Start Day", minval = 01, maxval = 31)
xHour = input(00, title = "Start Hour", minval = 00, maxval = 23)
xMinute = input(00, title = "Start Minute", minval = 00, maxval = 59)
startTime = time >= timestamp(xYear, xMonth, xDay, xHour, xMinute)
// End copy and paste
// Add (and startTime) at the end of your condition/s to activate

// The strategy below is just an example
longCondition = crossover(sma(close, 14), sma(close, 28))
if (longCondition and startTime)
    strategy.entry("My Long Entry Id", strategy.long)
shortCondition = crossunder(sma(close, 14), sma(close, 28))
if (shortCondition and startTime)
    strategy.entry("My Short Entry Id", strategy.short)
// Happy trading!


Thêm nữa