Những nhà phát minh giới thiệu về giao dịch định lượng - từ cơ bản đến thực tế

Tác giả:Tốt, Tạo: 2019-06-25 15:48:58, Cập nhật: 2023-10-31 21:01:08

Khi giá giảm từ trên xuống dưới đường ray, tức là phá vỡ đường hỗ trợ, chúng tôi nghĩ rằng lực trên đang tăng mạnh, một làn sóng xu hướng giảm đã hình thành, bán ra tín hiệu mở cửa.imgHình 4-20

Nếu sau khi mua một vị trí mở, giá lại giảm trở lại đường viền đường viền, chúng ta cho rằng lực đa phương đang suy yếu, hoặc lực không mặt đang tăng cường, bán tín hiệu ngang hàng được tạo ra; nếu sau khi bán một vị trí mở, giá lại tăng trở lại đường viền đường viền, chúng ta cho rằng lực không mặt đang suy yếu, hoặc lực đa phương đang tăng cường, mua tín hiệu ngang hàng được tạo ra.

Điều kiện mua bán

Mở nhiều đầu:如果无持仓,并且收盘价大于上轨,并且时间非14:45 Mở cửa trống:如果无持仓,并且收盘价小于下轨,并且时间非14:45 Đặt nhiều đầu:如果持多单,并且收盘价小于中轨,或者时间是14:45 Bàn chân trống:如果持空单,并且收盘价大于中轨,或者时间是14:45

Thực hiện mã chiến lược

Để thực hiện chiến lược, trước tiên chúng ta cần phải xem xét những gì chúng ta cần dữ liệu? thông qua API nào để có được nó? sau đó cách tính toán logic giao dịch? cuối cùng là cách nào để đặt hàng giao dịch?

Bước 1: Sử dụng khuôn khổ chiến lược CTA

CTA là một bộ tiêu chuẩn được giới thiệu chính thức bởi các nhà phát minh về định lượng, sử dụng nó để không phải xem xét các vấn đề trivial của việc phát triển chiến lược giao dịch định lượng và tập trung trực tiếp vào logic giao dịch lập trình. Ví dụ, nếu không sử dụng nó, bạn sẽ cần phải xem xét các vấn đề như chuyển đổi tháng, giá bán, thu hồi hoặc theo dõi khi giao dịch không được thực hiện.imgHình 4-21.

Bức tranh trên là khuôn khổ chiến lược CTA sử dụng công cụ định lượng của nhà phát minh. Đây là một định dạng mã cố định, tất cả mã logic giao dịch được viết từ dòng 3.

Điều cần lưu ý là mã giống trong hình trên là rb000/rb888 Nó đại diện cho ý nghĩa là dữ liệu tín hiệu được sử dụng là rb000, dữ liệu giao dịch được sử dụng là rb888, và tự động chuyển đổi. Tất nhiên bạn cũng có thể chỉ định mã giống cụ thể, ví dụ như mã giống rb1910, nghĩa là dữ liệu tín hiệu và dữ liệu giao dịch đều sử dụng rb1910.

FMZ tích hợp thư viện lớp học giao dịch tương lai hàng hóa JavaScript để sử dụng trong mã chỉ cần nhấp chuột trực tiếp vào giao diện chỉnh sửa chính sách:img

Bước 2: Thu thập dữ liệu

Hãy suy nghĩ kỹ, những dữ liệu nào cần thiết? Từ logic giao dịch chiến lược của chúng tôi, chúng ta thấy: trước tiên cần có được tình trạng nắm giữ hiện tại, sau đó so sánh mối quan hệ giữa giá đóng cửa và đường đi trung bình trên chỉ số BRI, và cuối cùng quyết định liệu thị trường có sắp đóng cửa hay không.

Thu thập dữ liệu đường K

Đầu tiên là lấy các mảng K và giá đóng cửa của các mảng K trên gốc, vì với các mảng K, bạn có thể tính toán các chỉ số dây chuyền Brin;; viết bằng mã như sau:imgHình 4-22.

Như hình trên: Dòng 4: Nhận mảng K, đó là một định dạng cố định. Dòng 5: lọc chiều dài của K, bởi vì chúng tôi tính toán các chỉ số dây chuyền B là 20, không thể tính toán các chỉ số dây chuyền B khi K nhỏ hơn 20. Vì vậy, ở đây bạn cần lọc chiều dài của K, nếu K nhỏ hơn 20, bạn sẽ quay trở lại và tiếp tục chờ đợi K tiếp theo. Dòng 6: Từ mảng K được lấy, trước tiên lấy đối tượng của mảng K gốc, sau đó lấy giá đóng cửa từ đối tượng đó. Nhận phần tử thứ hai của số âm của một mảng, đó là chiều dài của mảng này trừ 2 ((r [r.length - 2]); Các phần tử trong mảng K đều là một đối tượng, đối tượng chứa giá mở cửa, giá cao nhất, giá thấp nhất, giá đóng cửa, giao dịch hoàn thành, thời gian, để lấy giá đóng cửa, bạn chỉ cần thêm dấu ấn ngay sau đó.

Nhận dữ liệu thời gian K-line

Bởi vì chúng ta là chiến lược trong ngày, cần phải cân bằng vị trí trước khi đóng cửa, vì vậy để quyết định liệu dòng K hiện tại có gần đóng cửa hay không, nếu là dòng K gần đóng cửa thì cân bằng vị trí, nếu không là dòng K gần đóng cửa thì có thể mở, bằng mã viết như thế này:imgHình 4 - 23

Như hình trên: Dòng 8: Nhận thuộc tính của timestamp của root K, sau đó tạo một đối tượng thời gian ((new Date ((timestamp)). Dòng 9: Theo đối tượng thời gian, tính toán số giờ và phút, và xác định thời gian của đường gốc K là 14:45.

Thu thập dữ liệu lưu trữ

Thông tin nắm giữ là một điều kiện rất quan trọng trong chiến lược giao dịch định lượng, khi các điều kiện giao dịch được thiết lập, bạn cũng cần phải xác định đặt hàng bằng trạng thái nắm giữ và số lượng nắm giữ. Ví dụ: khi các điều kiện giao dịch mua mua mở được thiết lập, nếu có nắm giữ, bạn không cần phải đặt hàng lặp đi lặp lại; nếu không có nắm giữ, bạn có thể đặt hàng.imgHình 4 - 24 Như hình trên: Dòng 11: Nhận trạng thái giữ hiện tại. Nếu có nhiều đơn đặt hàng, giá trị là 1; nếu có đơn đặt hàng trống, giá trị là 1; nếu không có đơn đặt hàng, giá trị là 0.

Nhập dữ liệu băng thông

Sau đó, bạn cần tính toán các giá trị trên đường ray, giữa đường ray, dưới đường ray của chỉ số Brin. Trước tiên, bạn phải lấy một mảng Brin, lấy số lượng đường ray trên và dưới đường ray từ các mảng. Trong công cụ định lượng của nhà phát minh, lấy mảng Brin rất đơn giản, bạn có thể trực tiếp gọi API của Brin, khó khăn là lấy các giá trị đường ray trên và dưới đường ray, vì mảng Brin là một mảng hai chiều.

Các số 2D thực sự được hiểu rất rõ, đó là các số trong các số, sau đó thứ tự được lấy là: đầu tiên lấy các số được chỉ định trong các số, sau đó lấy các phần tử được chỉ định từ các số được chỉ định, như hình dưới:imgHình 4 - 25

Dưới đây là biểu đồ: Dòng 13 đến 19 là số lượng được lấy từ các đường ray, đường ray trung bình và đường ray hạ cánh của dây chuyền Brin. Dòng 13 là API trực tiếp sử dụng công cụ định lượng của nhà phát minh để lấy các mảng dây chuyền Brin; Dòng 14 đến 16 là số lượng được lấy từ các mảng đường ray trên, đường ray dưới và đường ray dưới trong các mảng hai chiều; Dòng 17 đến 19 là số lượng được lấy từ các mảng đường ray trên, đường ray trung bình và đường ray hạ cánh của các mảng đường ray K trên.imgHình 4 - 26

Bước 3: Đặt hàng

Với những dữ liệu trên, bạn có thể viết logic giao dịch và mã giao dịch đặt hàng. Dạng cũng rất đơn giản, thường được sử dụng nhất là câu lệnh if, có thể được mô tả bằng văn bản như sau: đặt hàng nếu điều kiện 1 và điều kiện 2 thành công; đặt hàng nếu điều kiện 3 hoặc điều kiện 4 thành công.imgHình 4 - 27

Trong biểu đồ trên, 21 đến 24 dòng là logic giao dịch và mã giao dịch đặt hàng dưới đây. Từ trên xuống dưới, chúng ta có thể thấy: ngang, trống, mở, trống.

Ví dụ, đây là một câu lệnh if, trong câu lệnh này, nếu chỉ thực hiện một dòng mã, thì dấu ngoặc cột {} có thể bỏ qua. Câu lệnh này được dịch thành: nếu giá hiện tại là 0, và giá đóng cửa lớn hơn trên đường ray, và thời gian dòng K không phải là 14:45, thì return 1 .

Nếu bạn chú ý, bạn có thể thấy rằng trong vài dòng này có các con số return 1 và return -1, đây là một định dạng cố định, nghĩa là: nếu mua thì viết return 1; nếu bán thì viết return -1.

Mã chiến lược đầy đủ

Một mã chiến lược hoàn chỉnh đã được viết, nếu bạn tách ra các khung giao dịch, dữ liệu giao dịch, logic giao dịch, mua bán theo lệnh, và nhiều thứ khác, có phải nó đơn giản không?imgHình 4 - 28

Có hai điểm cần chú ý: cố gắng (nhưng không phải là bắt buộc) viết logic chiến lược như sau khi các điều kiện gốc K được thành lập, các điều kiện gốc K được phát hành, hoặc các điều kiện gốc K được thành lập, kết quả lặp lại như vậy không khác nhiều so với kết quả thực. Có thể viết không như vậy, nhưng hãy chú ý liệu logic chiến lược có đúng hay không. Nói chung, viết logic của vị trí ngang trước logic mở cửa, mục đích của việc này là để làm cho logic chiến lược phù hợp với mong đợi của bạn. Ví dụ: nếu logic chiến lược vừa bắt kịp tay đối thủ, quy tắc của tay đối thủ là, trước khi mở một vị trí mới; chứ không phải là mở một vị trí mới, trước khi mở một vị trí.

Tóm lại

Trên đây, chúng ta đã học được từng bước để phát triển một chiến lược giao dịch định lượng trong ngày đầy đủ, bao gồm: mô tả chiến lược, phương pháp tính toán chỉ số dây chuyền, logic chiến lược, điều kiện mua bán, thực hiện mã chiến lược, v.v.

Một chiến lược giao dịch định lượng chỉ là một tổng hợp của kinh nghiệm giao dịch chủ quan hoặc hệ thống, nếu chúng ta viết từng trải nghiệm hoặc hệ thống giao dịch chủ quan trước khi viết chiến lược, và sau đó dịch thành mã từng đoạn, bạn sẽ thấy viết chiến lược sẽ dễ dàng hơn nhiều. Hãy thử!

Phần tiếp theo

Trong việc phát triển chiến lược giao dịch định lượng, nếu chỉ có một ngôn ngữ lập trình để lựa chọn, thì không ngần ngại, chắc chắn sẽ chọn Python, từ thu thập dữ liệu đến đánh giá lại chiến lược và giao dịch, Python đã bao phủ toàn bộ chuỗi kinh doanh.

Bài học sau giờ học

1. Hãy thử sử dụng kiến thức trong phần này để thực hiện một chiến lược hai đường thẳng. 2. Thử thực hiện thuật toán chỉ số KDJ bằng ngôn ngữ JavaScript trong công cụ định lượng của nhà phát minh.

4.3 Tham gia nhanh vào ngôn ngữ Python

Tóm tắt

Trong việc phát triển chiến lược giao dịch định lượng, nếu chỉ có một ngôn ngữ lập trình để lựa chọn, bạn sẽ không ngần ngại chọn Python, từ thu thập dữ liệu đến kiểm tra lại chiến lược và giao dịch, Python đã bao phủ toàn bộ chuỗi kinh doanh.

Tại sao phải học nhiều ngôn ngữ lập trình như vậy?

Nhìn lại các bài học trước đây, trên đường đi, chúng tôi đã cùng nhau học: ngôn ngữ Mac, ngôn ngữ trực quan, ngôn ngữ JavaScript, bao gồm cả ngôn ngữ Python mà chúng tôi sẽ học trong phần này. Có thể bạn bè sẽ nghi ngờ, tôi đến để học giao dịch định lượng, tại sao phải học nhiều ngôn ngữ lập trình như vậy?

Trong thực tế, mỗi ngôn ngữ lập trình có đặc điểm ngôn ngữ của riêng mình, các ngôn ngữ này cũng không có ưu điểm hay nhược điểm, nhiều hơn là xem chiến lược phù hợp hơn với ngôn ngữ lập trình nào, và ngôn ngữ lập trình này có phù hợp với chính bạn hay không. Vì vậy, có câu nói, chỉ cần thử bản thân mới biết.

Trong khi đó, chúng tôi cũng cam kết mở cửa cho tất cả mọi người và phổ biến kiến thức về các ngôn ngữ lập trình khác nhau.

Tại sao chọn Python

Trong phân tích dữ liệu, không có ngôn ngữ nào khác có thể tính toán và duy trì hiệu suất như Python. Đặc biệt trong phân tích dữ liệu chuỗi thời gian, Python có lợi thế đơn giản hơn và dễ dàng hơn. Ngoài ra, so với các ngôn ngữ lập trình khác, Python ngắn gọn hơn, dễ học, đọc tốt.

5 lý do để chọn Python

1. Sử dụng định lượng rộng rãi:

Trong khi đó, các nhà phát minh ở Mỹ cũng có thể sử dụng ngôn ngữ Python để định lượng.

2. Dễ học:

Triết lý thiết kế của Python là tập trung vào người dùng và là một ngôn ngữ giải thích dễ dàng chỉnh sửa.

3. Nguồn mở:

Không có chi phí sử dụng, chia sẻ mã nguồn mở, tăng cường học tập và sử dụng hiệu quả.

4. Thư viện phong phú:

Các công nghệ này được sử dụng trong các lĩnh vực như xử lý dữ liệu, tính toán dữ liệu, hình ảnh, phân tích thống kê, phân tích kỹ thuật, học máy...

5. Giao diện ứng dụng:

Dữ liệu trên các nền tảng khác nhau có được giao diện để lưu trữ các cuộc gọi và liên kết thực tế để đặt hàng.

Chiến lược hoàn chỉnh

Để giúp mọi người nhanh chóng hiểu được những kiến thức chính trong phần này, trước khi giới thiệu các nhà phát minh ngôn ngữ JavaScript định lượng nhanh chóng, hãy có một sự hiểu biết ban đầu về khái niệm danh từ trong phần này.

Mở nhiều đầu: Nếu hiện tại không có vị trí và đường trung bình 5 chu kỳ lớn hơn đường trung bình 20 chu kỳ.Mở cửa trống: Nếu không có vị trí hiện tại, và đường trung bình 5 chu kỳ nhỏ hơn đường trung bình 20 chu kỳ.Đặt nhiều đầu: Nếu hiện đang giữ nhiều đơn hàng và đường trung bình 5 chu kỳ nhỏ hơn đường trung bình 20 chu kỳ.Bàn chân trống: Nếu đang giữ đơn hàng trống và đường trung bình 5 chu kỳ lớn hơn đường trung bình 20 chu kỳ.

Nếu bạn viết bằng ngôn ngữ mã Python, nó sẽ như thế này:imgHình 4 - 29

Mã trên là một chiến lược giao dịch định lượng hoàn chỉnh được viết bằng ngôn ngữ Python. Có thể chạy trên máy tính, và tự động đặt hàng giao dịch. Từ phần code, ngôn ngữ Python nhiều hơn ngôn ngữ JavaScript, đó là bởi vì chúng tôi không sử dụng khuôn khổ giao dịch CTA.

Nhưng toàn bộ quá trình thiết kế chiến lược gần như giống nhau: thiết lập các loại giao dịch, lấy dữ liệu K-line, lấy thông tin nắm giữ, tính toán logic giao dịch, đặt hàng mua bán.

Chọn phiên bản

Python có hai phiên bản: Python 2 và Python 3. Có một đoạn nói rằng Python giống như một khẩu súng hai ống, nhưng chỉ có thể bắn một viên đạn mỗi lần, nhưng bạn sẽ không bao giờ biết chính xác cái nào chính xác hơn. Vì vậy, nếu bạn là người mới của Python, chúng tôi khuyên bạn nên học trực tiếp Python 3, vì nó là mới nhất và cộng đồng Python luôn duy trì.

Nhãn hiệu

Nhãn nhận dạng là tên của biến, như trong hình dưới đây: test, test10, test10, test10, test10, test10, test10, test10, test10, test10, test10, test10, test10, test10, test10, test10, test10, test10, test10, test10, test10, test10, test10, test10, test10, test10, test10, test10, test10, test10, test10, test10, test10, test10, test10, test10, test10, test10, test10, test10, test10, test10, test10, test10, test10, test10, test10, test10, test10, test10, test10, test10, test10, test10, test10, test10, test10, test10, test10, test10, test10, test10, test10, test10, test10, test10, test10, test10, test10, test10, test10, test10, test10, test10, test10, etc.demo. Tất cả mọi thứ trong Python (như tên biến, tên chức năng, và toán tử) đều được viết bằng chữ viết nhỏ, nghĩa là tên biến test và tên biến Test là hai biến khác nhau. Các ký tự đầu tiên của mã (những tên biến, hàm, thuộc tính, tham số của hàm) phải là chữ cái, đường viền.Các chữ cái sau có thể là số, như hình dưới đây:imgHình 4-30

Phản hồi

Phụ lục là bản dịch hoặc giải thích cho một dòng mã, quy tắc của nó rất đơn giản, bao gồm một dòng chú thích và chú thích cấp khối. Phụ lục đơn bắt đầu bằng dấu hiệu #, đoạn chú thích bắt đầu bằng ba dấu chấm đơn hoặc ba dấu chấm đôi, kết thúc bằng ba dấu chấm đơn hoặc ba dấu chấm đôi, như được hiển thị dưới đây:imgHình 4-31

Đường và thu hẹp

Đặc điểm đặc biệt nhất của Python là sử dụng thu nhỏ để biểu thị các khối mã, không cần sử dụng dấu ngoặc lớn {}. Số lượng không gian thu nhỏ là thay đổi, nhưng các câu nói trong cùng một khối mã phải chứa cùng một số lượng không gian thu nhỏ. Ví dụ như hình dưới: trong trường hợp này, chương trình sẽ báo lỗi. Ngay cả khi điều kiện if là đúng, nó cũng sẽ không xuất ra True, bởi vì Python sẽ tự động kiểm tra chính xác ngữ pháp mã trước khi chạy mã, nếu mã định dạng sai, chương trình sẽ không chạy.imgHình 4-32

Các biến

Các biến có thể lưu bất kỳ loại dữ liệu nào, viết trực tiếp tên biến là tạo biến, nhưng khi tạo biến, bạn cần phải đặt cùng một giá trị của biến, nếu không chương trình sẽ trả về lỗi. Định số tương đương ((=) ở bên trái là một tên biến, và số tương đương ((=) ở bên phải là một giá trị được lưu trữ trong biến. Như hình dưới:name2 là tên biến, và số lượng của người phát minh là giá trị của biến. Nếu không đặt lại giá trị mới cho name2, thì giá trị của name2 luôn luôn là số lượng của người phát minh.imgHình 4-33

Dữ liệu

Python có sáu kiểu dữ liệu, trong đó có 3 dữ liệu không thay đổi và 3 dữ liệu biến đổi. Theo nghĩa của tên, dữ liệu không thay đổi một khi đã được tạo, giá trị của nó không thể thay đổi, địa chỉ trong bộ nhớ là duy nhất; dữ liệu biến đổi là tham chiếu đến địa chỉ trong bộ nhớ, nếu giá trị của nó thay đổi, địa chỉ trong bộ nhớ của nó không thay đổi. Dữ liệu không thể thay đổi ((3):Number ((number) 、String ((string) 、Tuple ((group); Dữ liệu có thể thay đổi: List, Dictionary, Set, và Set.imgHình 4-34

Số liệu

Các loại số trong Python hỗ trợ các hàm int ((định dạng), float (định dạng), boolean (định dạng), complex (định dạng đa số); type (định dạng đa số); được sử dụng để truy vấn các loại đối tượng mà các biến đề cập; ví dụ:imgHình 4 - 35

Các toán tử

Giống như hầu hết các ngôn ngữ, các phép toán trong Python rất trực quan. Các phép toán toán học, phép tính so sánh và phép tính logic đều giống như những gì chúng ta biết trong trường học. Trong đó, phép toán toán học là phép toán cộng trừ, phép tính so sánh có thể so sánh hai giá trị nhỏ hơn hoặc nhỏ hơn, các phép toán logic chủ yếu có: logic, logic và logic hoặc không logic.imgHình 4-36

Điều cần lưu ý là: and là logic với, đại diện cho . or là logic hoặc, đại diện cho hoặc . ! là không logic, đại diện cho hay : Xand là khi tất cả các điều kiện đều là Xandtrue, thì điều kiện cuối cùng là Xandtrue; or là trong tất cả các điều kiện, miễn là có bất kỳ điều kiện nào là true, thì điều kiện cuối cùng là true.

Ưu tiên

Nếu có một biểu thức 100* ((10-1) / ((10+5), chương trình sẽ tính trước bước nào? Toán học trung học cho chúng ta biết: Nếu là một phép tính cùng cấp độ, chúng ta thường đếm từ trái sang phải. Nếu có phép cộng và phép nhân, thì hãy nhân trước. Nếu có phép cộng và phép cộng, thì hãy cộng lại.imgHình 4-37

Giá trị Bull

Boolean đại diện cho true và false, thường được sử dụng trong phán quyết điều kiện và câu nói vòng lặp. Python xác định hai hằng số là True và Flase. Thực tế, bất kỳ đối tượng nào cũng có thể được chuyển thành Boolean hoặc trực tiếp được sử dụng để phán quyết điều kiện, như hình dưới đây:imgHình 4-38

Dòng chữ

Dây từ là chữ cái, thường được sử dụng trong việc thiết lập mã giống. Ví dụ: if1905. Trong Python, các ký tự được gộp với dấu chấm đơn hoặc dấu chấm đôi.imgHình 4-39

Danh sách

Một danh sách là loại dữ liệu được sử dụng thường xuyên nhất trong Python, bạn có thể tưởng tượng danh sách như một container, nhưng các phần tử trong container được sắp xếp theo thứ tự từ trái sang phải, phần tử đầu tiên là 0, phần tử thứ hai là 1, và vân vân. Ngoài ra, danh sách trong Python có thể lưu trữ bất kỳ loại dữ liệu nào, như hình dưới:imgHình 4-40

Chức năng

Các hàm trong Python không có sự khác biệt về bản chất so với các hàm trong trường trung học của chúng ta, bạn có thể hiểu được những gì truyền vào, những gì xuất ra thông qua tính toán của các hàm, như hình dưới:imgHình 4-41

if câu

if câu nói thường xuất hiện trong cuộc sống của chúng ta, ví dụ: Nếu hôm nay trời mưa, tôi sẽ đặt cược. Đó là, câu nói chỉ thực hiện mã nếu điều kiện được chỉ định là True.imgHình 4-42

if...else

if...else cũng là một câu nói thường được sử dụng, ví dụ: nếu hôm nay trời mưa, tôi sẽ đặt cược; nếu không, tôi sẽ không đặt cược.imgHình 44-43

câu elif

Vì python không hỗ trợ các lệnh chuyển đổi, Python chỉ có thể thực hiện bằng các lệnh elif khi quyết định nhiều điều kiện. Ví dụ: nếu là tia nắng, tôi sẽ xem nhiều hơn; nếu không là tia âm, tôi sẽ nhìn trống; nếu không tôi sẽ xem xét; như hình dưới đây:imgHình 44-44

for chu kỳ

Đôi khi chúng ta cần lấy dữ liệu đường k trong vài ngày gần đây, chúng ta cần lấy từ một mảng đường k, theo vị trí của dữ liệu đường k, sau đó sử dụng vòng lặp for rất thuận tiện, như hình dưới:imgHình 4-45

while vòng lặp

Chúng ta đều biết rằng thị trường luôn thay đổi, nếu bạn muốn có được các mảng K mới nhất, bạn sẽ phải chạy cùng một mã liên tục và lặp đi lặp lại, sau đó sử dụng vòng lặp whilex, vòng lặp sẽ luôn có được các mảng K mới nhất miễn là điều kiện được chỉ định là true.imgHình 44-46

Câu break và câu continue

Chuyển vòng là có điều kiện, chỉ khi điều kiện này là true thì chuyển vòng sẽ bắt đầu lặp lại một điều gì đó, cho đến khi điều kiện này là false thì chuyển vòng sẽ kết thúc. Nhưng câu break có thể nhảy ra khỏi chuyển ngay trong quá trình thực hiện chuyển vòng; câu continue có thể ngắt một chuyển vòng và tiếp tục chuyển vòng tiếp theo; như được thể hiện dưới đây:imgHình 4-47

return câu nói

return lệnh sẽ chấm dứt thực hiện hàm và trả về giá trị của hàm. return lệnh chỉ xuất hiện trong cơ thể hàm, xuất hiện ở bất kỳ nơi nào khác trong mã sẽ gây ra lỗi ngữ pháp!imgHình 4-48

Cấu trúc chiến lược

Các cấu trúc chiến lược bạn có thể hiểu là một định dạng cố định của chiến lược, các nhà phát minh công cụ định lượng sử dụng mô hình tư vấn, sau đây là các cấu trúc chiến lược tương lai hàng hóa cổ điển.

Trong đó, dòng 4 - 7 là hàm đầu vào chính của toàn bộ chương trình, nghĩa là máy tính thực hiện mã từ dòng 4, sau đó thực hiện trực tiếp dòng 5, và đi vào vòng vô hạn; sau đó trong vòng vô hạn, luôn thực hiện các hàm logic chiến lược (onTick) và chức năng nghỉ ngơi (Sleep); chức năng onTick cũng là dòng 1 của mã, bạn có thể viết logic trong dòng 2; chúng ta biết rằng trong vòng, tốc độ thực hiện chương trình rất nhanh, do đó, sử dụng chức năng nghỉ ngơi (Sleep) có thể tạm dừng, một mã của thế hệ tiếp theo Sleep (500) là mỗi vòng, nghỉ ngơi 500 millisecond.imgHình 4-49

Tóm lại

Đây là một phần giới thiệu nhanh về ngôn ngữ Python, mặc dù chỉ là một kiến thức cơ bản đơn giản, nhưng bạn vẫn có thể viết một chiến lược giao dịch định lượng đơn giản. Nếu bạn cần viết một chiến lược phức tạp hơn, bạn có thể tham khảo tài liệu API của Python.

Phần tiếp theo

Trong lĩnh vực phân tích kỹ thuật, đường trung và đường đột phá là hai loại chiến lược. Mặc dù mục đích là để nắm bắt xu hướng của xu hướng giá, nhưng triết lý giao dịch và đặc điểm rủi ro của hai loại chiến lược rất khác nhau.

Bài học sau giờ học

1, Hãy thử lấy dữ liệu K-line lịch sử bằng ngôn ngữ Python trong công cụ định lượng của nhà phát minh. 2. Hãy thử viết mã chiến lược ở đầu phần này và viết chú thích.

4.4 Làm thế nào để thực hiện giao dịch chiến lược bằng ngôn ngữ Python

Tóm tắt

Trong bài viết trước, chúng tôi đã học về ngôn ngữ Python giới thiệu, ngữ pháp cơ bản, khuôn khổ chiến lược, v.v.. Mặc dù nội dung rất nhàm chán, nhưng đây là kỹ năng cần thiết để bạn thực hiện chiến lược giao dịch và cũng phải học.

Chiến lược giới thiệu

Trong số nhiều chiến lược giao dịch, chiến lược Đường Đường Đường Đường Đường Đường Đường Đường Đường Đường Đường Đường Đường Đường Đường Đường Đường Đường Đường Đường Đường Đường Đường Đường Đường Đường Đường Đường Đường Đường Đường Đường Đường Đường Đường Đường Đường Đường Đường Đường Đường Đường Đường Đường Đường Đường Đường Đường Đường Đường Đường Đường Đường Đường Đường Đường Đường Đường Đường Đường Đường Đường Đường Đường Đường Đường Đường Đường Đường Đường Đường Đường Đường Đường Đường Đường Đường Đường Đường Đường Đường Đường Đường Đường Đường Đường Đường Đường Đường Đường Đường Đường Đường Đường Đường Đường Đường Đường Đường Đường Đường Đường Đường Đường Đường Đường Đường Đường Đường Đường Đường Đường Đường Đường Đường Đường Đường Đường Đường Đường Đường Đường Đ

Sau đó, một cuộc đào tạo thương nhân cá mập nổi tiếng nhất trong lịch sử giao dịch đã diễn ra ở Hoa Kỳ, tạo ra một thành công lớn. Các phương pháp giao dịch của cá mập lúc đó là bí mật, nhưng hơn một thập kỷ sau khi luật giao dịch cá mập được công bố, người ta mới phát hiện ra rằng các cá mập này sử dụng chính là một phiên bản cải tiến của chiến lược Donchean.

Chiến lược giao dịch đột phá phù hợp với các loại giao dịch có xu hướng khá mượt mà. Cách giao dịch đột phá phổ biến nhất là sử dụng mối quan hệ vị trí tương đối của giá với hỗ trợ và kháng cự để xác định điểm mua bán của giao dịch cụ thể. Chiến lược kênh Dong An trong phần này cũng dựa trên nguyên tắc này.

Quy tắc chiến thuật đường Dongcheng

Đường Dongqian là một chỉ số xu hướng, có vẻ ngoài và tín hiệu tương tự như chỉ số Blink-Band. Tuy nhiên, đường Dongqian được xây dựng dựa trên giá cao nhất và giá thấp nhất trong một khoảng thời gian. Ví dụ: tính toán giá cao nhất của 50 đường K gần đây, hình thành đường lên; tính toán giá thấp nhất của 50 đường K gần đây, hình thành đường xuống. Chỉ số này được tạo thành từ 3 đường cong có màu sắc khác nhau, mặc định là giá cao nhất và giá thấp nhất trong 20 chu kỳ để hiển thị sự biến động của giá thị trường, khi đường hầm của nó hẹp cho thấy sự biến động của thị trường nhỏ hơn, và ngược lại, đường hầm rộng cho thấy sự biến động của thị trường lớn hơn.

Nếu giá tăng vượt qua đường ray, đó là tín hiệu mua; ngược lại, nếu giá giảm xuống đường ray, đó là tín hiệu bán. Vì đường ray và đường ray của nó được tính bằng giá cao nhất và giá thấp nhất, trong các trường hợp thông thường, giá hiếm khi tăng và giảm cùng một lúc trên đường ống. Trong hầu hết các trường hợp, giá đi theo đường ray hoặc đường ray đơn lẻ, hoặc di chuyển giữa đường ray và đường ray.

Phương pháp tính toán đường Dongcheng

Trong công cụ định lượng của nhà phát minh, phương pháp tính toán kênh Dongchian rất đơn giản, bạn có thể trực tiếp sử dụng giá cao nhất hoặc giá thấp nhất trong chu kỳ được chỉ định, như hình dưới đây: Dòng 5 là giá cao nhất trong 50 chu kỳ, Dòng 6 là giá thấp nhất trong 50 chu kỳ.imgHình 4-50

Logic chiến lược

Có rất nhiều phương pháp sử dụng kênh Dong An, có thể được sử dụng một mình hoặc kết hợp với các chỉ số khác. Trong bài học này, chúng ta sẽ sử dụng phương pháp sử dụng đơn giản nhất. Đó là: khi giá vượt qua đường dẫn lên từ dưới lên, tức là vượt qua đường dây áp lực phía trên, chúng ta cho rằng lực lượng đa phương đang tăng mạnh, một làn sóng tăng đã hình thành, và tín hiệu mua mở; khi giá vượt qua đường dẫn xuống từ trên xuống, tức là phá vỡ đường dây hỗ trợ, chúng ta cho rằng lực lượng trên cao đang tăng mạnh, một làn sóng giảm đã hình thành, và tín hiệu bán mở.imgHình 4-51

Nếu sau khi mua, giá lại giảm trở lại đường dẫn trung tâm của kênh Dongguan, chúng ta cho rằng lực lượng đa phương đang suy yếu, hoặc lực lượng trên không đang tăng cường, bán tín hiệu ngang hàng được tạo ra; nếu sau khi bán, giá lại tăng trở lại đường dẫn trung tâm của kênh Dongguan, chúng ta cho rằng lực lượng trên không đang suy yếu, hoặc lực lượng đa phương đang tăng cường, mua tín hiệu ngang hàng được tạo ra.

Điều kiện mua bán Mở nhiều đầu: Nếu không có cổ phiếu và giá đóng cửa lớn hơn giá trên đườngMở cửa trống: Nếu không có cổ phiếu và giá đóng cửa thấp hơn đường rayĐặt nhiều đầu: Nếu có nhiều đơn đặt hàng và giá đóng cửa thấp hơn giá trung bìnhBàn chân trống: Nếu bạn có vé trống và giá đóng cửa lớn hơn giá trung bình

Thực hiện mã chiến lược

Bước đầu tiên để thực hiện chiến lược là lấy dữ liệu trước vì dữ liệu là một phần tiên quyết của chiến lược giao dịch, hãy tưởng tượng chúng ta cần dữ liệu nào? và làm thế nào để lấy dữ liệu đó? sau đó tính toán logic giao dịch dựa trên dữ liệu đó; cuối cùng là mua và bán giao dịch với logic giao dịch.

Bước 1: Sử dụng thư viện giao dịch

Bạn có thể tưởng tượng thư mục giao dịch như một mô-đun chức năng, lợi ích của việc sử dụng thư mục giao dịch là bạn có thể tập trung vào việc viết chiến lược logic. Ví dụ: khi chúng ta sử dụng thư mục giao dịch, chúng ta có thể mở giao dịch bằng cách sử dụng trực tiếp API bên dưới thư mục giao dịch; nhưng nếu chúng ta không sử dụng thư mục giao dịch, chúng ta sẽ cần truy cập vào giá giao dịch, cần xem xét các vấn đề về báo cáo nhưng không giao dịch, cần xem xét các vấn đề về thu hồi đơn hàng, v.v.imgHình 4-52

Bức tranh trên là khuôn khổ chiến lược CTA sử dụng công cụ định lượng của nhà phát minh. Đây là một định dạng mã cố định, tất cả mã logic giao dịch được viết từ dòng 4. Không cần bất kỳ sửa đổi nào ở những nơi khác.

Các thư viện mẫu của JavaScript được xây dựng sẵn, Python cần phải sao chép và lưu mẫu này:https://www.fmz.com/strategy/24288Bạn có thể chọn tham khảo trên trang chỉnh sửa chính sách. Bạn có thể hoàn thành chính sách mà không cần thư viện mẫu.

img

Bước 2: Thu thập dữ liệu

Hãy suy nghĩ kỹ, những dữ liệu nào cần thiết? Từ logic giao dịch chiến lược của chúng tôi, chúng ta thấy: trước tiên cần có được tình trạng nắm giữ hiện tại, sau đó so sánh mối quan hệ giữa giá đóng cửa và đường đi trung bình trên chỉ số BRI, và cuối cùng quyết định liệu thị trường có sắp đóng cửa hay không.

Thu thập dữ liệu đường K

Đầu tiên là lấy một mảng K và giá đóng cửa mảng K hiện tại, vì có một mảng K, bạn có thể gọi API để lấy giá cao nhất hoặc giá thấp nhất của chu kỳ N.imgHình 4-53 Theo hình trên: Dòng 4: Nhận mảng K, đó là một định dạng cố định. Dòng 5: lọc chiều dài của đường K, bởi vì chúng ta tính toán giá cao nhất hoặc giá thấp nhất của chu kỳ N, các tham số được sử dụng là 50, khi đường K nhỏ hơn 50, không thể tính. Vì vậy, ở đây bạn cần lọc chiều dài của đường K, nếu đường K nhỏ hơn 50, hãy bỏ qua vòng lặp này và tiếp tục chờ đợi đường K tiếp theo. Dòng 6: Chúng ta sử dụng mã lenrecords - 1 để lấy dữ liệu cuối cùng của mảng K, tức là dữ liệu K mới nhất. Dữ liệu này là một đối tượng chứa: giá mở, giá cao nhất, giá thấp nhất, giá đóng, khối lượng giao dịch, thời gian, v.v.

Thu thập dữ liệu lưu trữ

Thông tin nắm giữ là một điều kiện rất quan trọng trong chiến lược giao dịch định lượng. Khi các điều kiện giao dịch được thiết lập, bạn cũng cần phải xác định đặt hàng bằng trạng thái nắm giữ và số lượng nắm giữ. Ví dụ: khi các điều kiện giao dịch mua bán được thiết lập, nếu có nắm giữ, bạn không cần phải đặt hàng lặp đi lặp lại; nếu không có nắm giữ, bạn có thể đặt hàng.imgHình 4-54

Như hình trên: Đây là một hàm lấy thông tin giữ hàng, trả về 0 nếu không có hàng; 1 nếu nhiều đơn hàng; -1 nếu không có đơn hàng; lưu ý mã trên: Dòng 2: Tạo một hàm, tên là mp, không có tham số. Dòng 3: Nhận được các mảng lưu trữ, đây là một định dạng cố định. Dòng 4: Xác định chiều dài của một mảng chứa, nếu chiều dài của nó bằng, nó chắc chắn là không chứa, vì vậy nó sẽ trả về 0. Dòng 6: Sử dụng vòng lặp for, bắt đầu đi qua mảng này, logic tiếp theo sẽ rất đơn giản, nếu giữ nhiều đơn vị, nó sẽ trả về 1; nếu giữ một đơn vị trống, nó sẽ trả về -1. Dòng 18: Gọi hàm nhận thông tin lưu trữ mới được viết.

Tìm giá cao nhất và thấp nhất trong 50 dòng K gần đây

Trong các công cụ định lượng của nhà phát minh, các hàm TA.Highest và TA.Lowest được lấy trực tiếp bằng cách sử dụng hàm TA.Highest và TA.Lowest mà không cần phải tự viết toán logic. Và hàm TA.Highest và TA.Lowest trả về kết quả là các giá trị cụ thể chứ không phải là các mảng. Điều này rất thuận tiện, hơn thế nữa, chính thức đã tích hợp hàng trăm hàm chỉ số.imgHình 4-55

Như hình trên: Dòng 19: Gọi hàm TA.Highest để lấy giá tối đa trong 50 chu kỳ Dòng 20: Gọi hàm TA.Lowest để lấy giá tối thiểu trong 50 chu kỳ Dòng 21: Tính trung bình dựa trên giá cao nhất trong 50 chu kỳ và giá thấp nhất trong 50 chu kỳ

Bước 3: Đặt hàng

Với những dữ liệu trên, bạn có thể viết logic giao dịch và mã giao dịch đặt hàng. Dạng cũng rất đơn giản, thường được sử dụng nhất là câu nói if, có thể được mô tả bằng văn bản như sau: đặt hàng nếu điều kiện 1 và điều kiện 2 thành công; đặt hàng nếu điều kiện 3 hoặc điều kiện 4 thành công.imgHình 4-56

Một số người nói rằng: Dòng 22: Sử dụng thư viện loại giao dịch, đây là một định dạng cố định Các dòng 23, 24: Đây là một câu nói đơn giản đơn giản, sử dụng các phép tính so sánh và các phép tính logic đơn giản mà chúng ta đã học trước đây, nghĩa là tất cả các vị trí sẽ được cân bằng nếu bạn đang giữ nhiều đơn đặt hàng và giá đóng cửa thấp hơn đường trung bình. Dòng 25, 26: Đây là một câu nói về danh sách trống bằng cách sử dụng các phép tính so sánh và các phép tính logic bằng cách sử dụng các phép tính mà chúng ta đã học trước đây, nghĩa là tất cả các vị trí sẽ được cân bằng nếu bạn đang giữ danh sách trống và giá đóng cửa lớn hơn đường trung bình. Đường 27: Xác định tình trạng hiện tại của kho, nếu kho trống, hãy tiến hành bước tiếp theo. Dòng 28 và 29: Xác định giá đóng cửa lớn hơn so với mức tăng, nếu giá đóng cửa tăng vượt quá mức tăng, hãy mua mua. Dòng 30 và 31: Xác định giá đóng cửa có thấp hơn không, nếu giá đóng cửa giảm xuống đường, bán vị trí mở.

Tóm lại

Trên đây, chúng tôi đã học được từng bước để phát triển một chiến lược giao dịch định lượng hoàn chỉnh bằng Python, bao gồm: mô tả chiến lược, phương pháp tính toán kênh Dongchian, logic chiến lược, điều kiện mua bán, thực hiện mã chiến lược, v.v.

Phần tiếp theo

Trong việc phát triển chiến lược giao dịch định lượng, từ góc độ tốc độ thực hiện ngôn ngữ lập trình, chỉ có C++ là không thể nói ngôn ngữ nào nhanh nhất. Đặc biệt trong lĩnh vực phái sinh và giao dịch tần số cao, C++ đặc biệt đặc biệt về ngôn ngữ, C++ có lợi thế tính toán số, tăng tốc độ một vài cấp độ so với JavaScript và Python, đây sẽ là khóa học bạn không thể bỏ qua nếu bạn muốn phát triển trong lĩnh vực phái sinh và giao dịch tần số cao trong tương lai.

Bài học sau giờ học

Trong khi đó, các nhà lãnh đạo của các nước khác cũng có thể tham gia vào các cuộc biểu tình. 2. Hãy thử thêm một chỉ số đường thẳng vào chiến lược của phần này để giảm tần suất giao dịch.

Chương 5: Chiến lược kiểm tra lại, điều chỉnh và cải thiện

5.1 Ý nghĩa và bẫy của việc đánh giá lại

Tóm tắt

Phân tích lại là nơi giao dịch định lượng khác với giao dịch truyền thống, dựa trên dữ liệu thị trường thực tế đã xảy ra trong lịch sử, kích hoạt và chụp các giao dịch, báo cáo về hiệu suất trong một khoảng thời gian. Một trong những thành phần quan trọng nhất của việc phát triển chiến lược cho các thị trường nội địa, nước ngoài, chứng khoán, tương lai hàng hóa, ngoại hối và các thị trường khác.

Ý nghĩa của việc kiểm tra lại

Trong chương trước, chúng tôi đã học được các phần cơ bản của ngôn ngữ lập trình chính thống, và dạy mọi người cách sử dụng các nền tảng lập trình này để viết một số chiến lược giao dịch đơn giản, có thể nói rằng một nửa hành trình dài đã đi. Tuy nhiên, một chiến lược đã được viết, chắc chắn không thể thực hiện trực tiếp, nó cũng cần phải liên tục kiểm tra lại các khâu điều chỉnh, kiểm tra lại các khâu điều chỉnh, v.v. cho đến khi các chiến lược có thể thực hiện đầy đủ nội dung mô hình và có thể chạy trơn tru.

Từ quan điểm của logic giao dịch định lượng, chiến lược thực sự là dựa trên một loạt các nhận thức và giả định về thị trường, và kiểm tra lại có thể xác định hiệu quả các giả định có đúng và ổn định hay không. Trong thời điểm bất ổn lịch sử, những tổn thất có thể xảy ra và giúp đưa ra quyết định để ngăn ngừa những tổn thất này.

Ngoài ra, từ quan điểm vận hành giao dịch định lượng, kiểm tra lại có thể giúp phát hiện các lỗi trong logic chiến lược, chẳng hạn như hàm tương lai, giá trộm, sự phù hợp nhiều lần, v.v.

  • Điều này có nghĩa là bạn sẽ không thể kiểm tra các tín hiệu giao dịch.
  • Hãy thử nghiệm logic giao dịch và xem ý tưởng của bạn có hiệu quả hay không.
  • Tìm ra các lỗ hổng trong hệ thống giao dịch và cải thiện chiến lược ban đầu.

Do đó, ý nghĩa của kiểm tra lại là lấy lại quá trình giao dịch thực tế bằng dữ liệu lịch sử, xác minh hiệu quả của chiến lược, tránh chi phí đắt đỏ cho các chiến lược sai và giúp chúng ta lọc, cải thiện và tối ưu hóa chiến lược giao dịch.

Bẫy kiểm tra lại

Một người đàn ông người Việt Nam nói với một người khác:

Chiến lược giao dịch dựa trên dữ liệu lịch sử tĩnh trong thời gian kiểm tra lại; trong khi dữ liệu giao dịch thực sự là động. Ví dụ: nếu giá cao nhất lớn hơn giá đóng cửa ngày hôm qua, hãy mua một vị trí mở. Điều kiện mở này trong đĩa thực, nếu đường K chưa kết thúc, thì giá cao nhất là động, tín hiệu giao dịch có thể nhấp nháy. Trong khi kiểm tra lại, công cụ kiểm tra lại dựa trên dữ liệu lịch sử tĩnh có thể mô phỏng tổng hợp giao dịch.

Phương thức tương lai của bẫy:

Chức năng tương lai là sử dụng giá tương lai, nghĩa là các điều kiện hiện tại có thể được sửa đổi trong tương lai, tương lai cũng có thể gây ra sự nhấp nháy tín hiệu. Vì vậy, bất kỳ chức năng nào cũng có tính chất của chức năng tương lai, chẳng hạn như chuyển từ sang chức năng .

Như hình dưới: hàm chuyển từ chỉ ra các điểm chuyển động của đỉnh sóng và thung lũng sóng, nó có thể điều chỉnh giá trị của mình theo giá thời gian thực mới nhất, nhưng nếu giá hiện tại thay đổi, kết quả tính toán của hàm chuyển từ cũng sẽ thay đổi. Nếu sử dụng hàm có hàm tương lai, tín hiệu đặt hàng hiện tại có thể được thành lập và đặt hàng, nhưng sau một thời gian, tín hiệu này có thể không được thành lập.imgHình 5-1

Đánh giá lại giá trộm bẫy

Việc ăn cắp giá là việc sử dụng giá quá khứ để giao dịch. Ví dụ: nếu giá cao nhất lớn hơn một mức giá cố định thì mua với giá mở. Điều kiện này là ăn cắp giá, bởi vì trong thực tế, khi giá cao nhất lớn hơn một mức giá, giá đã cao hơn mức giá mở một khoảng cách nhất định, khi đó không thể mua với giá mở.

Một trường hợp khác là nếu giá nhảy vọt cao hơn với giá cố định được thiết lập theo chiến lược, bạn có thể giao dịch ở mức giá cố định khi đánh giá lại, nhưng trong thực tế, giá cố định rõ ràng là không thể mua được.

Đánh giá lại giá không thể đạt được của bẫy

Những giá mà không thể thoả thuận được chia thành một số trường hợp: Thứ nhất: Trong thực tế, trong trường hợp dừng, bạn thường không thể mua, và ngược lại, bạn cũng có thể giảm. Nhưng trong lần kiểm tra lại, bạn có thể giao dịch.

Loại thứ hai: cơ chế chụp ảnh trên sàn giao dịch là: giá ưu tiên, thời gian ưu tiên. Một số loại giao dịch thường có số lượng lớn đơn đặt hàng, trong thực tế nếu giao dịch mua bán, bạn cần phải chờ đợi độ dày của giao dịch, trước khi giao dịch hoặc thậm chí không giao dịch. Nhưng trong lần kiểm tra lại, giao dịch mua bán có thể được giao dịch.

Cách thứ ba: nếu chiến lược lợi nhuận là cao, thì lợi nhuận được tính toán lại rất cao, bởi vì mỗi lần tính toán lại, bạn đã giả định nắm bắt những chênh lệch giá này. Trong trường hợp thực tế, rất nhiều chênh lệch giá không thể nắm bắt được, hoặc chỉ nắm bắt một chân, nói chung chắc chắn là không thuận lợi cho hướng của bạn, thì bạn cần phải giao dịch trước, sau đó bạn cần phải ngay lập tức để bổ sung chân khác, khi điểm trượt không phải là 1 hoặc 2 điểm, và chiến lược lợi nhuận chính nó sẽ đánh giá các chênh lệch giá vài điểm, tình huống này không thể mô phỏng trong tính toán lại. Lợi nhuận thực sự hoàn toàn không giống như tính toán lại.

Loại thứ tư: sự kiện thiên nga đen. Trong trường hợp thiên nga đen, mặc dù trên bề ngoài có giá mở, giá cao nhất, giá thấp nhất, giá đóng cửa, nhưng thực tế trong thị trường cực đoan của ngày đó, giá giữa là trống, nhiều lệnh dừng lỗ, gây ra sự kiện đạp chân, thanh khoản là không, giao dịch rất khó khăn, nhưng có thể dừng lỗ trong lần kiểm tra lại.imgHình 5 - 2

Phân tích tình trạng quá phù hợp của bẫy

Mỗi khi nhìn thấy hình dưới đây, tôi nghĩ: haha... Một mô hình vô lý, nếu đủ phức tạp, có thể phù hợp hoàn hảo với dữ liệu.imgHình 5 - 3

Đối với các giao dịch định lượng, tính toán lại dựa trên dữ liệu lịch sử, nhưng mẫu dữ liệu lịch sử bị hạn chế nếu các tham số của chiến lược giao dịch quá nhiều hoặc logic giao dịch quá phức tạp, dẫn đến chiến lược giao dịch quá thích nghi với dữ liệu lịch sử.

Quá trình mô hình hóa chiến lược định lượng về cơ bản là một quá trình tìm kiếm dữ liệu không ngẫu nhiên trong một lượng lớn dữ liệu dường như ngẫu nhiên, mà nếu không có kiến thức thống kê, dễ dàng rơi vào cái bẫy quá phù hợp.

Vì vậy, đừng tự lừa dối mình. Nếu bạn thấy dữ liệu ngoài mẫu không hoạt động tốt, và cảm thấy quá đáng để loại bỏ mô hình hoặc không muốn thừa nhận rằng mô hình của mình không thể hoạt động, và tiếp tục tối ưu hóa mô hình cho dữ liệu ngoài mẫu cho đến khi hoạt động tốt trên dữ liệu ngoài mẫu, thì vết thương cuối cùng chắc chắn là bạc vàng của bạn.

Phân tích sự lệch lạc của những người sống sót trong bẫy

Một câu đùa nổi tiếng trên Phố Wall là: giả sử có 1.000 con khỉ tham gia vào thị trường đầu tư, trong năm đầu tiên, loại bỏ 500 con khỉ bị thua; trong năm thứ hai, loại bỏ một nửa, còn lại 250 con khỉ; và đến cuối năm thứ ba, còn lại 125 con khỉ.imgHình 5-4

Đến năm thứ chín, chỉ còn lại một con búp bê cuối cùng. Rồi bạn nhìn vào, nhìn vào bên trái và bên phải, và bạn cảm thấy như thể bạn đã nhìn thấy nó. Cuối cùng, khi nhìn vào trang bìa của tạp chí tài chính, tôi đột nhiên nghĩ, ôi, ôi, đó không phải là Buffett!

Tất nhiên, đây chỉ là một trò đùa, nhưng bạn có nghĩ rằng nếu có 1000 nhà quản lý quỹ, sau 10 năm, khoảng 10 nhà quản lý quỹ sẽ giành chiến thắng trong thị trường 10 năm liên tục.

Giống như biểu đồ bên trái, tôi tin rằng hầu hết các nhà đầu tư sẽ có một kết quả tốt. Chiến lược đầu tư này hoạt động rất vững chắc và hầu như không có sự đảo ngược lớn.imgHình 5-5

Và chậm, như biểu đồ bên phải cho thấy, tình hình thực sự nằm trong đó. Đường cong kiểm tra ở bên trái chỉ là một trong những kết quả tốt nhất trong nhiều lần kiểm tra.

Đánh giá lại chi phí của một cái bẫy

Trong môi trường giao dịch thực tế, giá luôn biến động, và khi bạn nhìn thấy một cơ hội giao dịch, ngay khi đặt lệnh, giá có thể đã thay đổi. Vì vậy, vấn đề điểm trượt là không thể tránh khỏi, dù trong giao dịch chủ quan hay giao dịch định lượng.

Tuy nhiên, tính toán lại dựa trên dữ liệu tĩnh và rất khó mô phỏng môi trường giao dịch thực tế. Ví dụ: giá đặt hàng là 1050 mua, nhưng giá giao dịch thực tế có thể là 1051. Có nhiều nguyên lý gây ra hiện tượng này, chẳng hạn như: hố thanh khoản trong thời gian thị trường cực đoan, độ trễ mạng, hệ thống phần mềm, phần cứng, phản ứng máy chủ, v.v.

Kiểm tra lại điểm không trượt

imgHình 5-6

Như hình trên, là một điểm trượt không trượt, đường cong vốn trông khá tốt, nhưng giá giao dịch thực tế trong giao dịch thực có sự khác biệt với giá giao dịch lý tưởng trong việc trượt chiến lược. Vì vậy, để giảm thiểu sai lầm này, khi thực hiện việc trượt chiến lược, có thể đặt 2 điểm trượt để tăng giá mua hoặc giảm giá bán.

Thêm kiểm tra lại điểm trượt

imgHình 5-7.

Như hình trên, cùng một chiến lược, nếu cộng thêm 2 bước nhảy, kết quả của việc kiểm tra lại với kết quả của việc kiểm tra lại mà không thêm điểm trượt, rất khác nhau, thì điều đó cũng có nghĩa là chiến lược này cần được cải thiện hoặc loại bỏ thay thế mới. Đặc biệt là các chiến lược có tần suất giao dịch cao hơn, thêm 1-2 bước nhảy khi kiểm tra lại, có thể làm cho kiểm tra lại gần hơn với môi trường giao dịch thực sự.

Tóm lại

Có thể có một người bạn hỏi, vì số lượng giao dịch có thể gây ra rất nhiều vấn đề, thì làm thế nào tôi có thể chứng minh chiến lược của tôi là không có vấn đề? Thực tế là câu trả lời rất đơn giản, trước khi chiến lược thực hiện, bạn phải bắt chước giao dịch trong một thời gian, nếu giá giao dịch bắt chước giao dịch với giá giao dịch khi kiểm tra lại, thì chứng minh rằng chiến lược này không có vấn đề, ít nhất là chiến lược logic là không có vấn đề.

Dù sao thì, cho một nhà phát triển hệ thống giao dịch có kinh nghiệm, kiểm tra lại là điều cần phải làm. Vì nó có thể cho bạn biết một ý tưởng chiến lược có thể được chứng minh hiệu quả trong giao dịch lịch sử hay không. Nhưng nhiều lần, kiểm tra lại không có nghĩa là bạn sẽ có lợi nhuận trong tương lai. Bởi vì có quá nhiều lỗ hổng trong kiểm tra lại mà bạn không thể hiểu được.

Bài học sau giờ học

Một, những gì là quá phù hợp và làm thế nào để tránh? 2/ Những điều gì trong cuộc sống thực là sự lệch lạc của những người sống sót?

5.2 Làm thế nào để kiểm tra lại giao dịch định lượng

Tóm tắt

Ý nghĩa và tầm quan trọng của việc kiểm tra lại đã được đặt ra, trong khi thực hiện kiểm tra lại định lượng, chiến lược nên được đặt trong môi trường thực tế lịch sử càng nhiều càng tốt, nếu bỏ qua các chi tiết trong môi trường lịch sử, có thể khiến toàn bộ kiểm tra lại định lượng không hiệu quả. Bài viết này sẽ giải thích cho bạn cách thực hiện kiểm tra lại giao dịch định lượng.

Quá trình này tương đương với việc quay lại dữ liệu, bằng cách quay lại dữ liệu K-line lịch sử và mô phỏng các quy tắc giao dịch thực tế, cuối cùng tổng hợp dữ liệu về tỷ lệ Sharpe, tỷ lệ quay trở lại tối đa, tỷ lệ lợi nhuận hàng năm, đường cong vốn trong một khoảng thời gian. Hiện nay, có nhiều phần mềm có thể quay lại dữ liệu, chẳng hạn như tài chính văn hóa văn hóa đầy đủ, VNPY có thể tùy chỉnh linh hoạt, v.v.

Các nhà phát minh định lượng như một phần mềm giao dịch định lượng thương mại, mang theo một công cụ kiểm tra lại hiệu suất cao, sử dụng khuôn khổ kiểm tra lại for-loop, thực hiện tính toán định lượng theo chiều hướng, nhanh hơn; và thống nhất mã kiểm tra lại và thực, một phần giải quyết các vấn đề về kiểm tra lại dễ dàng, thực khó khăn.

Đánh giá giao diện

Chúng tôi đã sử dụng chiến lược ngôn ngữ của các nhà phát minh để định lượng các công cụ giao dịch của các nhà phát triển.www.fmz.comSau đó, hãy nhấp vào Control Center, Policy Library, Select a Policy, Analogue Retest, để truy cập vào các trang sau:imgHình 5-8.

Trong giao diện cấu hình kiểm tra lại, bạn có thể tùy chỉnh theo nhu cầu thực tế của mình. Ví dụ: thiết lập thời gian kiểm tra lại, chu kỳ đường K, loại dữ liệu ((dữ liệu cục bộ tương tự hoặc dữ liệu cục bộ thực tế); so với đó, dữ liệu cục bộ tương tự nhanh hơn và dữ liệu cục bộ thực tế chính xác hơn); Ngoài ra, bạn cũng có thể thiết lập phí thủ tục khi kiểm tra lại và số tiền ban đầu của tài khoản.

Các chiến lược của ngôn ngữ Ma trong công cụ giao dịch định lượng của nhà phát minh có hai phương pháp thực hiện truy cập lại, đó là: mô hình giá đóng cửa và mô hình giá thực tế. Mô hình giá đóng cửa chỉ thực hiện mô hình sau khi đường K hiện tại đi qua, thực hiện giao dịch khi đường K gốc dưới bắt đầu. Mô hình giá thực tế chỉ thực hiện mô hình một lần mỗi lần thay đổi giá, giao dịch ngay lập tức khi tín hiệu giao dịch được tạo ra.imgHình 5-9

Số lượng giao dịch mặc định là số lượng giao dịch được mở tại thời điểm kiểm tra lại, số lượng giao dịch duy nhất tối đa là số lượng giao dịch được ủy quyền cho công cụ kiểm tra lại. Giá giao dịch trên thực tế xuất hiện sự lệch giữa mức giá giao dịch và khoảng giá giao dịch được đặt trước, sự lệch này thường di chuyển theo hướng không thuận lợi cho nhà giao dịch, dẫn đến việc giao dịch gây ra tổn thất bổ sung, vì vậy việc thêm điểm trượt là bắt buộc, giao dịch tương lai hàng hóa trong nước thường được thêm 1-2 bước nhảy, thậm chí nhiều hơn nữa, để mô phỏng môi trường giao dịch thực sự.

Trong tùy chọn tương lai, hãy điền vào các loại hợp đồng để kiểm tra lại, chẳng hạn như rb000 hoặc rb888. Tùy chọn thực được sử dụng chủ yếu để giao dịch trên thực, bạn có thể giữ mặc định trong kiểm tra lại. Nếu tự động khôi phục tiến độ nhấp true, thì khi chính sách dừng robot trong hoạt động trên thực, robot sẽ tự động khôi phục vị trí tín hiệu trước đó mà không cần tính lại tín hiệu.imgHình 5-10

Tùy chọn giao dịch tại chỗ chủ yếu dành cho giao dịch tiền kỹ thuật số và có thể giữ cài đặt mặc định trong việc kiểm tra lại. Bạn có thể chỉ định khối lượng giao dịch đơn lẻ, khối lượng giao dịch tối thiểu, độ chính xác tiền định giá, độ chính xác các loại giao dịch, phí thủ tục, thời gian đồng bộ hóa tài khoản, khoảng cách thống kê lợi nhuận và tổn thất, và cũng có thể đặt số lần dẫn dắt và các cài đặt khác cho các sàn giao dịch tiền kỹ thuật số riêng lẻ.imgHình 5-11

Chiến lược kiểm tra lại

Trước khi kiểm tra lại, hãy xác định chiến lược giao dịch của bạn trước, ví dụ như chiến lược Thermostat, một chiến lược dựa trên tình trạng thị trường, sử dụng chiến lược xu hướng trong thị trường xu hướng, sử dụng chiến lược sốc trong thị trường sốc.imgHình 5-12 Trong giao diện kiểm tra lại tương tự, cấu hình cài đặt kiểm tra lại, chỉ cần nhấp vào nút bắt đầu kiểm tra lại, sau vài chục giây, kết quả kiểm tra lại sẽ được hiển thị ngay lập tức. Trong nhật ký kiểm tra lại, ghi lại số giây sử dụng kiểm tra lại, tổng nhật ký và số lần giao dịch. Thông tin tài khoản được in ra trong đó các chiến lược kiểm tra lại kết quả cuối cùng: lợi nhuận trung bình, lỗ, lỗ lưu trữ, tiền bảo hiểm, phí thủ tục và dự báo lợi nhuận.imgHình 5-13

Các thanh thông tin trạng thái ghi lại các loại giao dịch, khối lượng nắm giữ, giá nắm giữ, giá mới nhất, loại tín hiệu cuối cùng, giá cao nhất và thấp nhất sau khi nắm giữ, số lần và thời gian cập nhật và thông tin về số tiền. Ngoài ra, các nhãn lãi và lỗ nổi cho thấy đường cong tài chính chi tiết của tài khoản, cũng bao gồm các chỉ số hiệu suất phổ biến: tỷ lệ lợi nhuận, tỷ lệ lợi nhuận hàng năm, tỷ lệ Sharpe, tỷ lệ biến động hàng năm tối đa, tỷ lệ rút lại, cơ bản đáp ứng nhu cầu của hầu hết người dùng.

Trong số đó, chỉ số hiệu suất quan trọng nhất là: tỷ lệ Sharpe. Nó là một chỉ số tổng thể xem xét cả lợi nhuận và rủi ro, và cũng là một chỉ số tham khảo quan trọng để đo lường sản phẩm của một quỹ, nói chung là bạn chịu rủi ro bao nhiêu tiền cho mỗi xu, vì vậy giá trị của tỷ lệ Sharpe càng cao thì càng tốt.

Tỷ lệ biến động hàng năm, theo tên gọi, là tỷ lệ biến động hằng ngày x số ngày giao dịch mỗi năm, nó đo rủi ro của quỹ, nhưng chắc chắn không phải là tất cả rủi ro. Ví dụ, chiến lược A có tỷ lệ biến động lớn, nhưng luôn luôn biến động lên, lợi nhuận tốt, chiến lược B có tỷ lệ biến động nhỏ, nhưng luôn luôn đứng vững, chúng ta có thể nói rằng chiến lược B tốt hơn chiến lược A không?imgHình 5-14

Cuối cùng, trong bảng thông tin nhật ký, các chi tiết về từng giao dịch được ghi lại trong khi ghi lại bao gồm thời gian cụ thể của giao dịch, sàn giao dịch, mua bán và loại giao dịch mở, giá giao dịch được ghi lại, số lượng giao dịch và thông tin in, v.v.imgHình 5-15

Sau khi kiểm tra lại

Nhiều lần, thậm chí trong hầu hết các trường hợp, kết quả của việc kiểm tra lại sẽ khác xa so với mong đợi của bạn. Sau khi tất cả, một chiến lược lợi nhuận ổn định lâu dài không phải là dễ dàng để có được, nó đòi hỏi bạn phải có khả năng nhận thức thị trường.

Nếu chiến lược của bạn bị đánh giá lại là thua lỗ, cũng đừng lo lắng, điều này là rất bình thường. Hãy xem liệu chiến lược logic có bị viết sai hay không, liệu các tham số cực đoan đã được áp dụng hay không, liệu các điều kiện giao dịch đã được mở quá nhiều, v.v.

Nếu chiến lược của bạn có kết quả kiểm tra lại rất tốt, đường cong tiền tệ rất hoàn hảo, tỷ lệ Sharp vượt quá 1 hoặc nhiều hơn. Đừng vui vẻ trước khi gặp phải tình huống này, phần lớn là sử dụng các hàm tương lai, hoặc đánh cắp giá, hoặc quá phù hợp, hoặc không thiết lập điểm trượt, v.v.

Tóm lại

Dưới đây là toàn bộ quá trình kiểm tra lại chiến lược giao dịch, có thể nói là đã được xác định từng chi tiết. Cần lưu ý rằng, kiểm tra lại dữ liệu lịch sử là một môi trường lý tưởng mà tất cả các rủi ro được biết đến. Vì vậy, thời gian kiểm tra lại chiến lược tốt nhất là trải qua một vòng thị trường bò, số lần giao dịch hiệu quả không nên ít hơn 100 lần, để tránh một số sự lệch của người sống sót.

Thị trường luôn luôn thay đổi và phát triển, chiến lược được sử dụng trong quá khứ không có nghĩa là nó sẽ tốt hơn trong tương lai, và chiến lược không chỉ có thể đối phó với rủi ro được biết trong môi trường sử dụng lại mà còn đối phó với rủi ro chưa biết trong tương lai. Vì vậy, tăng khả năng chống rủi ro và khả năng phổ biến của chiến lược là rất cần thiết.

Bài học sau giờ học

1. Cố gắng sao chép các chính sách trong phần này và kiểm tra lại báo cáo hiệu suất 2. Cố gắng cải thiện và tối ưu hóa các chiến lược trong phần này dựa trên kinh nghiệm giao dịch của mình

5.3 Làm thế nào để đọc báo cáo về hiệu suất kiểm tra chiến lược

Tóm tắt

Sau khi hoàn thành đánh giá lại chiến lược của chúng tôi, các nhà phát minh của công cụ giao dịch định lượng sẽ xuất ra trong trang web có chứa các chỉ số hiệu suất khác nhau, biểu đồ đường cong lợi nhuận. Nhưng có thể vì chúng ta không quen thuộc với ý nghĩa và nội dung của các chỉ số này, dẫn đến việc không thể đánh giá tốt chiến lược, bài viết này sẽ bắt đầu từ các khái niệm chỉ số chính để giúp mọi người đọc báo cáo đánh giá lại chiến lược, phân biệt những ưu điểm và nhược điểm của chiến lược. Tất nhiên, hầu hết các công cụ giao dịch định lượng đều có báo cáo đánh giá lại hiệu suất như vậy, nội dung của chúng cũng rất khác nhau, và bạn sẽ học được nội dung của phần này, ngay cả khi chuyển sang một công cụ giao dịch khác cũng có thể áp dụng.

Đánh giá khách quan và toàn diện

Bất kể là bản ghi dữ liệu giao dịch thực tế hay báo cáo kiểm tra lại bằng dữ liệu lịch sử, giá trị của mô hình được đánh giá bằng số liệu thống kê về tình hình giao dịch.

Câu hỏi đặt ra là, chúng ta cần so sánh bằng những số liệu thống kê nào? Hãy xem một ví dụ: Giả sử chúng ta có hai tập dữ liệu sau trong cùng một khoảng thời gian, chúng ta có thể xác định mô hình nào hoạt động tốt hơn?imgHình 5-16

Câu trả lời là không. Một khía cạnh của hệ thống đánh giá sẽ dẫn đến hệ thống giao dịch định lượng bị mất đi.

Hệ thống giao dịch phải có khả năng sử dụng thông qua truy cập lại lịch sử. Hệ thống giao dịch không có khả năng truy cập lại lịch sử không thể có lợi nhuận lâu dài trong giao dịch thực tế.

Một hệ thống giao dịch có thể được xem xét qua lịch sử không nhất thiết là một hệ thống giao dịch hữu ích, nhưng một hệ thống giao dịch không có thể được xem xét qua lịch sử thì chắc chắn không phải là một hệ thống giao dịch hữu ích. Nói chung, chúng ta cần phải phân tích báo cáo hiệu suất từ góc độ ổn định, bền vững, xem liệu nó có mong đợi hay không.imgHình 5-17

Như hình trên, nhưng bất kỳ thương nhân nào tiếp xúc với định lượng có thể gặp phải những thuật ngữ dữ liệu về hiệu suất kiểm tra lâu dài, khó hiểu, thậm chí trong dữ liệu hiệu suất, nhiều dữ liệu mâu thuẫn với nhau.

Các thuật ngữ chỉ số hiệu suất trong biểu đồ trên, nói chung, có thể được chia thành một vài loại: tỷ lệ hiệu suất, phân tích chu kỳ, các đường cong khác nhau, phân tích giao dịch cực đoan, vv. Ngay cả từ góc độ nghiêm ngặt của các sản phẩm quỹ, hầu hết chỉ là hiển thị kết quả tính toán kiểm tra lại, thực tế không có ý nghĩa gì nhiều, ví dụ: nhu cầu tài chính tài khoản, thu nhập giữ, giới hạn niềm tin, vv.

Các chỉ số hiệu suất quan trọng

Tỷ lệ rút vốn tối đa (Max Drawdown)

Phương pháp tính toán ngược tối đa là như trên, cho


Có liên quan

Thêm nữa

Hailhydra2Bài viết tuyệt vời!

Khả năng định lượngđánh dấu