Backtesting nguồn dữ liệu tùy chỉnh
API nguồn dữ liệu tùy chỉnh backtesting cung cấp các loại cho phép các nhà phát triển cung cấp dữ liệu giá tùy chỉnh vào các công cụ backtesting, tối ưu hóa và Market Replay trong cTrader. Các chức năng API này cho phép các quy trình làm việc mới và mạnh mẽ sử dụng các định dạng dữ liệu ngoại tuyến, của bên thứ ba, tổng hợp hoặc thử nghiệm.
Các giao diện và loại cốt lõi bao gồm:
BacktestingDataSources.Add(name, options)để đăng ký một nguồn tùy chỉnh mới.BacktestingDataSourceOptionsđể cấu hình loại dữ liệu được hỗ trợ, phạm vi thời gian dữ liệu và logic lấy dữ liệu.BacktestingDataRequestđược phát hành bởi công cụ khi cần dữ liệu trong quá trình kiểm tra.BacktestingTickDatavàBacktestingBarsDatađóng gói dữ liệu được trả về từ plugin.
Công cụ backtesting tương tác với dữ liệu được cung cấp thông qua các thành phần sau:
- Các loại dữ liệu – chọn giữa tick (bid/ask), giá mở m1, thanh OHLCV đầy đủ, v.v.
- Nhà cung cấp dữ liệu – triển khai các callback để cung cấp dữ liệu theo yêu cầu.
- Quản lý phạm vi thời gian – xác định các khoảng thời gian được hỗ trợ.
- Các khoảng thời gian tùy chỉnh – kết hợp với
TimeFrameManager.Customđể mô phỏng các loại thanh hoặc độ phân giải mới. - Các ký hiệu tùy chỉnh – chạy mô phỏng trên các công cụ tổng hợp.
Mẹo
Sử dụng API để backtest các chiến lược của bạn trên các nguồn cấp dữ liệu của bên thứ ba, chẳng hạn như dữ liệu tick của nhà môi giới, và áp dụng các bộ dữ liệu ngoại tuyến trong một môi trường có kiểm soát. Phát lại, tối ưu hóa và kiểm tra áp lực các chiến lược trên dữ liệu thực sự phản ánh điều kiện giao dịch trực tiếp, và thực hiện tất cả trong giao diện người dùng cTrader quen thuộc.
API nguồn dữ liệu tùy chỉnh backtesting cho phép những điều sau:
| Tính năng hoặc hoạt động | Ví dụ |
|---|---|
| Tích hợp dữ liệu thay thế | Backtest sử dụng nguồn cấp dữ liệu tick của tổ chức. Chạy Market Replay trên dữ liệu cụ thể của nhà môi giới. Nhập thanh AlphaVantage hoặc Nasdaq Data Link (Quandl). |
| Backtesting dựa trên sự kiện | Mô phỏng tác động của các báo cáo tin tức, chẳng hạn như CPI hoặc NFP. Đưa vào các đợt biến động trong các khoảng thời gian đã biết. |
| Kiểm tra thanh thay thế | Backtest trên Renko, Heikin Ashi hoặc logic thanh tùy chỉnh. |
| Thử nghiệm khung thời gian | Thử các chiến lược trên các khung thời gian không phổ biến, như m25, m40, h10, v.v. |
| Kiểm tra độ mạnh của chiến lược | Đưa nhiễu ngẫu nhiên vào giá. Chạy mô phỏng Monte Carlo. |
| Đường cong vốn tức thời hoặc lớp phủ rủi ro | Backtest bằng cách sử dụng đường cong số dư chiến lược lịch sử. |
Quy trình cơ bản
Ví dụ về plugin
Khi được kích hoạt, plugin này hiển thị một thành phần với các nút trong Bảng ký hiệu đang hoạt động cho phép bạn thêm và quản lý các nguồn dữ liệu tùy chỉnh, bao gồm cả những nguồn cho các giai đoạn tùy chỉnh.

Bất kỳ dữ liệu tùy chỉnh nào được thêm vào sẽ có sẵn như một tùy chọn dữ liệu trong cửa sổ Market Replay và Backtesting, trong khi bất kỳ giai đoạn tùy chỉnh nào được thêm vào sẽ xuất hiện trong giao diện người dùng Giai đoạn thông thường.
Mã plugin
1 2 3 4 5 6 7 8 9 10 11 12 13 14 15 16 17 18 19 20 21 22 23 24 25 26 27 28 29 30 31 32 33 34 35 36 37 38 39 40 41 42 43 44 45 46 47 48 49 50 51 52 53 54 55 56 57 58 59 60 61 62 63 64 65 66 67 68 69 70 71 72 73 74 75 76 77 78 79 80 81 82 83 84 85 86 87 88 89 90 91 92 93 94 95 96 97 98 99 100 101 102 103 104 105 106 107 108 109 110 111 112 113 114 115 116 117 118 119 120 121 122 123 124 125 126 127 128 129 130 131 132 133 134 135 136 137 138 139 140 141 142 143 144 145 146 147 148 149 150 151 152 153 154 155 156 157 158 159 160 161 162 163 164 165 166 167 168 169 170 171 172 173 174 175 176 177 178 179 180 181 182 183 184 185 186 187 188 189 190 191 192 193 194 195 196 197 198 199 200 201 202 203 204 205 206 207 208 209 210 211 212 213 214 215 216 217 218 219 220 221 222 223 224 225 226 227 228 229 230 231 232 233 234 235 236 237 238 239 240 241 242 243 244 245 246 247 248 249 250 251 252 253 254 255 256 257 258 259 260 261 262 263 264 265 266 267 268 269 270 271 272 273 274 275 276 277 278 279 280 281 282 283 284 285 286 287 288 289 290 291 292 293 294 295 296 297 298 299 300 301 302 303 304 305 306 307 308 309 310 311 312 313 314 315 316 317 318 319 320 321 322 323 324 325 326 327 328 329 330 331 332 333 334 335 336 337 338 339 340 341 342 343 344 345 346 347 348 349 350 351 352 353 354 355 356 357 358 359 360 361 362 363 364 365 366 367 368 369 370 371 372 373 374 375 376 377 378 379 380 381 382 383 384 385 386 387 388 389 390 391 392 393 394 395 396 397 398 399 400 401 402 403 404 405 406 407 408 409 410 411 412 413 414 415 416 417 418 419 420 421 422 423 424 425 426 427 428 429 430 431 432 433 434 435 436 437 438 439 440 441 442 443 444 445 446 447 448 449 450 451 452 453 454 455 456 457 458 459 460 461 462 463 464 465 466 467 468 469 470 471 472 473 474 475 476 477 478 479 480 481 482 483 484 485 486 | |
Các thao tác
Đăng ký nguồn dữ liệu
Cú pháp cơ bản:
1 2 3 4 5 6 7 8 9 10 11 | |
Bên trong plugin:
1 2 3 4 5 6 7 8 9 10 11 12 13 14 15 16 17 18 19 20 | |
Cung cấp dữ liệu theo yêu cầu
Mỗi BacktestingDataRequest chứa:
.StartTime,.EndTime– giai đoạn được yêu cầu.PriceDataSourceId– kết hợp ký hiệu/khung thời gian.DateType– tick, m1 hoặc OHLCV.Complete(data)– gọi khi dữ liệu đã sẵn sàng.Fail("reason")– gọi nếu không thể thực hiện yêu cầu
Ví dụ về trình xử lý:
1 2 3 4 5 | |
Bên trong plugin:
1 2 3 4 5 6 7 8 9 10 11 12 13 14 15 16 17 18 19 20 21 22 23 24 25 26 27 28 29 | |
Xử lý phạm vi thời gian có sẵn
Điều này cho động cơ biết giai đoạn nào có sẵn cho backtest và ngăn chặn lỗi ngoài giới hạn.
Cú pháp cơ bản:
1 2 | |
Bên trong plugin:
1 2 3 4 5 6 7 8 9 10 11 12 13 14 15 16 17 | |
Kết hợp với các giai đoạn tùy chỉnh (tùy chọn)
Bạn có thể liên kết một nguồn dữ liệu với các giai đoạn tùy chỉnh.
Cú pháp cơ bản:
1 2 3 4 5 6 7 8 | |
Bên trong plugin:
1 2 3 4 5 6 7 8 9 10 11 12 13 14 15 16 17 18 19 20 21 22 23 24 | |
Mẹo
-
Xóa kết quả cũ khi cập nhật dữ liệu bằng cách sử dụng
BacktestingDataSource.ClearCache(). -
Lưu trữ tham chiếu nguồn bằng cách sử dụng
LocalStorageđể tải lại khi khởi động lại. -
Sử dụng
PluginPanel,TextBoxvàFileDialogđể xây dựng bộ chọn dữ liệu trực quan để thuận tiện.
Ý tưởng thực tế
Tổng hợp các thanh thành các giai đoạn tùy chỉnh
Bạn có thể tạo ra các độ phân giải biểu đồ tùy chỉnh, chẳng hạn như thanh 45 phút, bằng cách tổng hợp dữ liệu m1 hiện có. Cách tiếp cận này cho phép bạn backtest chiến lược của mình trên các khoảng thời gian không chuẩn, và bạn có thể phát hiện các mẫu giá không xuất hiện trong các giai đoạn phổ biến như m30 hoặc h1.
1 2 3 4 5 6 7 8 9 10 11 12 13 14 15 16 17 18 | |
Giao dịch chỉ số tổng hợp được xây dựng từ nhiều ký hiệu
Hãy cân nhắc việc backtest các chiến lược trên các chỉ số tùy chỉnh bằng cách lấy trung bình hoặc kết hợp dữ liệu giá từ một số ký hiệu. Ví dụ, bạn có thể tạo một chỉ số rủi ro tổng hợp bằng cách sử dụng EURUSD, GBPUSD và AUDUSD, sau đó backtest nó như bất kỳ ký hiệu nào khác.
1 2 3 4 5 6 7 8 9 10 11 12 13 14 15 16 17 18 19 20 21 22 23 24 25 26 27 28 29 30 31 32 | |
Nếu bạn nhận được kết quả backtest tích cực, bạn có thể tiến hành giao dịch ký hiệu tùy chỉnh.
Chạy mô phỏng Monte Carlo với nhiễu giá
Đưa vào một chút ngẫu nhiên vào dữ liệu giá lịch sử để mô phỏng các khiếm khuyết trong thế giới thực như trượt giá hoặc đột biến giá. Lặp lại các backtest với các mẫu nhiễu khác nhau giúp bạn phát hiện các chiến lược mong manh và xác nhận độ mạnh trong điều kiện không chắc chắn.
1 2 3 4 5 6 7 8 9 10 11 12 13 | |