Mục lục
Chương 1 Cơ bản về giao dịch định lượng
1.1 Giao dịch định lượng là gì?
bản tóm tắt
Giao dịch định lượng, là sản phẩm kết hợp giữa khoa học và máy móc, đang thay đổi bối cảnh của thị trường tài chính hiện đại. Hiện nay nhiều nhà đầu tư đã chú ý tới lĩnh vực này. Làm thế nào để giảm thiểu rủi ro và đạt được lợi nhuận tốt nhất có thể? Đây cũng là mục đích của loạt bài học này. Là bài viết đầu tiên, chúng tôi sẽ giải thích ngắn gọn về "Giao dịch định lượng là gì".
Tổng quan
Khi nhiều người nghe thuật ngữ “giao dịch định lượng”, họ nghĩ rằng đó là nghề cao cấp và có thể giúp họ trở nên giàu có chỉ sau một đêm. Kỷ nguyên trí tuệ nhân tạo, cùng với sự phát triển của các công nghệ tiên tiến như học sâu, dữ liệu lớn và điện toán đám mây, đã mang đến cho nó một màu sắc bí ẩn. Có vẻ như chỉ cần sử dụng giao dịch định lượng thì có thể xây dựng được một chiến lược giao dịch "hoàn hảo".
Trên thực tế, ở một mức độ nào đó, giao dịch định lượng đã trở thành một huyền thoại. Bỏ qua giao dịch, "lượng hóa" thực chất là việc sử dụng máy tính, số liệu thống kê, toán học và các phương pháp khác, thông qua hệ thống đầu tư khoa học, để tìm ra một tập hợp các hệ thống tín hiệu giao dịch dự kiến. Hệ thống tín hiệu này sẽ cho chúng ta biết khi nào và ở mức giá nào nên mua và bán.
Sự phát triển của giao dịch định lượng
Quay trở lại nguồn gốc, người đầu tiên sử dụng các phương pháp định lượng để phân tích những thay đổi dữ liệu và khám phá ra các mô hình biến động giá thị trường không phải là người Hà Lan, nơi khai sinh ra chứng khoán, cũng không phải người Anh - người thúc đẩy tài chính hiện đại, cũng không phải người Mỹ - những người đã cùng tồn tại với tài chính kể từ khi đất nước này được thành lập, mà là một người Pháp.
Ngay từ thế kỷ 18, Jules Regnault, một trợ lý môi giới chứng khoán người Pháp, đã đề xuất lý thuyết hiện đại về sự thay đổi giá cổ phiếu. Sau đó, ông xuất bản cuốn sách "Tính toán xác suất và triết lý giao dịch chứng khoán", trong đó ông trình bày chi tiết về quy luật lên xuống của thị trường (phân phối chuẩn) mà ông phát hiện ra: "Độ lệch của giá tỷ lệ thuận với căn bậc hai của thời gian", và cuối cùng đã đạt được thành công trong giao dịch thông qua các quyết định đầu tư hợp lý và định lượng.
Ngày nay, trong thời đại Internet + dữ liệu lớn + điện toán đám mây + trí tuệ nhân tạo, giao dịch định lượng cũng đã phát triển nhanh chóng. Canary Wharf của London, từng là trung tâm tài chính toàn cầu, từ lâu đã trở thành trung tâm của các công ty CNTT. Các ngân hàng đầu tư hàng đầu thế giới cũng đang xây dựng các nhóm định lượng của riêng mình, cố gắng tham gia vào cuộc chiến tài chính "ai nắm được mô hình thì thắng thế giới". Các nhóm CNTT phát triển mô hình giao dịch này cũng được gọi là Nhóm định lượng. Xét về quy mô, Hoa Kỳ là nước đi đầu sớm hơn và hiện đã có một số lượng lớn các quỹ đầu cơ định lượng mạnh.
Ngược lại, ở Trung Quốc, cả thiết bị phần cứng và năng lực nghiên cứu đầu tư đều đang ở giai đoạn đầu. Tuy nhiên, ngày càng nhiều tổ chức và nhà đầu tư chuyên nghiệp nhận ra lợi ích của giao dịch định lượng và tham gia vào lĩnh vực này. Đặc biệt là khi sự giám sát ngày càng chặt chẽ và hiệu quả thị trường dần được cải thiện, giao dịch định lượng có nhiều không gian phát triển hơn.
Đặc điểm của giao dịch định lượng
Xác minh khoa học: Hãy tưởng tượng rằng khi bạn có một hệ thống giao dịch, nếu bạn sử dụng một hệ thống giao dịch mô phỏng để kiểm tra hiệu quả của nó, có thể sẽ tốn rất nhiều thời gian. Nếu bạn kiểm tra trực tiếp bằng một hệ thống giao dịch thực, bạn có thể mất tiền thật. Tuy nhiên, chức năng kiểm tra ngược trong giao dịch định lượng có thể được sử dụng để kiểm tra hệ thống giao dịch theo cách khoa học thông qua lượng lớn dữ liệu lịch sử. Hãy để dữ liệu nói lên điều gì hiệu quả và điều gì không, thay vì chỉ chạy theo đám đông.
Khách quan và chính xác: Trong giao dịch, kẻ thù thực sự của chúng ta là chính chúng ta. Kiểm soát tâm lý của mình nói thì dễ hơn làm. Những điểm yếu của con người như lòng tham, nỗi sợ hãi và sự may mắn sẽ được phóng đại lên nhiều lần trên thị trường giao dịch. Giao dịch định lượng có thể giúp chúng ta khắc phục những điểm yếu này và đưa ra quyết định tốt hơn trong giao dịch.
Đúng giờ và hiệu quả: Trong giao dịch chủ quan, tốc độ phản ứng của con người không thể nhanh hơn máy tính, sức mạnh thể chất và năng lượng của con người không thể hoạt động 24 giờ một ngày. Trong thị trường giao dịch nơi cơ hội thoáng qua, giao dịch định lượng có thể thay thế hoàn toàn giao dịch chủ quan, tìm kiếm cơ hội giao dịch và theo dõi biến động thị trường một cách kịp thời và nhanh chóng.
Kiểm soát rủi ro:Giao dịch định lượng không chỉ có thể khám phá các mô hình lịch sử có thể lặp lại trong tương lai từ dữ liệu lịch sử mà các mô hình lịch sử này còn là những chiến lược có xác suất chiến thắng cao hơn. Bạn cũng có thể xây dựng nhiều danh mục đầu tư khác nhau để giảm rủi ro hệ thống và làm phẳng đường cong tài trợ.
Chiến lược giao dịch cổ điển cho giao dịch định lượng là gì?
Chiến lược đột phá mở đầu
Nửa giờ đầu tiên sau khi mở cửa thường có thể xác định xu hướng trong ngày. Chiến lược này sử dụng giá là đường dương hay đường âm trong vòng nửa giờ sau khi mở cửa làm tiêu chuẩn để đánh giá xu hướng trong ngày. Nếu là đường dương, hãy mở vị thế mua; nếu là đường âm, hãy mở vị thế bán và đóng vị thế trong vòng vài phút trước khi đóng. Đây là một chiến lược giao dịch rất đơn giản.
Chiến lược kênh Donchian
Hình 1-1 Sơ đồ chiến lược kênh Donchian
Chiến lược Kênh Donchian có thể được coi là tổ tiên của giao dịch trong ngày. Các quy tắc của nó là: mua nếu giá hiện tại cao hơn giá cao nhất của các đường N K trước đó và bán nếu giá hiện tại thấp hơn giá thấp nhất của các đường N K trước đó. Quy tắc giao dịch Turtle nổi tiếng sử dụng phiên bản sửa đổi của chiến lược Donchian Channel.
Chiến lược chênh lệch giá xuyên thời kỳ
Trọng tài chéo kỳ là loại giao dịch trọng tài phổ biến nhất. Nó dựa trên giá của các hợp đồng có tháng giao hàng khác nhau cho cùng một sản phẩm giao dịch. Nếu có sự chênh lệch giá lớn giữa hai mức giá, bạn có thể mua và bán các hợp đồng tương lai của các kỳ khác nhau cùng một lúc để thực hiện trọng tài chéo kỳ. Giả sử chênh lệch giá giữa hợp đồng chính và hợp đồng chính thứ cấp vẫn ở mức khoảng -50~50 trong một thời gian dài. Nếu mức chênh lệch đạt 70 vào một ngày nào đó, chúng tôi dự kiến mức chênh lệch sẽ trở lại mức 50 vào một thời điểm nào đó trong tương lai. Sau đó, bạn có thể bán hợp đồng chính và mua hợp đồng chính thứ cấp cùng lúc để bán khống chênh lệch giá. ngược lại.
Tóm tắt
Ở trên, chúng tôi đã giới thiệu tóm tắt các khái niệm liên quan đến giao dịch định lượng từ góc độ định nghĩa, phát triển, đặc điểm và chiến lược giao dịch cổ điển.
Hiểu về giao dịch định lượng là bước đệm quan trọng trên con đường trở thành một nhà giao dịch định lượng. Cuối cùng, tôi chúc mọi người có thể làm giàu cho bản thân trong thị trường giá xuống và hiện thực hóa kiến thức sớm nhất có thể! Hãy nhớ rằng, bạn chỉ cần vượt qua một thị trường tăng giá là có thể đạt được tự do tài chính!
Xem trước phần tiếp theo
Sự khác biệt giữa giao dịch định lượng và giao dịch truyền thống là gì? Trong giao dịch thực tế, chúng ta nên chọn giao dịch truyền thống hay giao dịch định lượng? Ở phần tiếp theo, chúng ta sẽ trả lời hai câu hỏi này để hiểu rõ hơn về giao dịch định lượng.
Bài tập về nhà
- Hãy mô tả ngắn gọn giao dịch định lượng là gì trong một câu?
- Đặc điểm của giao dịch định lượng là gì?
1.2 Tại sao nên chọn giao dịch định lượng
bản tóm tắt
Nhiều người sử dụng lập trình chiến lược phức tạp làm điểm khởi đầu khi thảo luận về giao dịch định lượng, vô tình tạo nên bức màn bí ẩn bao trùm lên giao dịch định lượng. Trong phần này, chúng tôi sẽ cố gắng tạo một "phác thảo" đơn giản về giao dịch định lượng bằng ngôn ngữ dễ hiểu để khám phá bí ẩn của nó. Tôi tin rằng ngay cả một người mới bắt đầu không có kiến thức cơ bản cũng có thể dễ dàng hiểu được.
Sự khác biệt giữa giao dịch định lượng và giao dịch chủ quan
Giao dịch chủ quan chú trọng hơn đến phân tích của con người và cảm nhận thị trường. Ngay cả khi tín hiệu mua và bán xuất hiện, lệnh sẽ được đặt một cách có chọn lọc. Mọi người thà bỏ lỡ thị trường còn hơn mắc lỗi. Cảm xúc của con người rất phức tạp, dễ thay đổi và không đáng tin cậy. Khi hầu hết các nhà giao dịch trải qua những lần thua lỗ liên tiếp, họ có xu hướng chuyển sang phương pháp khác. Giao dịch này có tính ngẫu nhiên cao và dễ bị ảnh hưởng bởi lãi hoặc lỗ, khiến việc tạo ra lợi nhuận ổn định trở nên khó khăn.
Giao dịch định lượng phát triển các chiến lược mua và bán nhất quán thông qua việc hiểu biết về các giao dịch. Trong giao dịch, hãy đối xử với mọi xu hướng như nhau và xử lý các vị thế mở và đóng một cách có hệ thống. Thà mắc lỗi còn hơn bỏ lỡ. Nó cũng có một hệ thống đánh giá hoàn chỉnh, xác định loại thị trường và sản phẩm nào phù hợp hơn với chiến lược thông qua việc kiểm tra lại dữ liệu lịch sử và đạt được lợi nhuận bằng cách kết hợp nhiều chiến lược và sản phẩm.
Nói tóm lại, giao dịch chủ quan là cơ sở của giao dịch định lượng và giao dịch định lượng là sự tinh chỉnh của giao dịch chủ quan. Giao dịch chủ quan giống như luyện võ vậy. Cuối cùng bạn có thể thành công hay không phần lớn phụ thuộc vào tài năng của bạn. Một số người có thể không đạt được giác ngộ sau mười năm, trong khi những người khác có thể đạt được giác ngộ trong một ngày. Giao dịch định lượng giống như thể dục hơn. Chỉ cần bạn chăm chỉ, bạn có thể xây dựng cơ bắp ngay cả khi bạn không có tài năng.
Giao dịch định lượng có tốt hơn giao dịch chủ quan không?
Theo một nghĩa nào đó, một nhà giao dịch chủ quan thành công cũng là một nhà giao dịch định lượng. Bởi vì một nhà giao dịch chủ quan thành công phải có bộ quy tắc và phương pháp riêng, tức là một hệ thống giao dịch. Giao dịch chủ quan thành công phải dựa trên kỷ luật giao dịch và các quy tắc giao dịch, và phần thực hiện các quy tắc giao dịch thực chất là phần định lượng của giao dịch chủ quan.
Ngược lại, một nhà giao dịch định lượng thành công cũng phải là một nhà giao dịch chủ quan xuất sắc, bởi vì sự phát triển của các chiến lược giao dịch định lượng thực chất là sự kết tinh triết lý giao dịch của một người. Nếu nhận thức và hiểu biết của một người về thị trường sai ngay từ đầu thì chiến lược giao dịch được xây dựng sẽ khó có thể tạo ra lợi nhuận trong thời gian dài.
Do đó, xét về mặt lợi nhuận, yếu tố chính quyết định thành công của một nhà giao dịch chính là triết lý giao dịch, chứ không phải là giao dịch chủ quan hay giao dịch định lượng. Giao dịch định lượng có vẻ cao siêu trên bề mặt, nhưng bản chất lợi nhuận của nó không khác gì giao dịch chủ quan về bản chất. Chúng giống như hai mặt của một thứ, vừa đối lập vừa thống nhất.
Nhưng không thể phủ nhận rằng giao dịch định lượng có nhiều lợi thế về mặt công cụ giao dịch.
Đánh giá nhanh hơn:Nếu bạn muốn thử nghiệm một chiến lược giao dịch, bạn cần tính toán một lượng lớn dữ liệu lịch sử. Giao dịch định lượng có thể tính toán kết quả trong vòng vài phút. Tốc độ này nhanh hơn nhiều lần so với giao dịch chủ quan.
Khoa học hơn:Để đánh giá một chiến lược có tốt hay không, chúng tôi dựa vào dữ liệu (như tỷ lệ Sharpe, tỷ lệ rút vốn tối đa, lợi nhuận hàng năm) thay vì những kẻ lừa đảo ích kỷ.
Nhiều cơ hội hơn:Trên thế giới có hàng ngàn sản phẩm giao dịch. Không thể theo dõi thị trường cùng một lúc đối với giao dịch chủ quan, nhưng giao dịch định lượng có thể theo dõi toàn bộ thị trường theo thời gian thực, không bỏ lỡ bất kỳ cơ hội giao dịch nào và tăng lợi nhuận.
Giao dịch định lượng có thực sự kiếm được tiền không?
Tất nhiên là bạn có thể, nhưng rất khó để duy trì thói quen đó trong thời gian dài. Việc bạn kiếm được tiền hay không không phụ thuộc vào giao dịch định lượng, nó chỉ là một công cụ. Giao dịch định lượng chỉ triển khai các ý tưởng giao dịch theo cách được lập trình, thường xuyên và định lượng. Chương trình chỉ thay thế khả năng thực hiện. Phần khó là kiếm tiền ổn định trong dài hạn, vì thị trường là một trò chơi và thay đổi liên tục, và ý tưởng giao dịch cũng phải thay đổi theo thị trường.
Rủi ro của giao dịch định lượng
Giao dịch định lượng cũng có rủi ro, tại sao? Bởi vì giao dịch định lượng là về việc khám phá các mô hình trong dữ liệu lịch sử và hình thành các chiến lược giao dịch. Tuy nhiên, thị trường tài chính là một hệ thống sinh thái, và luật lệ cũng như bản chất con người của nó là một quá trình động tương tác. Trong phân tích cuối cùng, nó vẫn là một thị trường của con người. Quy luật của thị trường sẽ bị ảnh hưởng bởi bản chất con người, và lòng tham và nỗi sợ hãi trong bản chất con người sẽ thay đổi theo những thay đổi của thị trường. Có rất ít quy luật bất biến trên thị trường, và cho dù chiến lược giao dịch có mạnh mẽ đến đâu, cũng khó có thể ứng phó với những thay đổi đột ngột như vậy của quy luật.
Tóm tắt
Từ lời giải thích trên, chúng ta có thể thấy rằng giao dịch định lượng không phải là phương pháp giao dịch độc đáo, nó chỉ là một công cụ giao dịch giúp chúng ta phân tích logic giao dịch và cải thiện các chiến lược giao dịch. Cho dù bạn là nhà đầu tư giá trị hay nhà đầu tư kỹ thuật, cho dù bạn đang đầu tư vào cổ phiếu, trái phiếu, hàng hóa hay quyền chọn, thì mọi thứ đều có thể được định lượng. So với các nhà giao dịch đưa ra quyết định dựa trên kinh nghiệm cá nhân, vũ khí trong tay các nhà giao dịch định lượng là bằng chứng thị trường và tính hợp lý.
Xem trước phần tiếp theo
Lượng hóa chỉ là một phương pháp giao dịch, chiến lược chỉ là phương tiện truyền tải ý tưởng giao dịch và chương trình thực hiện từng quy trình giao dịch. Phần tiếp theo sẽ đưa bạn đi qua toàn bộ vòng đời của giao dịch định lượng, bao gồm: hình thành chiến lược, xây dựng mô hình, kiểm tra ngược và điều chỉnh, giao dịch mô phỏng, giao dịch thực tế, theo dõi chiến lược, v.v.
Bài tập về nhà
- Sự khác biệt quan trọng nhất giữa giao dịch định lượng và giao dịch chủ quan là gì?
- Ưu điểm của giao dịch định lượng so với giao dịch chủ quan là gì?
1.3 Bạn cần chuẩn bị những gì cho giao dịch định lượng?
bản tóm tắt
Một vòng đời giao dịch định lượng hoàn chỉnh không chỉ là chiến lược giao dịch. Nó bao gồm ít nhất sáu liên kết, bao gồm: hình thành chiến lược, xây dựng mô hình, kiểm tra ngược và điều chỉnh, giao dịch mô phỏng, giao dịch thực tế, theo dõi chiến lược, v.v.
Tư duy chiến lược
Trước hết, để thực hiện giao dịch định lượng, trước tiên bạn phải quay lại thị trường giao dịch, quan sát giá cả trên thị trường nhiều hơn, hiểu rõ quy luật biến động của thị trường, cố gắng suy ra logic của từng giao dịch và cuối cùng là tóm tắt lại chiến lược giao dịch. Không có lối tắt nào ở đây. Bạn có thể cần đọc sách đầu tư kinh điển hoặc tiếp tục giao dịch và học hỏi từ những thất bại của mình.
Đối với người mới bắt đầu giao dịch định lượng, cách tốt nhất để phát triển chiến lược giao dịch ngay từ đầu là bắt chước. Sử dụng trực tiếp các chỉ báo phân tích kỹ thuật hiện có để xây dựng logic chiến lược và viết các quy tắc mua và bán, để bạn có thể có được một chiến lược đơn giản. Giả sử chiến lược giao dịch của bạn là: mua nếu giá cao hơn giá trung bình của 10 ngày qua và bán nếu giá thấp hơn giá trung bình của 10 ngày qua. Khi đó kiến trúc của nó như sau (như hình dưới đây):

Hình 1-2 Ví dụ về chiến lược giao dịch
Tất nhiên, khi bạn tích lũy được kinh nghiệm về chiến lược và hình thành phương pháp giao dịch của riêng mình, các lựa chọn hợp lý của bạn sẽ ngày càng đa dạng hơn và bạn sẽ tiến tới giao dịch định lượng có hệ thống hơn. Nếu bạn có thể là một nhà giao dịch có tư duy định lượng, dù là trên thị trường chứng khoán hay tương lai, thì đó là một điều may mắn, bởi vì một người như vậy có thể duy trì và ổn định lợi nhuận bất kể họ tham gia vào thị trường giao dịch nào.
Xây dựng mô hình
Thứ hai, bạn cần thành thạo công cụ giao dịch định lượng để viết chiến lược giao dịch và hiện thực hóa ý tưởng giao dịch của mình. Có thể sử dụng bất kỳ phần mềm nào thông dụng trên thị trường. Nhưng nếu bạn muốn trở thành một nhà giao dịch định lượng cao cấp, bạn cần phải học
Biết một ngôn ngữ máy tính. Tôi khuyên bạn nên dùng Python vì đây là ngôn ngữ chính thức cho máy tính khoa học.
Nó cũng cung cấp nhiều gói phân tích nguồn mở, xử lý tệp, mạng, cơ sở dữ liệu, v.v.
Nếu khả năng lập trình của bạn yếu, được cho là điểm yếu của hầu hết người mới bắt đầu, thì bạn nên sử dụng ngôn ngữ lập trình trực quan tương đối đơn giản hoặc ngôn ngữ Mai, điều này có thể giúp bạn hứng thú hơn với việc học giao dịch định lượng và cho phép bạn tập trung vào các chiến lược và hoàn thiện quá trình phát triển chiến lược một cách hiệu quả. Như hình dưới đây: Sử dụng ngôn ngữ Mai, phát triển chiến lược giao dịch như đã đề cập ở trên. Nhấp đúp vào hình ảnh để xem các bình luận chi tiết trong mã chiến lược.

Hình 1-3 Trang phát triển chiến lược giao dịch
Mã chiến lược trong hình trên được minh họa bằng ngôn ngữ Mai của công cụ định lượng của nhà phát minh. Nó tích hợp nhiều mô-đun chức năng có thể sử dụng trực tiếp và hỗ trợ chức năng kiểm tra ngược và giao dịch thực tế. Đây là cách tốt để bắt đầu nhanh chóng.
Kiểm tra ngược và điều chỉnh
Sau khi viết mô hình chiến lược, bước tiếp theo là kiểm tra lại chiến lược, cũng như sàng lọc và tối ưu hóa các tham số. Bạn có thể sử dụng các tham số khác nhau để kiểm tra lại chiến lược và quan sát tỷ lệ Sharpe, mức giảm tối đa, lợi nhuận hàng năm, v.v. của chiến lược. Bằng cách liên tục gỡ lỗi và sửa đổi chiến lược, cuối cùng chúng ta sẽ có được một chiến lược giao dịch định lượng hoàn chỉnh.
Ví dụ, chúng tôi lấy dữ liệu lịch sử năm 2017 làm dữ liệu trong mẫu và dữ liệu lịch sử năm 2018 làm dữ liệu ngoài mẫu. Đầu tiên, chúng tôi sử dụng dữ liệu năm 2017 để tối ưu hóa một số bộ tham số có hiệu suất tốt, sau đó sử dụng các tham số này để tối ưu hóa năm 2018.
Kiểm tra ngược dữ liệu. Nhìn chung, kết quả kiểm tra ngược ngoài mẫu không tốt bằng kết quả kiểm tra ngược trong mẫu. Tuy nhiên, nếu kết quả ngoài mẫu và trong mẫu rất khác nhau thì chiến lược gần như không hiệu quả và cần phải quan sát và phân tích để xác định lý do chiến lược thất bại.
Giả sử chúng ta thấy rằng chiến lược này thất bại do dữ liệu ngoài mẫu và các khoản lỗ lớn là do một số điều kiện thị trường khắc nghiệt gây ra, thì chúng ta có thể thêm điều kiện dừng lỗ cố định để tránh rủi ro này; nếu chúng ta thấy rằng chiến lược này thất bại do quá nhiều giao dịch, thì chúng ta có thể thắt chặt logic giao dịch một chút và giảm tần suất giao dịch.
Cần lưu ý rằng nếu logic giao dịch ban đầu sai, sẽ rất khó để có được chiến lược có lợi nhuận cho dù bạn có sửa đổi nó nhiều đến đâu. Lúc này, bạn cần xem xét lại tư duy chiến lược của mình. Ngoài ra, trong tối ưu hóa tham số, càng có nhiều nhóm tham số khả dụng thì càng tốt, điều này cho thấy chiến lược này có khả năng áp dụng rộng rãi. Khi kiểm tra ngược, các chiến lược có quá ít giao dịch có thể mắc phải sai lầm “sống sót”. Nếu kết quả của backtest là đường cong quỹ siêu lợi nhuận
Trong nhiều trường hợp, logic của bạn là sai.
Giao dịch mô phỏng
Sau đó, khi bạn có được một chiến lược với logic giao dịch đúng đắn và có lợi nhuận cả trong và ngoài mẫu, đừng vội giao dịch trên tài khoản thực. Đặc biệt đối với người mới bắt đầu, cần phải chạy một tài khoản mô phỏng trong ít nhất 3 tháng. Nếu là chiến lược qua đêm có tần suất trung bình hoặc thấp, sẽ cần thời gian giao dịch mô phỏng dài hơn.
Trong một thị trường mô phỏng hoàn toàn không xác định trong tương lai, hãy quan sát hiệu suất của chiến lược trong giao dịch mô phỏng, kiểm tra cẩn thận xem tín hiệu kiểm tra ngược có phù hợp với tín hiệu giao dịch mô phỏng hay không và liệu có độ lệch giữa giá khi đặt lệnh và giá khi giao dịch hoàn tất hay không. Nếu hiệu suất phù hợp với kỳ vọng, thì điều đó có nghĩa là chiến lược có hiệu quả.
Giao dịch thực tế
Cuối cùng, sau khi thử nghiệm chiến lược trong một thời gian dài, đã đến lúc áp dụng vào giao dịch thực tế. Tất nhiên, chúng ta cũng phải luôn cảnh giác và đề phòng những điều kiện thị trường cực đoan trong quá trình giao dịch định lượng. Trong giao dịch thực tế, kỳ vọng của một chiến lược thường bị bỏ qua và việc đạt được 50% kỳ vọng được coi là đủ điều kiện.
Giám sát chính sách
Cuối cùng, tôi cần nhắc nhở mọi người rằng khi giao dịch tiến triển, chúng ta cũng phải quan sát hiệu quả của chiến lược. Khi chúng ta thấy rằng chiến lược có mức lỗ vượt quá mong đợi, chúng ta phải đánh giá lại chiến lược. Vì đặc điểm thị trường sẽ thay đổi nên các chiến lược chúng ta hình thành hiện nay chủ yếu hướng đến các đặc điểm thị trường trong quá khứ. Khi đặc điểm thị trường thay đổi, mô hình chiến lược phải được điều chỉnh kịp thời, nếu không chiến lược phải tạm thời bị đình chỉ.
Tóm tắt
Trong bài viết này, chúng tôi giải thích toàn bộ quá trình giao dịch định lượng. Tóm lại, nếu bạn là nhà đầu tư có kinh nghiệm thị trường, điều sẽ cản trở bạn là những điều cơ bản về ngôn ngữ máy tính. Bạn có thể bắt đầu bằng ngôn ngữ hình ảnh hoặc ngôn ngữ Mai, tự đào tạo trên nền tảng này, xây dựng chiến lược và sau đó dần dần chuyển sang giao dịch định lượng cao cấp Python.
Nếu bạn là sinh viên khoa học và kỹ thuật hoặc chuyên gia CNTT có kỹ năng lập trình mạnh, điều cản trở bạn sẽ là kinh nghiệm đầu tư thị trường. Đừng đánh giá thấp điểm này. Là một nhà đầu tư định lượng đủ tiêu chuẩn, cả hai loại kiến thức đều không thể thiếu.
Xem trước phần tiếp theo
Cốt lõi của toàn bộ vòng đời giao dịch định lượng vẫn là chiến lược giao dịch. Ở phần tiếp theo, chúng tôi sẽ trình bày chi tiết các yếu tố của một chiến lược giao dịch hoàn chỉnh theo góc nhìn của khuôn khổ chiến lược giao dịch. Điều này sẽ giúp bạn xây dựng chiến lược giao dịch toàn diện hơn và đưa giao dịch định lượng lên một tầm cao mới!
Bài tập về nhà
- Cố gắng viết chiến lược giao dịch trong phần này bằng ngôn ngữ Mai.
- Chỉ số hiệu suất quan trọng nhất trong thử nghiệm giao dịch định lượng là gì?
1.4 Các yếu tố của một chiến lược hoàn chỉnh là gì?
bản tóm tắt
Một chiến lược hoàn chỉnh thực chất là một loạt các quy tắc mà các nhà giao dịch tự đặt ra. Nó bao gồm tất cả các khía cạnh của giao dịch và không để lại chỗ cho trí tưởng tượng chủ quan của các nhà giao dịch. Chiến lược sẽ đưa ra câu trả lời cho mọi quyết định mua và bán. Ít nhất nó bao gồm việc lựa chọn chiến lược, lựa chọn sản phẩm, quản lý vốn, đặt lệnh, phản ứng với điều kiện thị trường khắc nghiệt, tâm lý giao dịch, v.v.
Lựa chọn chiến lược
Theo quan điểm của các quỹ đầu cơ, các chiến lược giao dịch chính thống có thể được chia thành giao dịch theo xu hướng, giao dịch theo cặp, giao dịch theo rổ, giao dịch theo sự kiện, giao dịch tần suất cao, chiến lược quyền chọn, v.v., như thể hiện trong hình bên dưới. Tất nhiên, cách phân loại chiến lược không cố định.

Hình 1-4 Phân loại chiến lược giao dịch
Đối với người mới bắt đầu giao dịch định lượng, bạn không cần phải lo lắng về nhiều thuật ngữ và khái niệm. Chỉ cần bắt đầu từ bước đơn giản nhất. Nếu tôi chỉ đề xuất một chiến lược giao dịch định lượng cho người mới bắt đầu thì đó là giao dịch theo xu hướng, vì nó đơn giản và hiệu quả. Tôi tin rằng ngay cả khi bạn không học kiến thức tài chính một cách có hệ thống, bạn vẫn có thể giao dịch tốt. Và chiến lược này đã tồn tại trong một thời gian dài, trong các chiến lược giao dịch công khai ban đầu, và nó vẫn hiệu quả trên nhiều thị trường ngày nay vì bản chất con người khó thay đổi.
Mua và bán cái gì
Bất kỳ ai đã từng giao dịch đều biết rằng mỗi loại đều có tính cách riêng. Một số giống có tính cách rất "nóng", thanh khoản tốt, biến động lớn và độ biến động cao; một số giống có tính cách rất "ngoan ngoãn", dao động trong một phạm vi nhất định quanh năm và độ biến động thấp.
Do đó, khi lựa chọn sản phẩm giao dịch, bạn phải có khái niệm về tính biến động. Các sản phẩm có tính biến động cao thường dễ dàng phát triển theo xu hướng tốt. Đối với hàng hóa tương lai, nếu là chiến lược theo dõi xu hướng, hãy thử chọn sản phẩm công nghiệp. Về mặt thuộc tính sản phẩm, sản phẩm công nghiệp có xu hướng biến động lớn hơn sản phẩm nông nghiệp.
Mỗi chiến lược thích ứng với các điều kiện thị trường khác nhau và việc lựa chọn sản phẩm giao dịch phù hợp là bước khởi đầu rất quan trọng cho dự án giao dịch tương lai lớn. Theo nghĩa tuyệt đối, không có giống nào hoàn toàn tốt hay giống nào hoàn toàn xấu. Tùy thuộc vào phong cách đầu tư và khả năng chấp nhận rủi ro, bạn cần phải điều chỉnh các tiêu chuẩn của riêng mình cho phù hợp.
Mua và bán bao nhiêu
Giao dịch thì dễ mất tiền nhưng kiếm tiền thì khó. Khi tiền trong tài khoản mất 50%, cần phải có lợi nhuận 100% để bù đắp khoản lỗ. Ngay cả khi bạn có thể kiếm được 100% lợi nhuận nhiều lần, bạn chỉ cần mất 100% một lần là mất hết. Do đó, một chiến lược giao dịch trưởng thành phải bao gồm quản lý tiền.
Để mọi người dễ hiểu hơn, chiến lược đường trung bình động từ phần trước cũng được sử dụng ở đây. Trên thực tế, nhiều chiến lược giao dịch được xây dựng bằng các chỉ báo kỹ thuật truyền thống thường có tỷ lệ giảm vốn tối đa là hơn 50% hoặc thậm chí hơn. Nhưng một chiến lược cực kỳ rủi ro mà hoàn toàn không khả thi thì sao?
Rõ ràng là không, tỷ lệ rút tiền tối đa có thể được kiểm soát hoàn toàn thông qua quản lý quỹ. Nếu vị thế giảm một nửa, rủi ro chung cũng sẽ giảm một nửa và tỷ lệ rút tiền tối đa sẽ là 30%. Nếu vị thế giảm một nửa nữa, tỷ lệ rút tiền tối đa sẽ là 15%. Cuối cùng, chúng ta có được một chiến lược với tỷ lệ rút tiền tối đa được kiểm soát ở mức khoảng 15%. Đây là một phương pháp quản lý tiền đơn giản và thô sơ. Nhiều người biết rằng họ không thể hoạt động với vị trí đầy đủ, nhưng họ không biết tại sao họ không thể hoạt động với vị trí đầy đủ. Câu trả lời ở đây.
Khi nào nên mua và bán
Một điểm mua tốt đóng góp một nửa thành công vì nó có thể giúp bạn nhanh chóng thoát khỏi vùng giá đắt đỏ. Nhưng không ai có thể nói với bạn rằng bắt đầu từ điểm này là đúng và bắt đầu từ điểm kia là sai. Mở một vị thế không phải là cốt lõi của giao dịch. Cốt lõi của giao dịch là làm thế nào để tối ưu hóa vị thế càng nhiều càng tốt sau khi mở một vị thế.
Cho dù là chiến lược ngắn hạn hay dài hạn, điều quan trọng không phải là ai nắm giữ vị thế lâu hơn mà là tỷ lệ rủi ro-lợi nhuận. Nói cách khác, kết quả cuối cùng ảnh hưởng đến hiệu suất chiến lược là cách thoát ra và thời điểm thu được lợi nhuận. Phương pháp thoát lệnh có thể được chia thành hai loại: thoát lệnh dừng lỗ và thoát lệnh chốt lời. Hai phần này cần thiết cho bất kỳ hệ thống giao dịch nào và cũng là những bước ngoặt quan trọng quyết định sự thành công hay thất bại của một chiến lược giao dịch.
Làm thế nào để mua và bán
1. Loại và phương thức đặt hàng:
Có nhiều loại và phương pháp đặt lệnh, chẳng hạn như: sử dụng lệnh giới hạn hàng đợi, giá đối ứng, giá mới nhất, giá vượt giá, giá giới hạn trên, giá giới hạn dưới, mua giá đầu tiên, mua giá thứ hai, bán giá đầu tiên, bán giá thứ hai, hoặc sử dụng giá hàng đợi trước rồi đến giá vượt giá, đặt lệnh theo đợt hoặc chia các lệnh lớn thành các lệnh nhỏ hoặc chỉ cần đặt tất cả các lệnh trực tiếp.
2. Hủy đơn hàng
Nếu lệnh không được thực hiện, bạn nên tiếp tục chờ hay hủy lệnh? Điều kiện hủy dựa trên thời gian. Ví dụ, nếu không có giao dịch nào trong vòng 10 giây và giá cách giá khi đặt lệnh 10 bước nhảy, bạn nên tiếp tục chờ, hủy lệnh hay theo dõi lệnh.
3. Lệnh theo dõi
Khi một lệnh không được thực hiện, có nên tiếp tục thực hiện lệnh đó không. Nếu bạn theo đuổi một lệnh, bạn nên theo đuổi nó dựa trên giá mới nhất, giá của đối tác hay giới hạn giá? Nếu lệnh theo đuổi chưa được thực hiện, bạn có nên tiếp tục theo đuổi lệnh không?
4. Giới hạn giá
Tôi phải làm gì khi tín hiệu lệnh xuất hiện và đó là mức giá giới hạn trên hoặc giới hạn dưới? Có nên xếp hàng để thực hiện lệnh ở mức giá giới hạn trên và dưới hay không và phải làm gì nếu không có lệnh nào được thực hiện.
5. Gọi Đấu giá
Bạn có nên tham gia phiên đấu giá mở màn không và tham gia như thế nào?
6. Giao dịch ban đêm
Đối với một số hợp đồng tương lai hàng hóa, giao dịch ban đêm diễn ra từ 21:00 đến 02:30 ngày hôm sau. Trong thời gian này, bạn có thể chọn thực hiện thủ công hoặc bằng máy tính.
7. Các lễ hội lớn
Bạn có cần giữ nguyên vị thế của mình trước những kỳ nghỉ lễ dài trong các lễ hội lớn không? Làm thế nào để kiểm soát rủi ro nếu giữ lại.
Điều kiện thị trường cực đoan
-
Biến động giá lớn trong thời gian ngắn
Cách xử lý các tình huống như giới hạn giá tức thời, giới hạn giá liên tục, lệnh sai, giá thị trường tăng giảm thất thường, v.v. -
Rủi ro thanh khoản
Nếu bên đối tác không có khối lượng lệnh mà bạn mong muốn nhưng bạn cần hoàn tất giao dịch đúng thời hạn, đặc biệt khi tính thanh khoản của các hợp đồng không chính rất kém, lệnh bạn đặt dễ gây ảnh hưởng đến thị trường và trượt giá lớn, bạn nên xử lý như thế nào? -
Thay đổi trong luật đa dạng
Các sản phẩm tương lai hàng hóa được thêm vào giao dịch ban đêm, tỷ lệ ký quỹ được tăng lên và phí xử lý được tăng lên. Các chiến lược ngắn hạn, nói riêng, sẽ rất nhạy cảm với những thay đổi này. -
Rủi ro về môi trường giao dịch
Ví dụ: cách ứng phó khi xảy ra tình trạng mất điện đột ngột, mất Internet, hỏng máy tính, phần mềm bị sập, tạm dừng chuyển tiền tương lai qua ngân hàng, thiên tai, v.v.
Xác suất xảy ra tình huống trên là rất nhỏ, hoặc gần như không thể. Nhưng nếu điều đó có thể xảy ra thì nó sẽ xảy ra. Cần phải đưa ra những giả định này và thực hiện các biện pháp phòng ngừa.
Xây dựng tâm lý
Ba cảm xúc tâm lý chính thường gặp trong giao dịch là lòng tham, nỗi sợ hãi và sự may mắn. Các nhà đầu tư cần một hệ thống tâm lý giao dịch mạnh mẽ để kiểm soát và thậm chí tận dụng ba cảm xúc trên ở các giai đoạn khác nhau.
Trước khi giao dịch, bạn phải có kỳ vọng chung cho tương lai, bao gồm kỳ vọng của thị trường và kỳ vọng tâm lý đối với sản phẩm. Kỳ vọng của thị trường đề cập đến mục tiêu rõ ràng về vị thế và hướng đi tương lai của thị trường, còn kỳ vọng về sản phẩm đề cập đến cơ hội giao dịch và trạng thái rủi ro của sản phẩm ở vị thế hiện tại. Nếu không có nền tảng tâm lý nêu trên, sẽ không thể đạt được điều gì.
Toàn bộ quá trình giao dịch thực sự là quá trình phân tích, điều chỉnh và thực hiện liên tục. Không mất nhiều thời gian cho giao dịch, nhưng cần nhiều thời gian hơn cho việc theo dõi và kiên nhẫn. Đây là một quá trình kiểm tra toàn diện về mặt tâm lý và kiểm tra bản chất con người. Tất cả các thói quen của nhà giao dịch sẽ được hiển thị đầy đủ và phóng đại trong quá trình giao dịch. Chỉ bằng cách không ngừng học hỏi, đúc kết kinh nghiệm, bài học và không ngừng tích lũy kinh nghiệm, chúng ta mới có thể khắc phục được những điểm yếu về tư duy và tâm lý thường gặp của bản chất con người.
Tóm tắt
Tóm lại, cái gọi là chiến lược giao dịch thực ra là như thế này. Nó có mặt hoàn hảo và mặt chưa hoàn thiện. Khi chúng ta đánh giá xem một chiến lược giao dịch có hợp lý hay không, chúng ta không thể chỉ nhìn vào mặt hoàn hảo hay mặt chưa hoàn thiện của nó. Chúng ta nên phân tích toàn diện tính toàn vẹn của chiến lược.
Cuối cùng, dựa trên đặc điểm của chiến lược, kết hợp với tính cách và tình hình tài chính của riêng bạn, hãy đánh giá xem chiến lược có phù hợp với bạn không. Nếu nó phù hợp với bạn, bạn nên đánh giá đầy đủ khả năng bạn sẽ tuân thủ nó như thế nào và lập kế hoạch cho kết quả tệ nhất trước. Nếu bạn đã nghĩ đến kịch bản tệ nhất, thì khả năng thực hiện nó là tương đối cao.
Hãy nhớ rằng, trong giao dịch, sự tự tin đến từ sự công nhận chân thành của bạn, và sự tự tin đến từ triết lý giao dịch đúng đắn!
Xem trước phần tiếp theo
Đây là bài viết cuối cùng của chương đầu tiên. Trong chương tiếp theo, chúng tôi sẽ giải thích thêm về các công cụ giao dịch định lượng, bao gồm: giới thiệu chung về các công cụ định lượng, cách cấu hình hệ thống giao dịch định lượng, giải thích API phổ biến và cách viết chiến lược trên hệ thống định lượng.
Bài tập về nhà
- Chiến lược giao dịch theo xu hướng nên chọn sản phẩm có độ biến động cao hay sản phẩm có độ biến động thấp?
- Có những loại lệnh giao dịch nào?
Chương 2 Giới thiệu về các công cụ định lượng
2.1 Giới thiệu chung về các công cụ định lượng
bản tóm tắt
Ở chương trước, chúng ta đã tìm hiểu về các khái niệm liên quan đến giao dịch định lượng và có được hiểu biết cơ bản về giao dịch định lượng. Vậy những công cụ giao dịch định lượng trên thị trường là gì? Chúng ta nên lựa chọn thế nào theo nhu cầu của mình?
Phần mềm nguồn mở và thương mại
Các công cụ giao dịch định lượng trong nước thường có thể được chia thành hai loại: phần mềm nguồn mở và phần mềm thương mại. Cái gọi là phần mềm nguồn mở có thể hiểu là phần mềm có mã nguồn mở và có thể tải trực tiếp xuống để sử dụng; phần mềm thương mại thường đề cập đến phần mềm nguồn đóng do các công ty thương mại bảo trì và vận hành, thường được trả phí.
Phần mềm định lượng nguồn mở
Trước hết, phần mềm nguồn mở có tính linh hoạt cao và hoàn toàn miễn phí. Người dùng về cơ bản có thể sử dụng phần mềm này để triển khai bất kỳ chức năng nào, cho dù đó là chiến lược giao dịch tần suất trung bình hoặc thấp, chiến lược chênh lệch giá hay chiến lược quyền chọn, có thể đạt được thông qua các mô-đun tùy chỉnh. Vì người dùng kiểm soát mã nguồn của phần mềm và có thể hiểu mọi ngóc ngách của phần mềm nên nó đáng tin cậy và an toàn hơn.
Mặc dù phần mềm nguồn mở có nhiều ưu điểm nhưng không thân thiện lắm với người mới bắt đầu giao dịch định lượng. Bạn cần phải học một cách có hệ thống một ngôn ngữ lập trình chuẩn như Python, Java hoặc C++. Từ lúc bắt đầu cho đến khi từ bỏ, bạn có thể tưởng tượng được nó khó khăn như thế nào. Đôi khi, việc gỡ lỗi có thể khiến bạn nghi ngờ cuộc sống của mình. Và không giống như phần mềm thương mại, có dịch vụ chăm sóc khách hàng chuyên nghiệp để trả lời câu hỏi của bạn ngay lập tức. Lúc này, bạn không những không cảm thấy có thành tựu gì mà còn nản lòng không muốn tiếp tục học nữa.
Do đó, theo quan điểm học tập, người mới bắt đầu giao dịch định lượng được khuyến nghị nên bắt đầu từng bước, bắt đầu với phần mềm thương mại đơn giản nhất. Mặc dù phải trả phí, nhưng nếu chiến lược có lợi nhuận, phí phần mềm chỉ là một phần nhỏ lợi nhuận. Hơn nữa, phần mềm thương mại thường được duy trì bởi một nhóm và độ trưởng thành của nó chắc chắn mạnh hơn nhiều so với phần mềm nguồn mở.
Phần mềm định lượng kinh doanh
Có hàng chục phần mềm thương mại phục vụ giao dịch định lượng tại Trung Quốc, chẳng hạn như: Interactive Broker, chuyên nghiệp, toàn diện và có nhiều sản phẩm; APAMA, có thể xử lý dữ liệu đồng thời lớn và phù hợp với giao dịch tần suất cao; SPT, hỗ trợ giao diện C++ và có hiệu quả thực hiện tốt; Nuggets Quantitative, tập trung vào thực hiện giao dịch và kiểm soát rủi ro; và MC, TB và MQ dành cho các nhà giao dịch cá nhân. Trong hình dưới đây, chúng tôi đã tiến hành đánh giá toàn diện các nền tảng định lượng trong nước chính thống và cũng đưa ra một số phân loại về độ khó của các công cụ định lượng. Bạn đọc có thể lựa chọn theo tình hình thực tế của mình.

Hình 2-1 Đánh giá toàn diện các nền tảng định lượng trong nước chính thống
Mặc dù những phần mềm trên là phần mềm thương mại, nhưng chúng cũng sử dụng ngôn ngữ lập trình hoặc ngôn ngữ kịch bản chuẩn. Thay vì làm như vậy, tốt hơn là sử dụng trực tiếp phần mềm nguồn mở miễn phí và an toàn. Người mới bắt đầu nên sử dụng trực tiếp FMZ Inventor Quantitative Platform, trang web là www.fmz.com. Là bước đệm để học giao dịch định lượng.
Gặp gỡ người phát minh ra công cụ giao dịch định lượng
Các công cụ định lượng của nhà phát minh này thân thiện với người mới bắt đầu. Ngay cả khi bạn không có kiến thức cơ bản, bạn vẫn có thể trải nghiệm được sự quyến rũ của phân tích định lượng dựa trên các công cụ trong đó. Công cụ này được thiết kế cho giao dịch tần suất cao và có yêu cầu nghiêm ngặt về hiệu suất và bảo mật. Hỗ trợ các chiến lược tần suất cao, chiến lược chênh lệch giá và chiến lược xu hướng. Và nó tích hợp toàn bộ quy trình phát triển chiến lược, thử nghiệm, tối ưu hóa, mô phỏng và giao dịch thực tế. Ngoài ra, nó còn hỗ trợ cả ngôn ngữ Mai đơn giản, dễ sử dụng và các ngôn ngữ giao dịch định lượng nâng cao như Python và C++, giúp bạn có thể chuyển đổi liền mạch sau một lần học. Và chỉ giao dịch thực tế được tính phí 0,125 nhân dân tệ/giờ, giúp giảm chi phí phần mềm của bạn trong giai đoạn học. Đồng thời, bạn có thể thực hiện giao dịch mô phỏng miễn phí.
Thực hiện bước đầu tiên hướng tới định lượng: sử dụng các công cụ định lượng
Các công cụ định lượng rất dễ sử dụng. Bạn chỉ cần vào trang web và nhấp vào đó để thiết kế chiến lược định lượng của riêng bạn. Bạn có thể đăng nhập vào trang web chính thức của Inventor Quantitative Tool, đăng ký và đăng nhập, sau đó nhấp vào trung tâm điều khiển để sử dụng (như hình bên dưới). Nó tương tự như TikTok đang phổ biến hiện nay. Sau khi đăng ký và đăng nhập, bạn có thể đăng video ngắn của riêng mình và sau khi đăng nhập vào công cụ định lượng, bạn có thể thiết kế chiến lược giao dịch định lượng của riêng mình.

Hình 2-2 Trang chủ của nền tảng giao dịch định lượng FMZ
Sẽ có một khu vực chức năng tập trung để lập trình các công cụ định lượng. Khu vực chức năng chủ yếu bao gồm (như hình dưới đây). Trung tâm điều khiển ở góc trên bên trái là chức năng cốt lõi của công cụ định lượng. Sau khi nhấp vào đó, bạn có thể viết chiến lược giao dịch và kiểm tra ngược chiến lược, thiết lập sàn giao dịch để giao dịch sản phẩm, tạo người giám hộ để quản lý robot chiến lược và tạo robot giao dịch định lượng cụ thể. Về cách sử dụng cụ thể của các hàm, chúng tôi sẽ giới thiệu chi tiết trong các bài viết tiếp theo. Hiện tại, chúng tôi chỉ đang thực hiện công việc sơ bộ.

Hình 2-3 Trang quản lý sau khi đăng nhập vào nền tảng giao dịch định lượng FMZ
Những người mới tham gia nghiên cứu định lượng không cần phải nản lòng vì không hiểu mã và lập trình. Để hạ thấp ngưỡng cho người dùng, cộng đồng chính thức đã sản xuất nhiều video hướng dẫn giúp người mới bắt đầu giao dịch định lượng bắt đầu nhanh chóng; đồng thời, Strategy Square tổng hợp hàng nghìn chiến lược giao dịch miễn phí và công khai của bên thứ ba và chính thức để mọi người sao chép và học hỏi.
Ngoài ra, các mẫu chiến lược cổ điển cũng được cấu hình trong giao diện chỉnh sửa chiến lược. Bạn có thể trực tiếp sử dụng mã chiến lược bằng cách nhấp vào nó và dễ dàng trải nghiệm quy trình cốt lõi của toàn bộ giao dịch định lượng. Ngay cả người dùng mới cũng có thể học ngay lập tức và làm theo!
Trước khi giao dịch bằng tiền thật, giao dịch mô phỏng cũng là một bước không thể thiếu. Giao dịch mô phỏng của công cụ này tuân thủ các quy tắc giao dịch và hoàn toàn miễn phí. Thời gian, giá cả, khối lượng lệnh, v.v. được đưa vào mô phỏng đều khớp với thị trường thực tế theo thời gian thực, rất phù hợp với giao dịch thực tế. Cải thiện đáng kể hiệu quả xác minh chiến lược.
Tóm tắt
Cho dù là phần mềm mã nguồn mở hay phần mềm thương mại, không có sự phân biệt giữa tốt và xấu, và không có công cụ giao dịch định lượng hoàn hảo. Mỗi công cụ đều có trọng tâm riêng. Điều quan trọng nhất là chọn công cụ phù hợp với bạn theo nhu cầu của bạn. Phần mềm thương mại yêu cầu phải trả phí, có dịch vụ tốt hơn, v.v. và có thể phù hợp hơn với những người mới bắt đầu bước vào ngành này. Nếu bạn đã hoạt động trong ngành này một thời gian dài và tích lũy được nhiều kinh nghiệm hoặc cần triển khai các chiến lược giao dịch phức tạp hơn thì phần mềm nguồn mở là lựa chọn tốt hơn.
Xem trước phần tiếp theo
Sử dụng các công cụ như thế nào? Giống như khi chúng ta mua một chiếc điện thoại di động mới và cần thực hiện các thiết lập khởi động đơn giản khi bật điện thoại lần đầu tiên, các công cụ định lượng cũng cần các thiết lập và cấu hình cơ bản. Trong phần tiếp theo, chúng tôi sẽ hướng dẫn bạn từng bước để cấu hình công cụ giao dịch định lượng Inventor. Mở ra cánh cửa đầu tiên cho giao dịch định lượng, bao gồm: thêm sàn giao dịch, thêm đơn vị lưu ký, tạo chiến lược giao dịch, tạo robot định lượng, v.v. Sau khi hoàn tất cấu hình cơ bản, bạn có thể chính thức viết chiến lược định lượng đầu tiên của mình.
Bài tập về nhà
- Hai loại công cụ giao dịch định lượng chính là gì?
- Những ngôn ngữ lập trình định lượng thường được sử dụng là gì?
2.2 Cách cấu hình Hệ thống giao dịch định lượng Inventor
bản tóm tắt
Khi phát triển các chiến lược giao dịch định lượng, điều đầu tiên cần làm là cấu hình các công cụ giao dịch. Cấu hình là gì? Thực ra nó chỉ là cài đặt. Trong phần này, chúng tôi sẽ hướng dẫn bạn cách thiết lập sàn giao dịch, tạo chiến lược giao dịch và tạo robot giao dịch định lượng, đây đều là những điều kiện tiên quyết cần thiết cho giao dịch định lượng.
Cấu hình được chia thành cấu hình giao dịch mô phỏng học tập cấp độ đầu vào và cấu hình giao dịch thời gian thực. Trong danh mục này, chúng tôi chủ yếu tập trung vào hợp đồng tương lai hàng hóa trong nước. Các loại hình đầu tư định lượng khác không được khuyến nghị hoặc giới thiệu do các điều kiện trong nước cụ thể, nhưng quy trình vận hành thì giống nhau, chỉ có quy trình cấu hình là khác nhau.
Thêm sàn giao dịch
Thêm một trao đổi là bước đầu tiên trong toàn bộ quá trình cấu hình. Vui lòng xem hình bên dưới để biết quy trình cụ thể. Ở bước này, chúng tôi cần nhấn mạnh rằng việc thêm một sàn giao dịch không hề khó đối với những người không chắc mình thuộc sàn giao dịch nào. Nên mô phỏng việc học trước.

Hình 2-4 Đăng ký nền tảng giao dịch định lượng FMZ và các bước thêm sàn giao dịch
Cấu hình Sàn giao dịch hàng hóa tương lai (Trực tiếp)
Giao dịch định lượng thời gian thực của chúng tôi chủ yếu tập trung vào các sản phẩm giao dịch tương lai trong nước. Hiện tại, đối tượng dịch vụ chính của Inventor Quantitative cũng là các sàn giao dịch tương lai trong nước. Đối với những người bạn làm ngoại hối, Inventor Quantitative có thể được sử dụng làm nền tảng học tập, vì giao dịch định lượng ngoại hối đã xuất hiện trên các nền tảng như MT5, nhưng nó chuyên nghiệp hơn.
Các vấn đề cần lưu ý trong cấu hình thời gian thực như sau: Vì các công cụ định lượng của nhà phát minh hỗ trợ nhiều thị trường giao dịch nên khi cấu hình hợp đồng tương lai hàng hóa, trước tiên bạn phải chọn "hợp đồng tương lai truyền thống" ở bước 1; ở bước 2, bạn cần điền tài khoản hợp đồng tương lai và mật khẩu do công ty hợp đồng tương lai nơi bạn mở tài khoản cung cấp.
Công cụ định lượng của nhà phát minh áp dụng giao thức CTP và hỗ trợ tất cả các công ty tương lai trong nước. Khi cấu hình thị trường thực, sẽ không có lỗi liên kết trừ khi tài khoản và mật khẩu sai. Do đó, người mới bắt đầu nên chú ý kiểm tra tài khoản và mật khẩu rõ ràng.

Hình 2-5 Nền tảng giao dịch định lượng FMZ bổ sung sàn giao dịch tương lai
Cấu hình Sàn giao dịch hàng hóa tương lai (Mô phỏng)
Đối với những người mới tham gia giao dịch hàng hóa tương lai, tôi khuyên bạn nên mô phỏng giao dịch trong một khoảng thời gian trước, vì trong quá trình phát triển các chiến lược giao dịch định lượng, cần phải liên tục thử nghiệm, gỡ lỗi và tối ưu hóa. Cũng giống như lái xe, bạn chắc chắn sẽ phải dành vài tháng để học ở trường lái xe lúc đầu, sau đó bạn có thể lái xe trên đường sau khi vượt qua kỳ thi và có được giấy phép.
Ở đây chúng tôi khuyên bạn nên sử dụng giao dịch mô phỏng SimNow. SimNow là nền tảng giao dịch mô phỏng tài chính do Shangqi Technology tạo ra dành riêng cho các nhà đầu tư. Sản phẩm này mô phỏng các quy tắc giao dịch và thanh toán của nhiều sàn giao dịch khác nhau và hiện đang hỗ trợ hoạt động kinh doanh hàng hóa tương lai của nhiều sàn giao dịch tương lai trong nước. Để biết quy trình cụ thể, vui lòng xem hình bên dưới.

Hình 2-6 Trang quản lý nền tảng giao dịch định lượng FMZ sau khi đăng nhập
Viết chiến lược
Thư viện chiến lược là nơi lưu trữ các mã, tương đương với kho chiến lược giao dịch định lượng của chúng tôi. Nó chủ yếu được chia thành hai chức năng: viết chiến lược và kiểm tra ngược mô phỏng. Khu vực viết chiến lược là khu vực làm việc chính của chúng tôi để phát triển chiến lược trong tương lai (như hình dưới). Nhiều người mới bắt đầu thường bị chặn bởi nhiều mã khác nhau và thấy rất khó khăn. Trên thực tế, chỉ cần bạn chú ý một chút, bạn có thể học được những mã này. Không có bất kỳ gánh nặng tâm lý nào. Khu vực kiểm thử ngược mô phỏng có thể được sử dụng để gỡ lỗi các chiến lược trong quá trình phát triển chiến lược, cũng như để kiểm tra các chiến lược sau khi quá trình phát triển chiến lược hoàn tất. Chúng tôi sẽ giải thích chi tiết về điều này trong các chương sau.

Hình 2-7 Các bước để tạo chính sách
Tạo ra một robot giao dịch định lượng
Robot giao dịch định lượng là người thực hiện chiến lược giao dịch. Sau khi chiến lược được tạo, hãy tạo một robot có thể tự động giúp bạn thực hiện mọi logic giao dịch trong mã chiến lược, cũng như mở và đóng vị thế, rút lệnh và các hoạt động mua và bán khác. Các bước cụ thể để tạo robot giao dịch định lượng như sau: Đầu tiên, bước ①: Trên trang trung tâm điều khiển, nhấp vào "Robot", nhấp vào "Tạo Robot" Bước ②: Đặt tên tùy chỉnh cho robot. Bước 3: Nhấp vào dấu “+” để thêm nền tảng giao dịch. Bước 4: Nhấp vào "Tạo Robot"

Hình 2-8 Các bước để tạo ra một robot
Tóm tắt
Trong quy trình trên, ngoại trừ bước đầu tiên là lựa chọn giao dịch thực tế và mô phỏng, các bước tiếp theo là viết chiến lược và tạo robot giao dịch là các bước thống nhất. Toàn bộ công cụ định lượng đã được cấu hình, robot giao dịch đã chạy và sẽ thực hiện các hoạt động mua và bán theo các điều kiện cụ thể của chiến lược. Có ba bước để cấu hình giao dịch định lượng: thêm sàn giao dịch và điền mật khẩu tài khoản tương lai của bạn; viết chiến lược giao dịch; và tạo robot giao dịch định lượng thời gian thực. Có phải đơn giản không?
Xem trước phần tiếp theo
Mặc dù giao dịch định lượng có thể đạt được chỉ trong ba bước đơn giản, nhưng bạn có thể thấy rằng việc thêm sàn giao dịch và tạo robot giao dịch định lượng rất dễ dàng. Tuy nhiên, việc thực hiện một chiến lược giao dịch khả thi không hề dễ dàng. Ở phần tiếp theo, chúng tôi sẽ đưa bạn tìm hiểu các API thường dùng trong giao dịch định lượng để chuẩn bị cho việc viết một chiến lược giao dịch khả thi. Bởi vì bất kể sử dụng công cụ giao dịch định lượng nào thì cũng không thể tách rời khỏi giao diện API, đây là chức năng quan trọng để hiện thực hóa các chiến lược giao dịch định lượng.
Bài tập về nhà
- Thử thêm một sàn giao dịch.
- Cố gắng viết chiến lược giao dịch trong phần này.
2.3 Giải thích API phổ biến
bản tóm tắt
Khi nói đến lập trình, chúng ta không thể tránh khỏi API. Đối với nhiều người không phải dân CNTT, API chính xác là gì? API ≈ Tôi không hiểu. Trong phần này, chúng tôi sẽ giải thích bằng ngôn ngữ dễ hiểu API là gì và giới thiệu các API thường được sử dụng trong các công cụ định lượng.
API là gì?
Nếu bạn tìm kiếm trực tuyến, bạn sẽ nhận được những kết quả sau: API (Giao diện lập trình ứng dụng) là một tập hợp các hàm được xác định trước nhằm mục đích cung cấp cho các ứng dụng và nhà phát triển khả năng truy cập vào một tập hợp các thói quen dựa trên phần mềm hoặc phần cứng nhất định mà không cần phải truy cập vào mã nguồn hoặc hiểu chi tiết về cơ chế hoạt động bên trong. Vậy, nói một cách đơn giản hơn, API chính xác là gì?
Trên thực tế, trong cuộc sống hàng ngày, chúng ta có nhiều tình huống tương tự như API. Ví dụ, khi bạn đến nhà hàng để ăn, bạn chỉ cần nhìn vào thực đơn và gọi món, mà không cần biết món đó được chế biến như thế nào. Tên món ăn trong thực đơn là các API cụ thể và thực đơn là tài liệu API.
API trong giao dịch định lượng là gì?
Nếu bạn cần biết giá mở cửa của sản phẩm hiện tại ngày hôm nay, bạn không cần biết cách lấy nó. Bạn chỉ cần viết "OPEN" trong trình soạn thảo mã và sử dụng trực tiếp. "OPEN" là API của giá mở cửa trong ngôn ngữ Mai.
API ngôn ngữ Mai thường được sử dụng
Trước khi giải thích về API Ngôn ngữ Mai, chúng ta hãy xem xét cấu trúc mã chung và các thành phần chức năng của nó. Điều này sẽ giúp bạn hiểu rõ hơn về API. Xem ví dụ bên dưới:

Hình 2-9 Ví dụ ngôn ngữ Mai
Như được hiển thị trong đoạn mã trên:
AA màu tím là một biến số. Biến số là một đại lượng có thể thay đổi, giống như đại số chúng ta đã học ở trường trung học cơ sở. Nếu giá mở cửa được gán cho AA, thì AA là giá mở cửa; nếu giá cao nhất được gán cho AA, thì AA là giá cao nhất. Tất nhiên, AA chỉ là tên tùy chỉnh, bạn cũng có thể định nghĩa nó là BB.
Dấu “:=" màu xanh lá cây có nghĩa là phép gán, tức là gán giá trị ở bên phải dấu “:=" cho biến bên trái.
Mã màu cam là API ngôn ngữ Mai của Inventor Quantitative Tool. Lưu ý rằng OPEN ở dòng đầu tiên là API để lấy giá đóng cửa, có thể sử dụng trực tiếp; MA ở dòng thứ hai là API để lấy đường trung bình động, yêu cầu phải truyền vào hai tham số, nghĩa là bạn cần cho Inventor Quantitative Tool biết loại đường trung bình động nào bạn cần: nếu bạn muốn lấy đường trung bình động 50 kỳ được tính toán dựa trên giá mở cửa, bạn có thể viết như sau: MA(OPEN,50); lưu ý rằng có dấu phẩy tiếng Anh giữa hai tham số.
“//” màu vàng là biểu tượng chú thích, và các ký tự tiếng Trung màu xanh lam đằng sau là nội dung chú thích. Những ký tự này để bạn tự đọc và được sử dụng để chỉ ra ý nghĩa của dòng mã. Chương trình không xử lý các bình luận khi đang chạy. Lưu ý rằng trước ký tự chú thích, mỗi dòng mã phải có dấu chấm phẩy tiếng Anh ở cuối dòng.
Với những hiểu biết cơ bản về cấu trúc mã, chúng tôi sẽ giới thiệu đến các bạn một số ngôn ngữ thường dùng dưới đây và chúng ta cũng sẽ sử dụng những ngôn ngữ này thường xuyên trong tương lai.
MỞ——Nhận giá mở cửa của K-line mới nhất
Ví dụ: AA: =OPEN; Lấy giá mở cửa của K-line mới nhất và gán kết quả cho AA
CAO——Nhận mức giá cao nhất của dòng K mới nhất
Ví dụ: AA: =HIGH; Lấy giá cao nhất của K-line mới nhất và gán kết quả cho AA
THẤP——Nhận mức giá thấp nhất của dòng K mới nhất
Ví dụ: AA: =LOW; Lấy giá thấp nhất của dòng K mới nhất và gán kết quả cho AA
ĐÓNG——Nhận giá đóng cửa mới nhất của K-line. Khi K-line trong ngày chưa kết thúc, hãy nhận giá mới nhất
Ví dụ: AA: =CLOSE; Lấy giá đóng cửa của K-line mới nhất và gán kết quả cho AA
VOL——Nhận khối lượng giao dịch K-line mới nhất
Ví dụ: AA: =VOL; Lấy khối lượng giao dịch K-line mới nhất và gán kết quả cho AA
REF(X,N) - Tham chiếu giá trị của X N chu kỳ trước.
Ví dụ: REF(CLOSE,1); Lấy giá mở cửa của dòng K trước đó
MA(X,N)——Tìm đường trung bình động đơn giản của X trong N chu kỳ
Ví dụ: MA(CLOSE,10); //Lấy đường trung bình động 10 kỳ của đường K mới nhất
CROSSUP(A,B)——Khi A cắt B từ dưới lên trên, nó trả về 1 (Có), nếu không thì trả về 0 (Không)
Ví dụ: CROSSUP(CLOSE,MA(C,10)) // Giá đóng cửa vượt qua giá trung bình 10 kỳ
CROSSDOWN(A,B)——Khi A cắt B từ phía trên, nó trả về 1 (Có), nếu không thì trả về 0 (Không)
Ví dụ: CROSSDOWN(CLOSE,MA(C,10)) // Giá đóng cửa cắt xuống dưới giá trung bình 10 kỳ
BK——Mua vị thế mở
Ví dụ: CLOSE>MA(CLOSE,5),BK; //Giá đóng cửa lớn hơn đường trung bình động 5 kỳ, mua để mở vị thế
SP——Bán để đóng vị thế
Ví dụ: CLOSE<MA(CLOSE,5),SP; // Giá đóng cửa thấp hơn đường trung bình động 5 kỳ, bán và đóng vị thế
SK——Bán vị thế mở
Ví dụ: CLOSE<MA(CLOSE,5),SK; //giá đóng cửa thấp hơn đường trung bình động 5 kỳ, vị thế bán
BP——Mua để Đóng
Ví dụ: CLOSE>MA(CLOSE,5),BP; //Giá đóng cửa lớn hơn đường trung bình động 5 kỳ, mua và đóng vị thế
BPK——Mua để đóng một vị thế và mua để mở một vị thế (ngược lại mua)
Ví dụ: CLOSE>MA(CLOSE,5),BPK; // Giá đóng cửa lớn hơn đường trung bình động 5 kỳ, đóng vị thế bán khống rồi mua để mở vị thế mới.
SPK——Bán để đóng một vị thế và bán để mở một vị thế (bán khống)
Ví dụ: CLOSE<MA(CLOSE,5),SPK; // Giá đóng cửa thấp hơn đường trung bình động 5 kỳ, đóng vị thế mua rồi bán vị thế mở.
ĐÓNG——Đóng tất cả các vị thế, khuyến nghị sử dụng trong mô hình tăng và giảm vị thế. Ví dụ: ĐÓNG; đóng tất cả các vị thế theo mọi hướng.
API ngôn ngữ JavaScript thường được sử dụng
Trước khi giải thích về API ngôn ngữ JavaScript, chúng ta hãy xem xét cấu trúc mã chung và các thành phần chức năng của nó. Điều này sẽ giúp bạn hiểu rõ hơn về API. Xem ví dụ bên dưới:

Hình 2-10 Ví dụ về mã JavaScript
Như được hiển thị trong đoạn mã trên:
Việc tạo một biến trong ngôn ngữ JavaScript thường được gọi là "khai báo" biến. Trong mã màu đỏ, chúng ta sử dụng từ khóa var để khai báo một biến và tên biến được viết bằng mã màu cam: “aa”.
Trong JavaScript, dấu bằng được sử dụng để gán giá trị, nghĩa là giá trị ở bên phải dấu "=" được gán cho biến ở bên trái.
Mã màu lục lam "exchange" là đối tượng trao đổi. Exchange ở đây đề cập đến công ty tương lai mà bạn đặt. Đây là định dạng cố định, nghĩa là khi bạn gọi API ngôn ngữ JavaScript, bạn phải chỉ định đối tượng trao đổi.
Mã màu xanh lá cây là JavaScript API. Khi chúng ta gọi nó, thực ra chúng ta đang gọi hàm trong đối tượng trao đổi. Lưu ý dấu chấm sau mã màu xanh, đây cũng là định dạng cố định. Chức năng ở đây giống với chức năng chúng ta đã học ở trường trung học cơ sở. Nếu hàm không yêu cầu tham số, hãy sử dụng dấu ngoặc đơn trống để biểu thị nó; nếu hàm phải truyền tham số, hãy viết tham số bên trong dấu ngoặc đơn.
Sau khi hiểu được cấu trúc cơ bản và các nguyên tắc của mã thông qua các ví dụ, chúng tôi sẽ giới thiệu cho bạn một số API ngôn ngữ JavaScript mà bạn sẽ thường sử dụng trong tương lai.
SetContractType("Product Code")——Đặt loại hợp đồng, tức là sản phẩm bạn muốn giao dịch
Ví dụ: exchange.SetContractType("rb1905"); //Đặt loại giao dịch thành "Hợp đồng Rebar 1905"
GetTicker——Lấy dữ liệu Tick
Ví dụ: exchange.GetTicker(); //Lấy dữ liệu Tick
GetRecords——Lấy dữ liệu K-line
Ví dụ: exchange.GetRecords(); //Lấy dữ liệu K-line
Mua
Ví dụ: exchange.Buy(5000, 1); //Mua một lô với giá 5000 nhân dân tệ
Bán——Mua
Ví dụ: exchange.Sell(5000, 1); //Bán một lô với giá 5.000 nhân dân tệ
GetAccount——Lấy thông tin tài khoản
Ví dụ: exchange.GetAccount(); //Lấy thông tin tài khoản
GetPosition——Lấy thông tin vị trí
Ví dụ: exchange.GetPosition(); //Lấy thông tin vị trí
SetDirection——Thiết lập loại lệnh dài hoặc lệnh ngắn
Ví dụ:
exchange.SetDirection("buy"); //Đặt loại lệnh mua để mở vị thế mua dài
exchange.SetDirection("closebuy"); //Đặt loại lệnh bán để đóng các vị thế mua
exchange.SetDirection("sell"); //Đặt loại lệnh bán để mở vị thế bán khống
exchange.SetDirection("closesell"); //Đặt loại lệnh mua để đóng các vị thế bán khống
Nhật ký - Xuất ra một thông điệp trong nhật ký
Ví dụ: Log("hello, world"); // Đầu ra "hello world" trong nhật ký
Ngủ - Tạm dừng chương trình trong một khoảng thời gian
Ví dụ: Sleep(1000); //Tạm dừng chương trình trong 1 giây
Một số bạn có thể thắc mắc, làm sao để nhớ được nhiều API như trên? Trên thực tế, bạn không cần phải ghi nhớ tất cả những điều này. Trang web chính thức của Inventor Quant có một bộ tài liệu API chi tiết. Giống như việc tra từ điển, khi cần thì bạn chỉ cần tra cứu. Đừng để bị đe dọa bởi các mã và nội dung khác mà bạn mới quen lần đầu. Điều chúng tôi muốn là tổ chức các chiến lược của riêng mình thông qua các ngôn ngữ này. Xin hãy nhớ rằng công nghệ không bao giờ là ngưỡng định lượng. Việc bạn có một chiến lược tốt hay không là chìa khóa để bạn có thể đi dài hạn trên thị trường định lượng.
Tóm tắt
Trên đây là những API được sử dụng phổ biến nhất trong giao dịch định lượng, về cơ bản bao gồm: thu thập dữ liệu, tính toán dữ liệu, đặt lệnh mua và bán, đủ để xử lý một chiến lược giao dịch định lượng đơn giản. Tất nhiên, nếu bạn muốn viết một chiến lược phức tạp hơn, bạn cần phải vào trang web chính thức của Inventor Quantitative Tool để lấy nó.
Bài tập về nhà
- Hãy thử viết một câu bằng tiếng Việt về việc đường trung bình động 5 kỳ cắt đường trung bình động 10 kỳ.
- Thử sử dụng GetAccount trong JavaScript để lấy thông tin tài khoản của bạn và in thông tin này vào nhật ký bằng Log.
Xem trước phần tiếp theo
Lập trình giống như lắp ráp các khối Lego, API giống như các bộ phận khác nhau của khối và quá trình lập trình là lắp ráp các bộ phận Lego khác nhau thành một món đồ chơi hoàn chỉnh. Ở phần tiếp theo, tôi sẽ hướng dẫn bạn sử dụng API Ngôn ngữ Mai để xây dựng một chiến lược giao dịch định lượng hoàn chỉnh.
2.4 Cách viết chiến lược trên Hệ thống định lượng Inventor
bản tóm tắt
Sau khi nghiên cứu các phần trước, giờ đây bạn có thể bắt đầu viết các chiến lược giao dịch định lượng. Đây sẽ là bước quan trọng nhất để bạn chuyển từ giao dịch thủ công sang giao dịch định lượng. Trên thực tế, điều này không có gì bí ẩn. Viết chiến lược không gì khác hơn là biến ý tưởng của bạn thành mã. Phần này sẽ triển khai chiến lược giao dịch định lượng từ đầu và giúp bạn làm quen với cách viết chiến lược trên Hệ thống định lượng Inventor.
Chuẩn bị
Đầu tiên, hãy mở trang web chính thức của Inventor Quantitative Tool, và nhấp vào "Strategy Library" và "New Strategy" lần lượt. Cần lưu ý rằng trước khi bắt đầu viết mã, bạn cần chọn ngôn ngữ Mai hoặc ngôn ngữ JavaScript trong menu thả xuống ngôn ngữ lập trình. Tất nhiên, nền tảng này cũng hỗ trợ Python, C++ và ngôn ngữ trực quan.
Ý tưởng chiến lược
Trong chương trước, chúng tôi đã giới thiệu một chiến lược để giá phá vỡ đường trung bình động. Nghĩa là: nếu giá cao hơn giá trung bình của 10 ngày trước thì mua; nếu giá thấp hơn giá trung bình của 10 ngày trước thì bán. Tuy nhiên, mặc dù giá có thể phản ánh trực tiếp tình hình thị trường nhưng sẽ có nhiều tín hiệu đột phá sai; vì vậy chúng ta cần nâng cấp và cải thiện chiến lược này.
Đầu tiên, hãy chọn một đường trung bình động có chu kỳ lớn hơn để xác định hướng xu hướng, đường này đã lọc ra ít nhất một nửa các tín hiệu đột phá sai. Mặc dù đường trung bình động có chu kỳ lớn chậm, nhưng nó sẽ ổn định hơn; sau đó, để tăng thêm tỷ lệ thành công khi vào lệnh, hãy thêm một điều kiện nữa là đường trung bình động có chu kỳ lớn này ít nhất phải hướng lên; cuối cùng, hãy sử dụng mối quan hệ vị trí tương đối của giá, đường trung bình động ngắn hạn và đường trung bình động dài hạn để hình thành nên một chiến lược giao dịch hoàn chỉnh.
Chiến lược Logic
Với những ý tưởng và suy nghĩ chiến lược nêu trên, chúng ta có thể thử xây dựng logic chiến lược. Logic ở đây không phải là yêu cầu bạn tính toán các định luật chuyển động của thiên thể; nó không phức tạp đến vậy. Nó không có gì hơn là diễn đạt những ý tưởng chiến lược trước đó bằng lời nói.
Mở vị thế dài:Nếu không có vị thế hiện tại và giá đóng cửa lớn hơn đường trung bình động ngắn hạn, và giá đóng cửa lớn hơn đường trung bình động dài hạn, và đường trung bình động ngắn hạn lớn hơn đường trung bình động dài hạn và đường trung bình động dài hạn đang tăng.
Mở một vị thế bán khống:Nếu không có vị thế hiện tại, giá đóng cửa thấp hơn đường trung bình động ngắn hạn, giá đóng cửa thấp hơn đường trung bình động dài hạn, đường trung bình động ngắn hạn thấp hơn đường trung bình động dài hạn và đường trung bình động dài hạn đang giảm.
Đóng vị thế dài:Nếu hiện tại bạn đang giữ một lệnh mua và giá đóng cửa thấp hơn đường trung bình động dài hạn, hoặc đường trung bình động ngắn hạn thấp hơn đường trung bình động dài hạn, hoặc đường trung bình động dài hạn đang giảm.
Đóng vị thế bán khống:Nếu hiện tại bạn đang giữ lệnh bán khống và giá đóng cửa lớn hơn đường trung bình động dài hạn, hoặc đường trung bình động ngắn hạn lớn hơn đường trung bình động dài hạn, hoặc đường trung bình động dài hạn đang tăng.
Trên đây là phần logic của toàn bộ chiến lược giao dịch định lượng. Nếu chúng ta chuyển đổi phiên bản văn bản của logic chiến lược thành mã, nó sẽ bao gồm ba bước: thu thập điều kiện thị trường, tính toán các chỉ số và đặt lệnh mua và bán.
Chiến lược ngôn ngữ
Bước đầu tiên là lấy thông tin thị trường. Trong chiến lược giao dịch định lượng này, chúng ta chỉ cần lấy giá đóng cửa. Trong Ngôn ngữ Mai, API để lấy giá đóng cửa là: CLOSE. Nghĩa là, bạn chỉ cần viết CLOSE trong mã để lấy giá đóng cửa của dòng K mới nhất.
Sau đó là các chỉ số tính toán. Trong chiến lược giao dịch định lượng này, chúng tôi sử dụng tổng cộng 2 công nghệ, cụ thể là: đường trung bình động ngắn hạn và đường trung bình động dài hạn. Chúng tôi giả định rằng đường trung bình động ngắn hạn là đường trung bình động 10 kỳ và đường trung bình động dài hạn là đường trung bình động 50 kỳ. Vậy chúng tôi sử dụng mã như thế nào để biểu diễn đường trung bình động 10 kỳ và đường trung bình động 50 kỳ? Vui lòng xem hình sau:

Hình 2-11 Mã chiến lược ngôn ngữ Mai
Trong giao dịch thủ công, chúng ta có thể thấy ngay đường trung bình động 50 kỳ đang tăng hay giảm, nhưng làm thế nào để thể hiện điều đó bằng mã? Hãy suy nghĩ kỹ xem, để đánh giá đường trung bình động có đang tăng hay không, không phải là giá trị trung bình động 50 kỳ của đường K hiện tại lớn hơn giá trị trung bình động 50 kỳ của đường K trước đó sao, và giá trị trung bình động 50 kỳ của đường K trước đó lớn hơn giá trị trung bình động 50 kỳ của đường K trước đó sao? Ngược lại, nghĩa là đường trung bình động đang giảm. Vì vậy, trong mã, nó phải như thế này:

Hình 2-12 Mã trung bình động phán đoán ngôn ngữ Mai
Lưu ý mã màu đỏ hồng “AND” ở dòng 8 và 9 trong hình trên. Nó có nghĩa là “và” trong tiếng Mai. Ví dụ, dòng thứ 9 được dịch sang tiếng Trung là: Nếu đường trung bình động 50 kỳ của đường K hiện tại lớn hơn đường trung bình động 50 kỳ của đường K trước đó và đường trung bình động 50 kỳ của đường K trước đó lớn hơn đường trung bình động 50 kỳ của đường K trước đó, thì giá trị được tính là "có"; nếu không, giá trị được tính là "không" và kết quả được gán cho "MA50_ISUP".
Bước cuối cùng là đặt lệnh mua và bán. Bạn chỉ cần gọi API lệnh của công cụ định lượng của nhà phát minh sau mã logic mua và bán để thực hiện các hoạt động mua và bán. Vui lòng xem hình sau:

Hình 2-13 Mã giao dịch mua bán ngôn ngữ Mai
Lưu ý mã màu đỏ hồng “OR” ở dòng 13 và 14 trong hình trên. Nó có nghĩa là “hoặc” trong tiếng Mai. Ví dụ, dòng 13 được dịch sang tiếng Trung là: Nếu giá đóng cửa của K-line hiện tại thấp hơn đường trung bình động 50 kỳ của K-line hiện tại hoặc đường trung bình động 10 kỳ của K-line hiện tại thấp hơn đường trung bình động 50 kỳ của K-line hiện tại, giá trị được tính là "có" và lệnh sẽ được đặt ngay lập tức; nếu không, giá trị được tính là "không" và không có gì được thực hiện.
Xin lưu ý: "AND" và "OR" là các toán tử logic trong ngôn ngữ Mai:
“AND” có nghĩa là khi tất cả các điều kiện đều là “có”, thì điều kiện cuối cùng là “có”;
"HOẶC" có nghĩa là trong tất cả các điều kiện, chỉ cần một trong các điều kiện là "có", thì điều kiện cuối cùng sẽ là "có".
Tóm tắt
Trên đây là toàn bộ quá trình viết chiến lược giao dịch bằng ngôn ngữ Mai trên Inventor Quantitative Tool. Tổng cộng chỉ có ba bước: từ ý tưởng chiến lược, đến hình thành chiến lược và mô tả logic bằng lời, và cuối cùng là triển khai chiến lược giao dịch hoàn chỉnh bằng mã. Mặc dù đây là một chiến lược đơn giản, nhưng quy trình triển khai cụ thể lại tương tự như một chiến lược phức tạp hơn, ngoại trừ thuật toán và cấu trúc dữ liệu của chiến lược là khác nhau. Do đó, chỉ cần bạn hiểu và nắm vững quy trình chiến lược định lượng trong phần này, bạn có thể sử dụng ngôn ngữ Mai để thực hiện nghiên cứu chiến lược định lượng và thực hành trên các công cụ định lượng của nhà phát minh khi cần.
Bài tập về nhà
- Cố gắng tự mình thực hiện các chiến lược trong phần này.
- Dựa trên chiến lược trong phần này, hãy thêm các chức năng dừng lợi nhuận và dừng lỗ.
Xem trước phần tiếp theo
Trong quá trình phát triển các chiến lược giao dịch định lượng, ngôn ngữ lập trình giống như vũ khí và thiết bị. Một ngôn ngữ lập trình tốt có thể giúp bạn đạt được kết quả gấp đôi với một nửa nỗ lực. Ví dụ, có hơn chục ngôn ngữ được sử dụng phổ biến nhất trong ngành giao dịch định lượng, bao gồm Python, C++, Java, C#, EasyLanguage, Mai Language, v.v. Tôi nên chọn vũ khí nào khi ra chiến trường? Ở phần tiếp theo chúng tôi sẽ giới thiệu các ngôn ngữ lập trình phổ biến này và đặc điểm của từng ngôn ngữ lập trình.
Chương 3 Ngôn ngữ lập trình đơn giản để triển khai các chiến lược giao dịch
3.1 Đánh giá theo chiều ngang của các ngôn ngữ lập trình giao dịch định lượng
bản tóm tắt
Trong Chương 1 và Chương 2, chúng ta đã học những điều cơ bản về giao dịch định lượng và cách sử dụng các công cụ định lượng của nhà phát minh. Trong chương này, chúng ta sẽ triển khai chiến lược giao dịch một cách chi tiết. Nếu bạn muốn làm tốt công việc của mình, trước tiên bạn phải mài giũa công cụ. Để thực hiện các chiến lược giao dịch, trước tiên bạn phải thành thạo một ngôn ngữ lập trình. Phần này trước tiên giới thiệu các ngôn ngữ lập trình chính thống trong giao dịch định lượng, cũng như đặc điểm của từng ngôn ngữ lập trình.
Ngôn ngữ lập trình là gì
Trước khi học một ngôn ngữ lập trình, trước tiên bạn phải hiểu khái niệm "ngôn ngữ lập trình". Ngôn ngữ lập trình là ngôn ngữ mà cả con người và máy tính đều có thể hiểu được. Đây là mã giao tiếp chuẩn hóa. Mục đích của ngôn ngữ lập trình là sử dụng ngôn ngữ của con người để điều khiển máy tính và cho máy tính biết chúng ta muốn làm gì. Máy tính có thể thực hiện các lệnh theo ngôn ngữ lập trình và chúng ta cũng có thể viết mã để đưa ra lệnh cho máy tính.
Giống như cách cha mẹ dạy chúng ta nói khi còn nhỏ, họ cũng dạy chúng ta cách hiểu những gì người khác nói. Sau một thời gian dài chịu ảnh hưởng và tự học, chúng tôi đã học cách nói mà không hề nhận ra và có thể hiểu những gì trẻ khác nói. Có nhiều ngôn ngữ, bao gồm tiếng Trung, tiếng Anh, tiếng Pháp, v.v. Ví dụ:
Xin chào thế giới
Xin chào thế giới
Bonjour tout le monde chào thế giới
Nếu bạn sử dụng ngôn ngữ lập trình để hiển thị "Hello World" trên màn hình máy tính, nó sẽ trông như thế này:
Ngôn ngữ C: puts("Xin chào thế giới");
Ngôn ngữ Java: System.out.println("Xin chào thế giới");
Ngôn ngữ Python: print("Xin chào thế giới")
Chúng ta có thể thấy rằng ngôn ngữ máy tính có những quy tắc riêng của chúng, và có rất nhiều ngôn ngữ. Những quy tắc ngôn ngữ này chính là những phân loại ngôn ngữ lập trình mà chúng tôi cần giải thích cho các bạn ngày hôm nay. Trong mỗi phân loại, chúng ta chỉ cần nhớ những quy tắc cơ bản và thường dùng nhất, và chúng ta có thể sử dụng những ngôn ngữ lập trình này để giao tiếp với máy tính và để máy tính chạy những chiến lược tương ứng theo hướng dẫn của chúng ta.
Phân loại ngôn ngữ lập trình
Để giúp bạn tham khảo và so sánh dễ dàng hơn, cũng như lựa chọn ngôn ngữ lập trình giao dịch định lượng phù hợp với mình, chúng tôi sẽ phân loại sáu ngôn ngữ lập trình được sử dụng phổ biến nhất, cụ thể là Python, Matlab/R, C++, Java/C#, EasyLanguage và ngôn ngữ trực quan (như hiển thị bên dưới).

Hình 3-1 Đánh giá ngôn ngữ lập trình
Chúng tôi đánh giá chúng dựa trên phạm vi chức năng, tốc độ chạy, khả năng mở rộng và độ khó khi học. Điểm số nằm trong khoảng từ 1 đến 5. Ví dụ, điểm 5 xét về phạm vi chức năng có nghĩa là chức năng này mạnh, và điểm 1 có nghĩa là chức năng này yếu hơn. (Như minh họa ở trên) Ngôn ngữ trực quan và EasyLanguage dễ học và rất phù hợp với người mới bắt đầu; Python mạnh mẽ và có khả năng mở rộng mạnh mẽ, phù hợp để phát triển các chiến lược giao dịch phức tạp hơn; C++ có tốc độ giao dịch nhanh hơn và phù hợp hơn với các nhà giao dịch tần suất cao.
Tuy nhiên, việc đánh giá mỗi ngôn ngữ lập trình chủ yếu hướng đến ứng dụng của nó trong lĩnh vực giao dịch định lượng và chứa đựng những yếu tố chủ quan cá nhân. Bạn cũng có thể phê bình trong phần bình luận hoặc đưa ra quan điểm để thảo luận. Tiếp theo, chúng ta sẽ bắt đầu giới thiệu từng ngôn ngữ lập trình này.
Ngôn ngữ hình ảnh
Lập trình trực quan có lịch sử lâu đời và không phải là mới. Khái niệm lập trình "những gì bạn thấy là những gì bạn nhận được" này, được trang bị nhiều mô-đun điều khiển khác nhau, có thể xây dựng logic mã và hoàn thiện thiết kế chiến lược giao dịch chỉ bằng cách kéo và thả. Quá trình này rất giống với việc xây dựng các khối.

Hình 3-2 Giao diện ngôn ngữ lập trình trực quan
Như được trình bày ở trên, cùng một chương trình có thể được hoàn thành chỉ bằng một vài dòng mã trong chương trình lập trình trực quan của Nền tảng giao dịch định lượng Inventor. Điều này làm giảm đáng kể ngưỡng lập trình, mang lại trải nghiệm vận hành tuyệt vời, đặc biệt đối với các nhà giao dịch không có kiến thức về lập trình.
Vì chiến lược triển khai cơ bản của ngôn ngữ trực quan này được chuyển đổi sang C++ nên nó ít ảnh hưởng đến tốc độ chạy của chương trình. Tuy nhiên, chức năng và khả năng mở rộng của nó tương đối yếu và không thể phát triển các chiến lược giao dịch quá phức tạp hoặc tinh vi.
Ngôn ngữ dễ dàng
Cái gọi là EasyLanguage dùng để chỉ ngôn ngữ lập trình dành riêng cho một số phần mềm giao dịch định lượng thương mại. Mặc dù các ngôn ngữ này cũng có một số tính năng hướng đối tượng, nhưng chúng chủ yếu được lập trình theo kịch bản trong các ứng dụng của chúng. Về mặt cú pháp, nó cũng rất gần với ngôn ngữ tự nhiên của chúng ta. Đối với người mới bắt đầu giao dịch định lượng, sử dụng EasyLanguage làm điểm vào là lựa chọn tốt hơn. Ví dụ: ngôn ngữ Mai trong nền tảng giao dịch định lượng của nhà phát minh.
Ngôn ngữ lập trình này không gặp vấn đề gì khi thực hiện kiểm tra ngược chiến lược và giao dịch thực tế trong phần mềm cụ thể của nó, nhưng thường bị hạn chế về khả năng mở rộng. Ví dụ, các nhà phát triển chiến lược không thể gọi API bên ngoài. Hơn nữa, về tốc độ chạy, ngôn ngữ lập trình này chạy trên máy ảo riêng và khả năng tối ưu hóa hiệu suất không tốt bằng Java/C# nên chậm hơn.
Python
Trên Stackoverflow, số lượt truy cập vào các ngôn ngữ lập trình chính thống hầu như không thay đổi trong những năm gần đây, chỉ có Python có xu hướng tăng. Python có thể được sử dụng để phát triển trang web, học máy, học sâu, phân tích dữ liệu, v.v. Do tính linh hoạt và cởi mở, nó đã trở thành ngôn ngữ phổ biến nhất. Trong lĩnh vực đầu tư định lượng cũng vậy. Hiện nay, hầu hết các nền tảng định lượng trong nước đều dựa trên Python.
Các cấu trúc dữ liệu cơ bản, danh sách và từ điển của Python rất mạnh mẽ và về cơ bản có thể đáp ứng nhu cầu biểu diễn dữ liệu. Nếu bạn cần một cấu trúc dữ liệu nhanh hơn và toàn diện hơn, bạn nên sử dụng NumPy và SciPy. Hai thư viện này về cơ bản được gọi là thư viện chuẩn cho máy tính khoa học Python.
Đối với kỹ thuật tài chính, một thư viện có mục tiêu cụ thể hơn là Pandas, có hai cấu trúc dữ liệu là Series và DataFrame, rất phù hợp để xử lý chuỗi thời gian.
Về tốc độ, Python ở mức trung bình, chậm hơn C++ và nhanh hơn EasyLanguage, chủ yếu là vì Python là ngôn ngữ động và tốc độ của nó ở mức trung bình khi chạy bằng Python thuần túy. Tuy nhiên, bạn có thể sử dụng Cython để tối ưu hóa tĩnh một số hàm để đạt được tốc độ của C++.
Là một ngôn ngữ kết dính, Python là ngôn ngữ số một không thể tranh cãi về hiệu suất mở rộng. Ngoài khả năng kết nối với các ngôn ngữ khác một cách mở rộng, API mở rộng cũng được thiết kế để rất dễ sử dụng. Xét về độ khó khi học, Python có cú pháp đơn giản, mã dễ đọc và dễ bắt đầu.
Matlab/R
Tiếp theo là Matlab và R. Hai ngôn ngữ này chủ yếu được sử dụng để phân tích dữ liệu. Các tác giả ngôn ngữ đã tạo ra nhiều thiết kế cú pháp cho các hoạt động khoa học. Đặc điểm của chúng là chúng hỗ trợ tự nhiên cho các hoạt động giao dịch định lượng. Tuy nhiên, phạm vi ứng dụng của nó tương đối hạn chế và thường được sử dụng để phân tích dữ liệu và kiểm tra ngược chiến lược. Đối với hệ thống giao dịch và phát triển thuật toán chiến lược, khả năng sử dụng và tính ổn định của nó tương đối kém.
Ngoài ra, tốc độ chạy và khả năng mở rộng của chúng tương đối kém vì Matlab và R chạy trên các máy ảo có ngôn ngữ riêng. Về hiệu suất, máy ảo của họ kém hơn nhiều so với Java và C#. Nhưng vì cú pháp của chúng gần với các biểu thức toán học hơn nên chúng tương đối dễ học hơn.
C++
C++ là ngôn ngữ lập trình đa năng hỗ trợ nhiều mô hình lập trình như lập trình thủ tục, trừu tượng hóa dữ liệu, lập trình hướng đối tượng, lập trình chung và mẫu thiết kế. Bạn có thể sử dụng C++ để triển khai tất cả các chức năng bạn muốn đạt được, nhưng nhược điểm lớn nhất của một ngôn ngữ mạnh mẽ như vậy là rất khó học, chẳng hạn như mẫu, con trỏ, rò rỉ bộ nhớ, v.v.
Hiện tại, C++ vẫn là ngôn ngữ lập trình được ưa chuộng cho giao dịch khối lượng lớn, tần suất cao. Lý do rất đơn giản. Vì đặc điểm của ngôn ngữ C++ dễ tiếp cận với máy tính cơ bản hơn nên đây là công cụ hiệu quả nhất để phát triển các hệ thống kiểm tra ngược và thực thi hiệu suất cao xử lý lượng dữ liệu lớn.
Java/C#
Java/C# đều là ngôn ngữ tĩnh chạy trên máy ảo. So với C++, không có lỗi vượt giới hạn mảng, không có coredump, ngoại lệ được ném có thể định vị chính xác vị trí của mã lỗi, có cơ chế thu gom rác tích hợp, không cần lo lắng về rò rỉ bộ nhớ, v.v. Do đó, xét về độ khó của cú pháp thì chúng cũng dễ hơn C++. Về tốc độ chạy, vì tất cả máy ảo của họ đều có chức năng JIT riêng để biên dịch thời gian chạy nên tốc độ của chúng chỉ đứng sau C++.
Tuy nhiên, xét về mặt chức năng, không thể tối ưu hóa hệ thống giao dịch cơ bản như C++. Về hiệu suất mở rộng, nó yếu hơn C++ vì việc mở rộng của chúng cần phải đi qua cầu nối của C, và bản thân hai ngôn ngữ này đều chạy trên máy ảo, do đó khi mở rộng các module chức năng cần phải vượt qua thêm một lớp tường nữa mới đạt được.
Tóm tắt
Nhưng nói đi cũng phải nói lại, ngôn ngữ lập trình định lượng không quan trọng, điều quan trọng là ý tưởng. Hoàn toàn không có vấn đề gì khi sử dụng ngôn ngữ định lượng Mai và ngôn ngữ trực quan của nhà phát minh làm bước đệm để gia nhập định lượng. Để cải thiện sau khi gia nhập, bạn cần liên tục thử nghiệm và khám phá kết hợp với các điều kiện thị trường khác nhau. Có thể nói rằng ý tưởng quyết định lối ra và tầm nhìn quyết định lĩnh vực.
"Thiết kế chiến lược, giao dịch ý tưởng." Theo quan điểm này, cốt lõi của giao dịch định lượng vẫn là giao dịch ý tưởng. Là một nhà giao dịch định lượng, bạn không chỉ cần nắm vững cú pháp và chức năng cơ bản của nền tảng viết chiến lược mà còn cần trải nghiệm các khái niệm giao dịch trong thực chiến. Lượng hóa chỉ là một công cụ và phương tiện để phản ánh các khái niệm giao dịch khác nhau.
Bài tập về nhà
- Ngôn ngữ Python có những ưu điểm gì trong giao dịch định lượng?
- Hãy thử viết một số API thường dùng bằng ngôn ngữ Mai của tác giả?
Xem trước phần tiếp theo
Tôi tin rằng với phần giới thiệu về ngôn ngữ lập trình ở trên, bạn phải biết cách lựa chọn. Trong một vài chương tiếp theo, chúng ta sẽ học cách phát triển chiến lược giao dịch định lượng theo cách có mục tiêu theo phân loại ngôn ngữ lập trình.
3.2 Hướng dẫn bắt đầu nhanh với Mai Language
bản tóm tắt
Tiếng Mai là gì? Ngôn ngữ Mai là một tập hợp các thư viện chức năng được lập trình mở rộng từ các chỉ báo kỹ thuật ban đầu. Các thuật toán được đóng gói thành các hàm và người dùng chỉ cần gọi từng dòng hàm giống như chơi xếp khối để triển khai logic chiến lược.
Nó áp dụng phương thức xây dựng "cú pháp nhỏ, chức năng lớn", giúp cải thiện đáng kể hiệu quả viết. Các chiến lược đòi hỏi hơn 100 câu trong các ngôn ngữ khác nói chung có thể được viết chỉ trong một chục câu trong Ngôn ngữ Mai. Kết hợp với thư viện chức năng thống kê tài chính và cấu trúc dữ liệu của các công cụ định lượng của nhà phát minh, nó cũng có thể hỗ trợ một số logic giao dịch phức tạp.
Chiến lược hoàn chỉnh
Để giúp bạn nhanh chóng hiểu được kiến thức chính của phần này, trước khi giới thiệu Khởi đầu nhanh về Ngôn ngữ Lúa mì quantized của Inventor, trước tiên bạn nên hiểu sơ bộ về các khái niệm trong phần này. Chúng tôi vẫn sử dụng đường trung bình động dài hạn 50 ngày và đường trung bình động ngắn hạn 10 ngày làm các trường hợp cơ bản và xem xét lại toàn bộ trường hợp chiến lược đã đề cập ở chương trước:
Mở vị thế dài:Nếu không có vị thế hiện tại và giá đóng cửa lớn hơn đường trung bình động ngắn hạn, và giá đóng cửa lớn hơn đường trung bình động dài hạn, và đường trung bình động ngắn hạn lớn hơn đường trung bình động dài hạn và đường trung bình động dài hạn đang tăng.
Mở một vị thế bán khống:Nếu không có vị thế hiện tại, giá đóng cửa thấp hơn đường trung bình động ngắn hạn, giá đóng cửa thấp hơn đường trung bình động dài hạn, đường trung bình động ngắn hạn thấp hơn đường trung bình động dài hạn và đường trung bình động dài hạn đang giảm.
Đóng vị thế dài:Nếu hiện tại bạn đang giữ một lệnh mua và giá đóng cửa thấp hơn đường trung bình động dài hạn, hoặc đường trung bình động ngắn hạn thấp hơn đường trung bình động dài hạn, hoặc đường trung bình động dài hạn đang giảm.
Đóng vị thế bán khống:Nếu hiện tại bạn đang giữ lệnh bán khống và giá đóng cửa lớn hơn đường trung bình động dài hạn, hoặc đường trung bình động ngắn hạn lớn hơn đường trung bình động dài hạn, hoặc đường trung bình động dài hạn đang tăng.
Nếu viết bằng mã ngôn ngữ Mai thì trông như thế này:

Hình 3-3 Ví dụ hoàn chỉnh về ngôn ngữ Mai
Để viết một chiến lược giao dịch định lượng hoàn chỉnh, thường phải thực hiện qua một số bước: thu thập dữ liệu, tính toán dữ liệu, tính toán logic, đặt lệnh, v.v. Như thể hiện trong hình trên, trong toàn bộ mã, chỉ có một API được sử dụng để lấy dữ liệu cơ bản, đó là "CLOSE" ở dòng đầu tiên và dòng thứ hai; sau đó, dòng đầu tiên đến dòng thứ chín là phần tính toán dữ liệu; và cuối cùng, dòng thứ mười một đến dòng thứ mười bốn là phần tính toán logic và sắp xếp thứ tự.
Xin lưu ý rằng mã màu tím là một biến; ở dòng đầu tiên đến dòng thứ chín, ký tự ":=" màu xanh lá cây là toán tử gán và dữ liệu ở bên phải toán tử gán được gán cho biến ở bên trái sau khi tính toán; mã màu cam là API, ví dụ, ở dòng đầu tiên, khi gọi MA (trung bình động) cần truyền vào hai tham số, có thể hiểu là cài đặt, nghĩa là khi gọi MA, bạn cần đặt loại MA; ký tự "AND" và "OR" màu đỏ hồng là toán tử logic, chủ yếu dùng để kết nối nhiều phép tính logic, v.v. Với những khái niệm kiến thức cơ bản ở trên, chúng ta hãy bắt đầu tìm hiểu những kiến thức cơ bản chi tiết về tiếng Mai.
Dữ liệu cơ bản
Dữ liệu cơ bản (giá mở cửa, giá cao nhất, giá thấp nhất, giá đóng cửa, khối lượng giao dịch) là một phần không thể thiếu của giao dịch định lượng. Để có được dữ liệu cơ bản mới nhất trong chiến lược, bạn chỉ cần gọi API của công cụ định lượng của nhà phát minh. Nếu bạn muốn lấy dữ liệu cơ bản lịch sử, bạn có thể sử dụng "REF", chẳng hạn như: REF (CLOSE, 1) là để lấy giá đóng cửa của ngày hôm qua.
Biến số
Biến là một số có thể thay đổi. Tên của biến có thể được hiểu là một mã. Tên của biến hỗ trợ các ký tự tiếng Trung, chữ cái, số và dấu gạch ngang, nhưng độ dài phải được kiểm soát trong phạm vi 31 ký tự. Tên biến không được lặp lại với nhau, tên tham số hoặc tên hàm (API) và mỗi câu lệnh phải kết thúc bằng dấu chấm phẩy. Nếu bạn muốn thêm bình luận ngôn ngữ của riêng mình sau khi viết, hãy sử dụng “//” ở cuối. Cần phải viết ở chế độ chữ hoa của phương pháp nhập liệu nửa chiều rộng. Như thể hiện trong hình sau:

Hình 3-4 Kiểu dữ liệu ngôn ngữ Mai
Gán biến
Gán biến là gán giá trị ở bên phải của toán tử gán cho biến ở bên trái. Có 4 loại toán tử gán, có thể kiểm soát việc giá trị có được hiển thị trên biểu đồ hay không và xác định vị trí hiển thị. Phông chữ màu xanh lá cây trong hình bên dưới là các toán tử gán, cụ thể là “:”, “:=”, “^^” và “..”. Các chú thích mã trong hình giải thích ý nghĩa của chúng một cách chi tiết.

Hình 3-5 Gán biến ngôn ngữ Mai
Loại dữ liệu
Trong ngôn ngữ lập trình, có nhiều kiểu dữ liệu, trong đó phổ biến nhất là kiểu số, kiểu chuỗi và kiểu Boolean. Kiểu số là các số, bao gồm số nguyên, số thập phân, số dương và số âm, v.v., chẳng hạn như: 1, 2, 3, 1.1234, 2.23456...; kiểu chuỗi có thể hiểu là văn bản, tiếng Trung, tiếng Anh và số đều có thể là chuỗi, chẳng hạn như: 'Inventor Quantification', 'CLOSEPRICE', '6000' và kiểu chuỗi phải được bao trong dấu chấm phẩy tiếng Anh; Kiểu Boolean là kiểu đơn giản nhất, nó chỉ có hai giá trị "có" và "không", chẳng hạn như: 1 biểu thị đúng cho "có", và 0 biểu thị sai cho "không".
Tính toán tử quan hệ
Toán tử quan hệ, đúng như tên gọi của nó, là các toán tử được sử dụng để so sánh mối quan hệ giữa hai giá trị. Chúng bằng, lớn hơn, nhỏ hơn, lớn hơn hoặc bằng, nhỏ hơn hoặc bằng, và không bằng, như được hiển thị bên dưới:

Hình 3-6 Toán tử ngôn ngữ Mai
Các toán tử logic
Các phép toán logic có thể kết nối các câu lệnh Boolean riêng lẻ thành một tổng thể. Các phép toán được sử dụng phổ biến nhất là "AND" và "OR". Giả sử có hai giá trị Boolean là "giá đóng cửa lớn hơn giá mở cửa" và "giá đóng cửa lớn hơn đường trung bình động", chúng ta có thể kết hợp chúng thành một giá trị Boolean, chẳng hạn như: "giá đóng cửa lớn hơn giá mở cửa và (AND) giá đóng cửa lớn hơn đường trung bình động", "giá đóng cửa lớn hơn giá mở cửa hoặc (OR) giá đóng cửa lớn hơn đường trung bình động".

Hình 3-7 Hoạt động logic của ngôn ngữ Mai
Xin mọi người chú ý:
“AND” có nghĩa là khi tất cả các điều kiện đều là “có”, thì điều kiện cuối cùng là “có”;
"HOẶC" có nghĩa là trong tất cả các điều kiện, chỉ cần một trong các điều kiện là "có", thì điều kiện cuối cùng sẽ là "có".
“AND” có thể được viết là “&&” và “OR” có thể được viết là “||”.
Máy tính toán số
Các toán tử số học thường dùng trong tiếng Mai ("+", "-",*”, “/”) không khác gì so với môn toán đã học ở tiểu học, như thể hiện dưới đây:

Hình 3-8 Các phép tính số học trong ngôn ngữ Mai
Ưu tiên
Nếu có 100*Đối với biểu thức (10-1)/(10+5), bước nào trong chương trình sẽ tính toán đầu tiên? Toán trung học cơ sở cho ta biết: ① Nếu là phép tính cùng cấp độ thì thường tính từ trái sang phải. ② Nếu có cả phép cộng và phép trừ cũng như phép nhân và phép chia, thì tính phép nhân và phép chia trước, sau đó tính phép cộng và phép trừ. ③Nếu có dấu ngoặc thì trước tiên hãy tính nội dung bên trong dấu ngoặc. ④ Nếu phù hợp với các quy luật vận hành thì có thể sử dụng các quy luật vận hành để đơn giản hóa phép tính. Mức độ ưu tiên của tiếng Mai giống như được hiển thị bên dưới:

Hình 3-9 Thứ tự ưu tiên của các phép tính trong ngôn ngữ Mai
Chế độ thực hiện
Trong ngôn ngữ Mai của công cụ định lượng của nhà phát minh, có hai chế độ thực hiện chiến lược chương trình, đó là: chế độ giá đóng cửa và chế độ giá thời gian thực. Chế độ giá đóng cửa có nghĩa là tín hiệu đường K hiện tại được thiết lập và giao dịch lệnh được thực hiện ngay khi đường K tiếp theo bắt đầu. Chế độ giá theo thời gian thực có nghĩa là khi tín hiệu K-line hiện tại được thiết lập, giao dịch lệnh sẽ được thực hiện ngay lập tức.
Chiến lược trong ngày
Nếu là chiến lược trong ngày, khi bạn cần đóng vị thế vào cuối ngày giao dịch, bạn cần sử dụng hàm thời gian "TIME". Hàm này được hiển thị dưới dạng bốn chữ số khi nó ở trên giai đoạn thứ hai và dưới giai đoạn ngày, cụ thể là: HHMM (1450-14:50). Lưu ý: Khi sử dụng hàm TIME làm điều kiện để đóng vị thế vào cuối giao dịch, khuyến nghị điều kiện mở cũng phải có giới hạn thời gian tương ứng. Như hình dưới đây:

Hình 3-10 Chức năng thời gian ngôn ngữ micrô
Phân loại mô hình

Hình 3-11 Phân loại mô hình ngôn ngữ Mai
Trong tiếng Mai có hai loại phân loại mô hình, đó là: mô hình không lọc và mô hình lọc. Trên thực tế, điều này rất dễ hiểu: mô hình không lọc cho phép các tín hiệu đóng hoặc mở liên tục, có thể thực hiện chức năng thêm và giảm vị trí. Mô hình lọc không cho phép tín hiệu mở hoặc đóng liên tục. Nghĩa là khi tín hiệu mở xuất hiện, các tín hiệu mở tiếp theo sẽ được lọc ra cho đến khi tín hiệu đóng xuất hiện. Thứ tự các tín hiệu trong mô hình không lọc là: mở-đóng-mở-đóng-mở.....
Tóm tắt
Trên đây là phần giới thiệu nhanh về ngôn ngữ Mai. Sau khi học xong, bạn có thể lập trình các chiến lược giao dịch định lượng. Nếu bạn cần viết các chiến lược phức tạp hơn, bạn có thể tham khảo tài liệu API Ngôn ngữ Mai của Inventor Quantitative Tool hoặc trực tiếp tham khảo dịch vụ chăm sóc khách hàng chính thức để viết các chiến lược giao dịch định lượng cho bạn.
Xem trước phần tiếp theo
Giao dịch trong ngày cũng là một mô hình giao dịch. Phương pháp này không giữ vị thế qua đêm, do đó rủi ro biến động thị trường thấp hơn. Khi điều kiện thị trường bất lợi xảy ra, có thể điều chỉnh kịp thời. Sau khi tìm hiểu phần giới thiệu về ngôn ngữ Mai trong phần này, ở phần tiếp theo, chúng tôi sẽ chỉ cho bạn cách viết một chiến lược giao dịch định lượng trong ngày khả thi.
Bài tập về nhà
- Thử sử dụng Inventor Quantitative Tool để viết API bằng ngôn ngữ Mai nhằm thu thập dữ liệu cơ bản.
- Có những cách nào để hiển thị các phép gán biến trong biểu đồ?
3.3 Cách triển khai chiến lược trong tiếng Mai
bản tóm tắt
Ở bài viết trước, chúng tôi đã giải thích các điều kiện tiên quyết để triển khai chiến lược giao dịch từ các khía cạnh giới thiệu ngôn ngữ Mai, cú pháp cơ bản, phương pháp thực hiện mô hình, phân loại mô hình, v.v. Ở bài viết này, chúng tôi sẽ tiếp tục nội dung của bài viết trước và giúp bạn hiện thực hóa chiến lược giao dịch định lượng trong ngày khả thi từng bước từ các mô-đun chiến lược và chỉ báo kỹ thuật thường dùng.
Mô-đun chính sách
Hãy nghĩ xem, làm sao bạn có thể xây dựng một con robot bằng những mảnh ghép Lego? Bạn không thể ghép từng phần lại với nhau, từ trên xuống dưới hoặc từ dưới lên trên. Bất kỳ ai có một chút hiểu biết thông thường đều biết rằng đầu, tay, chân, cánh, v.v. phải được lắp ráp riêng biệt rồi mới kết hợp thành một robot hoàn chỉnh. Cũng giống như khi viết chương trình. Viết các chức năng cần thiết vào các mô-đun chiến lược, sau đó kết hợp các mô-đun chiến lược thành một chiến lược giao dịch định lượng hoàn chỉnh. Dưới đây tôi sẽ liệt kê một số mô-đun chiến lược thường được sử dụng:
Tăng pha
Mức tăng theo giai đoạn được tính bằng cách tính phần trăm chênh lệch giữa giá đóng cửa của dòng K hiện tại và giá đóng cửa của N giai đoạn trước đó. Ví dụ, để tính toán sự gia tăng của 10 chu kỳ dòng K cuối cùng, mã có thể được viết như sau:

Hình 3-12 Giai đoạn phát triển của ngôn ngữ Mai
Đỉnh cao mới
Để thiết lập mức cao mới, chúng ta cần tính toán xem đường K hiện tại có lớn hơn mức giá cao nhất trong N giai đoạn hay không. Ví dụ, để tính toán xem dòng K hiện tại có lớn hơn giá cao nhất trong số 10 dòng K cuối cùng hay không, mã có thể được viết như sau:

Hình 3-13 Ngôn ngữ Mai đạt đến đỉnh cao mới
Khối lượng lớn tăng
Một đợt tấn công tăng giá với khối lượng lớn có thể được hiểu là giá tăng và khối lượng giao dịch tăng mạnh. Ví dụ: Nếu giá đóng cửa của một K-line gấp 1,5 lần giá đóng cửa của 10 K-line trước đó, điều đó có nghĩa là nó đã tăng 50% trong 10 ngày; khối lượng giao dịch vượt quá 5 lần mức trung bình của 10 K-line trước đó. Nó có thể được viết dưới dạng mã như sau:

Hình 3-14 Thể tích của Maiyuyu tăng lên
Hoàn thiện hẹp
Sự hợp nhất trong phạm vi hẹp có nghĩa là giá vẫn nằm trong một phạm vi nhất định trong một khoảng thời gian gần đây. Ví dụ: Nếu chênh lệch giữa giá cao nhất trong vòng 10 kỳ và giá thấp nhất trong vòng 10 kỳ, chia cho giá đóng cửa của đường K hiện tại, nhỏ hơn khoảng 0,05. Nó có thể được viết dưới dạng mã như sau:

Hình 3-15 Phạm vi hẹp của ngôn ngữ lúa mì
Sự sắp xếp tăng giá trung bình động
Sự sắp xếp tăng giá của các đường trung bình động được chia thành sự sắp xếp tăng giá và sự sắp xếp giảm giá. Đường K được sắp xếp hướng lên với sự hỗ trợ dưới các đường trung bình động 5-10-20-30-60, đây là một sự sắp xếp tăng giá. Sự sắp xếp tăng giá có nghĩa là xu hướng thị trường là một xu hướng tăng mạnh. Nó có thể được viết dưới dạng mã như sau:

Hình 3-16 Đường trung bình động Mai Language sắp xếp tăng giá
Mức cao trước đó và vị trí của chúng
Để có được điểm cao trước đó và vị trí của điểm cao này, bạn có thể lấy trực tiếp thông qua API của Inventor Quantitative Tool. Điều này có thể được viết bằng mã:

Hình 3-17 Đỉnh cao trước đây của Ngôn ngữ Mai
Khoảng cách
Khoảng cách là tình huống mà giá cao nhất và thấp nhất của hai đường K không được kết nối. Nó bao gồm hai đường K. Khoảng cách là giá tham chiếu cho các điểm hỗ trợ và áp lực trong tương lai. Khi xuất hiện khoảng trống, có thể cho rằng xu hướng theo hướng khoảng trống ban đầu đã bắt đầu tăng tốc. Điều này có thể được viết bằng mã:

Hình 3-18 Khoảng cách ngôn ngữ Mai
Các chỉ số kỹ thuật chung
Đường trung bình động

Hình 3-19 Biểu đồ trung bình động
Theo quan điểm thống kê, đường trung bình động là giá trung bình cộng của giá hàng ngày và là quỹ đạo giá có xu hướng. Hệ thống trung bình động là một công cụ kỹ thuật thường được hầu hết các nhà phân tích sử dụng. Theo quan điểm kỹ thuật, đây là một yếu tố ảnh hưởng đến giá tâm lý của các nhà phân tích kỹ thuật và yếu tố ra quyết định mua và bán. Đây là một công cụ tham khảo tốt cho các nhà phân tích kỹ thuật. Công cụ định lượng của nhà phát minh hỗ trợ nhiều loại trung bình động khác nhau, như thể hiện trong hình sau:

Hình 3-20 Tính toán các chỉ số khác nhau của Ngôn ngữ Mai
Kênh BOLL
BOLL, còn được gọi là chỉ báo Dải Bollinger, cũng sử dụng các nguyên tắc thống kê để đầu tiên tính toán đường giữa dựa trên đường trung bình động N ngày, sau đó tính toán đường trên và đường dưới dựa trên độ lệch chuẩn. Khi kênh BOLL trở nên hẹp hơn, điều đó có nghĩa là giá đang dần trở về mức trung bình. Khi kênh BOLL chuyển từ hẹp sang rộng, điều đó có nghĩa là thị trường bắt đầu thay đổi. Nếu giá vượt qua đường ray trên, điều đó cho thấy sức mua đang tăng lên. Nếu giá vượt qua đường ray dưới, điều đó cho thấy sức bán đang tăng lên.
Trong số tất cả các chỉ báo kỹ thuật, phương pháp tính toán BOLL là một trong những phương pháp phức tạp nhất, đưa ra khái niệm độ lệch chuẩn trong thống kê và liên quan đến việc tính toán đường giữa (MB), đường trên (UP) và đường dưới (DN). Phương pháp tính toán như sau:

Hình 3-22 Tính toán dải Bollinger của Mai Language
Chỉ số MACD
Chỉ báo MACD sử dụng đường trung bình động nhanh (ngắn hạn) và chậm (dài hạn) cùng các dấu hiệu hội tụ và tách biệt của chúng và thực hiện hoạt động làm mịn kép. MACD được phát triển dựa trên nguyên lý đường trung bình động, đã loại bỏ được khuyết điểm thường xuyên phát ra tín hiệu sai của đường trung bình động, và vẫn giữ nguyên hiệu ứng của đường trung bình động. Do đó, chỉ báo MACD có đặc điểm là xu hướng đường trung bình động, ổn định và bền vững. Đây là chỉ báo phân tích kỹ thuật dùng để đánh giá thời điểm mua bán cổ phiếu và dự đoán giá cổ phiếu tăng giảm. Phương pháp tính toán như sau:

Hình 3-24 Chỉ báo MACD của Mai Language
Trên đây là các mô-đun chiến lược được sử dụng phổ biến nhất trong việc phát triển các chiến lược giao dịch định lượng. Tất nhiên, còn nhiều hơn thế nữa. Thông qua các ví dụ về mô-đun trên, bạn cũng có thể triển khai một số mô-đun giao dịch được sử dụng phổ biến nhất trong giao dịch chủ quan của mình. Các phương pháp đều mang tính phổ quát. Tiếp theo, chúng ta sẽ bắt đầu viết một chiến lược giao dịch định lượng trong ngày khả thi.
Viết chiến lược
Trên thị trường giao dịch ngoại hối giao ngay, đã từng có một chiến lược giao dịch đột phá được lưu hành rộng rãi, đó là chiến lược HANS123. Nó sử dụng các điểm đột phá điểm cao và điểm thấp đơn giản của các đường N K sau khi mở cửa làm tiêu chí để kích hoạt tín hiệu giao dịch. Đây cũng là chế độ giao dịch có thể tham gia sớm.
Chiến lược Logic
Hãy sẵn sàng tham gia thị trường 30 phút sau khi thị trường mở cửa;
Đường ray phía trên = điểm cao nhất 30 phút sau khi mở;
Đường ray thấp hơn = thấp 30 phút sau khi mở;
Khi giá vượt qua ngưỡng trên, hãy mua và mở một vị thế;
Khi giá giảm xuống dưới đường dưới, hãy mở vị thế bán.
Chiến lược giao dịch trong ngày, đóng các vị thế trước khi thị trường đóng cửa;
Mã chiến lược

Hình 3-25 Mã chiến lược ngôn ngữ Mai
Tóm tắt
Trên đây, chúng ta đã tìm hiểu khái niệm về mô-đun chiến lược và thông qua một số trường hợp mô-đun chiến lược thường dùng, chúng ta đã làm quen với các phương pháp lập trình của các công cụ định lượng của nhà phát minh. Có thể nói rằng học cách viết mô-đun chiến lược và cải thiện tư duy logic lập trình là những bước chính trong giao dịch định lượng nâng cao. Cuối cùng, chúng tôi sử dụng các công cụ định lượng của nhà phát minh để triển khai các chiến lược giao dịch thường được sử dụng trong giao dịch ngoại hối giao ngay.
Xem trước phần tiếp theo
Một số bạn có thể cảm thấy bối rối và không hiểu được các mã lệnh phức tạp. Đừng lo lắng, chúng tôi đã nghĩ ra tất cả những điều này cho bạn rồi. Trong Inventor Quantitative Tool, cũng có một ngôn ngữ lập trình phù hợp hơn với người dùng mới bắt đầu. Đó là lập trình trực quan. Như tên gọi của nó, những gì bạn thấy là những gì bạn nhận được. Chúng ta hãy cùng nhau mong đợi nhé!
Bài tập về nhà
- Cố gắng triển khai một số mô-đun giao dịch mà bạn sử dụng thường xuyên nhất trong giao dịch chủ quan.
- Thử nghiệm triển khai thuật toán chỉ báo KDJ bằng ngôn ngữ Mai trong công cụ định lượng của nhà phát minh.
3.4 Bắt đầu nhanh với Lập trình trực quan
bản tóm tắt
Nhiều nhà giao dịch chủ quan quan tâm đến giao dịch định lượng. Họ tràn đầy tự tin khi bắt đầu. Tuy nhiên, sau khi học cú pháp cơ bản, thao tác dữ liệu, cấu trúc dữ liệu, điều khiển logic, v.v. của các ngôn ngữ lập trình truyền thống, họ thường nản lòng hoặc bỏ cuộc sau khi xem các mã dài và phức tạp. Lúc này, ngôn ngữ lập trình trực quan có thể phù hợp hơn để bạn bắt đầu.
Chiến lược hoàn chỉnh
Để giúp mọi người nhanh chóng nắm được kiến thức chính của phần này, trước khi giới thiệu nhanh về Ngôn ngữ lập trình trực quan quan trọng của Inventor, chúng ta hãy cùng xem chiến lược được viết bằng ngôn ngữ trực quan trông như thế nào? Và có hiểu biết sơ bộ về các khái niệm danh từ trong phần này. Hãy lấy ví dụ đơn giản nhất về việc mua vào khi giá đóng cửa lớn hơn đường trung bình động 50 kỳ và bán ra khi giá đóng cửa nhỏ hơn đường trung bình động 50 kỳ:
Mở vị thế dài:Nếu không có vị thế hiện tại và giá đóng cửa lớn hơn đường trung bình động 50 kỳ.
Mở một vị thế bán khống:Nếu không có vị thế hiện tại và giá đóng cửa thấp hơn đường trung bình động 50 kỳ.
Đóng vị thế dài:Nếu hiện tại bạn đang nắm giữ vị thế mua và giá đóng cửa thấp hơn đường trung bình động 50 kỳ.
Đóng vị thế bán khống:Nếu hiện tại bạn đang giữ lệnh bán khống và giá đóng cửa cao hơn đường trung bình động 50 kỳ.
Nếu chiến lược trên được viết bằng ngôn ngữ trực quan, nó sẽ trông như thế này (như được hiển thị bên dưới):

Hình 3-26 Giao diện ngôn ngữ trực quan
Như thể hiện trong hình trên, toàn bộ quá trình thiết kế chiến lược là: thiết lập loại thị trường, lấy mảng K-line, lấy giá trung bình 50 kỳ của K-line trước đó, lấy giá đóng cửa của K-line trước đó, lấy mảng vị thế, xác định trạng thái vị thế, xác định giá đóng cửa lớn hơn hay nhỏ hơn giá trung bình động và thực hiện mở hoặc đóng.
Ở đây chúng ta cần chú ý đến khái niệm "mảng". Mảng là một trong những cấu trúc dữ liệu quan trọng đối với mọi ngôn ngữ lập trình. Mảng giống như các thùng chứa có thể lưu trữ một chuỗi các giá trị. Ví dụ, gọi API để lấy mảng K-line sẽ trả về kết quả sau:

Hình 3-27 Mảng K-line
Mã trong hình trên là một mảng K-line. Mảng này chứa tổng cộng ba dữ liệu, cụ thể là dữ liệu của K-line trước đó, dữ liệu của K-line trước đó và dữ liệu của K-line hiện tại. Nếu chúng ta gán mảng này cho biến "arr", nếu chúng ta muốn lấy dữ liệu cuối cùng trong mảng này (dữ liệu của dòng gốc K), chúng ta có thể viết như thế này (như thể hiện ở dòng thứ 4 và thứ 5 trong hình bên dưới):

Hình 3-28 Tham chiếu mảng
Chúng ta có thể sử dụng cách viết thứ hai (dòng 5), vì trên thực tế có hàng trăm hoặc hàng nghìn dữ liệu dòng K và các dòng K mới liên tục tăng lên. Vì vậy, trước tiên bạn có thể lấy độ dài của mảng. "arr.length" có nghĩa là lấy độ dài của mảng, sau đó trừ "1", đây là dữ liệu của dòng K mới nhất. Nếu bạn muốn lấy dữ liệu của dòng K trước đó, hãy trừ "2".
Những người cẩn thận có thể thấy rằng những dữ liệu này được đặt trong "{}". Từ tên tiếng Anh, bạn có thể biết sơ bộ rằng chúng tương ứng với: thời gian, giá mở cửa, giá cao nhất, giá thấp nhất, giá đóng cửa và khối lượng giao dịch. Nếu bạn muốn lấy giá đóng cửa của dòng K trước đó, chỉ cần thêm "." và giá trị cần thiết vào cuối, tham khảo dòng 8 đến 10 trong hình bên dưới.

Hình 3-29 Tham chiếu mảng
Tại sao nên sử dụng ngôn ngữ lập trình trực quan?
Với các khái niệm trên, trước tiên chúng ta hãy sử dụng Java để viết chương trình xuất ra "hello, world" để trải nghiệm lập trình truyền thống, như minh họa bên dưới:

Hình 3-30
Một chương trình chỉ xuất ra chuỗi "hello world!" chỉ cần 5 dòng mã. Tôi tin rằng hầu hết người mới bắt đầu chỉ biết các từ tiếng Anh "hello, world" trong ngoặc và không biết bắt đầu từ đâu với các từ còn lại. Do đó, tốt hơn hết là bắt đầu bằng lập trình trực quan thay vì bối rối.
Lập trình trực quan là gì?
Lập trình trực quan có lịch sử lâu đời và không phải là mới. Khái niệm lập trình "những gì bạn thấy là những gì bạn nhận được" này, được trang bị nhiều mô-đun điều khiển khác nhau, có thể xây dựng logic mã và hoàn thiện thiết kế chiến lược giao dịch chỉ bằng cách kéo và thả. Quá trình này rất giống với việc xây dựng các khối.

Hình 3-31
Như đã trình bày ở trên, cùng một chương trình có thể được hoàn thành chỉ bằng một dòng mã trong lập trình trực quan Blockly. Điều này làm giảm đáng kể ngưỡng lập trình, mang lại trải nghiệm vận hành tuyệt vời, đặc biệt đối với các nhà giao dịch không có kiến thức về lập trình.
Đặc điểm của ngôn ngữ lập trình trực quan là gì?
Blockly không phải là một đồ chơi lập trình, mà là một trình soạn thảo thực sự, không phải là một hệ điều hành được ngụy trang thành trình soạn thảo. Nó hỗ trợ nhiều thành phần cơ bản của lập trình, chẳng hạn như biến, hàm, mảng và các khối dễ mở rộng và tùy chỉnh. Bạn có thể sử dụng nó để hoàn thành các tác vụ lập trình phức tạp. Thiết kế này rất phù hợp với triết lý của Unix: Chỉ làm một việc.
Người phát minh ra lập trình trực quan định lượng cũng được hiện thực hóa thông qua công cụ trực quan hóa khối do Google phát hành. Thiết kế này tương tự như Scratch do MIT phát hành, với ngưỡng thực sự bằng không (như hiển thị bên dưới).

Hình 3-32
Trong giao diện lập trình trực quan của Inventor Quant, hàng trăm mô-đun giao dịch thường dùng được tích hợp sẵn. Nhiều mô-đun giao dịch hơn sẽ được thêm vào trong tương lai để hỗ trợ các ý tưởng và ứng dụng mới của nhà giao dịch. Những mô-đun này sẽ được các nhà phát triển cùng phát triển và duy trì.
Mặc dù cú pháp đơn giản nhưng không làm giảm hiệu suất. Nó gần như có thể đáp ứng được sự phát triển của hầu hết các chiến lược giao dịch định lượng đơn giản. Về mặt chức năng và tốc độ, nó không hề thua kém các ngôn ngữ lập trình thông thường như Python và JavaScript. Trong tương lai, nó sẽ hỗ trợ các ứng dụng tài chính phức tạp về mặt logic.
Cách sử dụng
Viết một chương trình chào thế giới
Chạy và in "hello, world"
Tóm tắt
Ở trên, chúng tôi bắt đầu với một chiến lược trực quan hóa hoàn chỉnh, sau đó giới thiệu phần giới thiệu và các đặc điểm của ngôn ngữ trực quan hóa, và cuối cùng giới thiệu cách sử dụng ngôn ngữ trực quan hóa trên công cụ Inventor Quant và viết ví dụ "hello world". Tuy nhiên, chúng ta cần nhắc nhở mọi người rằng như một phần giới thiệu về giao dịch định lượng, lập trình trực quan là một bước đệm tốt, nhưng hiện tại chỉ có một số giao diện API giới hạn được mở trên Inventor Quantitative Tool. Đối với giao dịch định lượng, tốt nhất là sử dụng nó như một công cụ hỗ trợ để giúp bạn sắp xếp logic của chiến lược.
Xem trước phần tiếp theo
Không có sự khác biệt giữa những điều cơ bản của lập trình trực quan và ngôn ngữ lập trình cấp cao, và một số khía cạnh thậm chí còn mang tính phổ quát. Khi bạn học lập trình trực quan, bạn sẽ tiến gần hơn một bước đến việc học lập trình cấp cao. Ở phần tiếp theo, chúng ta sẽ đi sâu vào việc học nâng cao về lập trình trực quan, bao gồm cách sử dụng ngôn ngữ trực quan để viết các mô-đun giao dịch định lượng thường dùng trên Inventor Quantitative Tool và cách phát triển chiến lược giao dịch trong ngày hoàn chỉnh.
Bài tập về nhà
- Trong giao diện lập trình trực quan Inventor Quant, hãy sử dụng API và hiểu ý nghĩa của chúng.
- Sử dụng ngôn ngữ trực quan để lấy giá mở cửa mới nhất và xuất ra nhật ký.
3.5 Cách triển khai chiến lược bằng ngôn ngữ trực quan
bản tóm tắt
Trong bài viết trước, chúng ta đã tìm hiểu về phần giới thiệu và các tính năng của ngôn ngữ lập trình trực quan, ví dụ "hello world" và cách viết chiến lược trong công cụ giao dịch định lượng của nhà phát minh, đồng thời giải thích các điều kiện tiên quyết để triển khai các chiến lược giao dịch. Trong bài viết này, chúng ta sẽ tiếp tục từ bài viết trước, bắt đầu từ các mô-đun chiến lược và chỉ báo kỹ thuật thường dùng, sau đó đến logic chiến lược, để giúp mọi người hiện thực hóa từng bước một chiến lược giao dịch trong ngày hoàn chỉnh.
Mô-đun chính sách
Tăng pha
Mức tăng theo giai đoạn được tính bằng cách tính phần trăm chênh lệch giữa giá đóng cửa của dòng K hiện tại và giá đóng cửa của N giai đoạn trước đó. Ví dụ, để tính toán sự gia tăng của 10 chu kỳ dòng K cuối cùng, mã có thể được viết như sau:

Hình 3-36
Từ đoạn mã trên, chúng ta có thể thấy cách máy tính thực thi đòi hỏi một vòng lặp logic hoàn chỉnh. Ví dụ, để tính tốc độ tăng trưởng của 10 chu kỳ K-line cuối cùng, cần chia thành các bước sau:
Đầu tiên, máy tính phải biết rõ sản phẩm bạn muốn giao dịch. Ví dụ, ví dụ trên là methanol, vì vậy hãy đặt mã hợp đồng thành: "MA888". Sau khi thiết lập mã hợp đồng, bạn có thể lấy được dữ liệu dòng K của hợp đồng.
Với dữ liệu K-line, bạn có thể lấy được dữ liệu chi tiết của bất kỳ K-line nào từ dữ liệu K-line này.
Để tính mức tăng định kỳ, trước tiên bạn phải lấy giá đóng cửa của hai dòng K, ví dụ: giá đóng cửa của dòng K trước đó và giá đóng cửa của dòng K thứ 11 trước đó.
Cuối cùng, dựa trên giá đóng cửa của hai đường K này, hãy tính tỷ lệ tăng của giai đoạn. Mỗi chiến lược sau đây đều có đặc điểm của các vòng lặp logic và thuộc tính có điều kiện. Khi bạn hiểu được logic này, lập trình trực quan sẽ trở nên dễ dàng hơn nhiều.
Khối lượng lớn tăng
Một đợt tấn công tăng giá với khối lượng lớn có thể được hiểu là giá tăng và khối lượng giao dịch tăng mạnh. Ví dụ: Nếu giá đóng cửa của một K-line gấp 1,5 lần giá đóng cửa của 10 K-line trước đó, điều đó có nghĩa là nó đã tăng 50% trong 10 ngày; khối lượng giao dịch vượt quá 5 lần mức trung bình của 10 K-line trước đó. Nó có thể được viết dưới dạng mã như sau:

Hình 3-37
Khoảng cách
Khoảng cách là tình huống mà giá cao nhất và thấp nhất của hai đường K không được kết nối. Nó bao gồm hai đường K. Khoảng cách là giá tham chiếu cho các điểm hỗ trợ và áp lực trong tương lai. Khi xuất hiện khoảng trống, có thể cho rằng xu hướng theo hướng khoảng trống ban đầu đã bắt đầu tăng tốc. Điều này có thể được viết bằng mã:

Hình 3-38
Các chỉ số kỹ thuật chung
Đường trung bình động EMA
Theo quan điểm thống kê, đường trung bình động là giá trung bình cộng của giá hàng ngày và là quỹ đạo giá có xu hướng. Hệ thống trung bình động là một công cụ kỹ thuật thường được hầu hết các nhà phân tích sử dụng. Theo quan điểm kỹ thuật, đây là một yếu tố ảnh hưởng đến giá tâm lý của các nhà phân tích kỹ thuật và yếu tố ra quyết định mua và bán. Đây là một công cụ tham khảo tốt cho các nhà phân tích kỹ thuật. Công cụ định lượng của nhà phát minh hỗ trợ nhiều loại trung bình động khác nhau, như thể hiện trong hình sau:

Hình 3-39
Chỉ số MACD
Chỉ báo MACD sử dụng đường trung bình động nhanh (ngắn hạn) và chậm (dài hạn) cùng các dấu hiệu hội tụ và tách biệt của chúng và thực hiện hoạt động làm mịn kép. MACD được phát triển dựa trên nguyên lý đường trung bình động, đã loại bỏ được khuyết điểm thường xuyên phát ra tín hiệu sai của đường trung bình động, và vẫn giữ nguyên hiệu ứng của đường trung bình động. Do đó, chỉ báo MACD có đặc điểm là xu hướng đường trung bình động, ổn định và bền vững. Đây là chỉ báo phân tích kỹ thuật dùng để đánh giá thời điểm mua bán cổ phiếu và dự đoán giá cổ phiếu tăng giảm. Phương pháp tính toán như sau:

Hình 3-40
Chỉ số KDJ
Chỉ báo KDJ kết hợp những ưu điểm của khái niệm động lượng, chỉ báo sức mạnh, điểm yếu và đường trung bình động, và được sử dụng để đo mức độ biến động của giá cổ phiếu so với phạm vi giá bình thường. Không chỉ giá đóng cửa được xem xét mà còn cả giá cao nhất và thấp nhất gần đây, điều này tránh được điểm yếu là chỉ xem xét giá đóng cửa và bỏ qua sự biến động thực sự. Phương pháp tính toán như sau:

Hình 3-41
Viết chiến lược
Người cố vấn của Warren Buffett là Benjamin Graham đã từng đề cập đến mô hình giao dịch cân bằng động giữa cổ phiếu và trái phiếu trong cuốn sách "Nhà đầu tư thông minh" của ông.
Mô hình giao dịch này rất đơn giản:
Đầu tư 50% tiền của bạn vào quỹ cổ phiếu và 50% còn lại vào quỹ trái phiếu. Nghĩa là cổ phiếu và trái phiếu mỗi bên chiếm một nửa.
Cân bằng lại tài sản một lần theo các khoảng thời gian cố định hoặc dựa trên những thay đổi của thị trường để khôi phục tỷ lệ tài sản cổ phiếu so với tài sản trái phiếu về mức ban đầu là 1:1. Đây là toàn bộ logic của chiến lược, bao gồm thời điểm mua và bán, cũng như mua và bán bao nhiêu. Thật đơn giản!
Trong phương pháp này, tính biến động của quỹ trái phiếu thực sự rất nhỏ, thấp hơn nhiều so với tính biến động của cổ phiếu, vì vậy trái phiếu được sử dụng làm "mỏ neo tham chiếu" ở đây, tức là sử dụng trái phiếu để đo lường xem cổ phiếu có tăng quá nhiều hay không. Nó vẫn tăng quá ít.
Nếu giá cổ phiếu tăng, giá trị thị trường của cổ phiếu sẽ lớn hơn giá trị thị trường của trái phiếu. Khi tỷ lệ giá trị thị trường của hai bên vượt quá ngưỡng đã đặt, tổng vị thế sẽ được điều chỉnh lại, cổ phiếu sẽ được bán và trái phiếu sẽ được mua để đưa tỷ lệ giá trị thị trường cổ phiếu-trái phiếu trở lại mức ban đầu là 1:1.
Ngược lại, nếu giá cổ phiếu giảm, giá trị thị trường của cổ phiếu sẽ thấp hơn giá trị thị trường của trái phiếu. Khi tỷ lệ giá trị thị trường của hai bên vượt quá ngưỡng đã đặt, tổng vị thế sẽ được điều chỉnh lại để mua cổ phiếu và bán trái phiếu để đưa tỷ lệ giá trị thị trường cổ phiếu-trái phiếu trở về mức ban đầu là 1:1.
Bằng cách này, tỷ lệ cân bằng động giữa cổ phiếu và trái phiếu, đủ để thưởng thức trái cây của sự tăng trưởng của cổ phiếu và giảm tỷ lệ biến động của tài sản. Là người tiên phong trong đầu tư giá trị, Graham cung cấp cho chúng tôi một ý tưởng tốt.
Chiến lược Logic
Theo giá trị hiện tại của BTC, số dư tài khoản sẽ là 5000 Yên tiền mặt và 0,1 BTC, tức là tỷ lệ ban đầu của tiền mặt so với giá trị thị trường BTC là 1:1.
Nếu giá BTC tăng lên ¥6000, tức là giá trị thị trường của BTC lớn hơn số dư tài khoản và chênh lệch giữa chúng vượt quá ngưỡng đã đặt thì sẽ bán (6000-5000)/6000/2 coin. Điều này có nghĩa là BTC đã tăng giá và tiền có thể được đổi lại.
Nếu giá BTC giảm xuống còn ¥4000, tức là giá trị thị trường của BTC thấp hơn số dư tài khoản và chênh lệch giữa chúng vượt quá ngưỡng đã đặt, thì hãy mua (5000-4000)/4000/2 coin. Điều này có nghĩa là BTC đã mất giá, vì vậy hãy mua lại BTC.
Theo cách này, bất kể BTC tăng hay giảm giá, số dư tài khoản và giá trị thị trường của BTC luôn được giữ bằng nhau. Nếu BTC mất giá, hãy mua một ít và khi giá tăng trở lại, hãy bán một ít, giống như một sự cân bằng vậy.
Điều kiện mua hàng: Nếu giá trị thị trường vị thế hiện tại trừ đi số dư khả dụng hiện tại nhỏ hơn 5% số dư khả dụng hiện tại âm, hãy mở vị thế mua.
Điều kiện bán hàng:Nếu giá trị thị trường của vị thế hiện tại trừ đi số dư khả dụng hiện tại lớn hơn 5% số dư khả dụng hiện tại, hãy đóng vị thế và bán.
Điều kiện tiên quyết
- Thị trường hiện tại
- Tài sản hiện tại
- Tổng giá trị thị trường của tiền xu
- Chênh lệch tài sản
Xây dựng chiến lược
Chiến lược biên soạn trực quan Bước 1
Chúng tôi tính toán bốn điều kiện tiên quyết cho chiến lược giao dịch và gán chúng vào các biến tương ứng. Với lập trình trực quan, các khối mã trông như thế này. Như được hiển thị bên dưới

Hình 3-42
Cần lưu ý rằng tổng giá trị thị trường của một loại tiền tệ là tổng giá trị thị trường của số lượng tiền hiện đang nắm giữ và phương pháp tính toán là nhân tổng số lượng tiền hiện đang nắm giữ với giá mới nhất hiện tại. Chênh lệch tài sản là tổng giá trị thị trường của loại tiền trừ đi số dư hiện có.
Chiến lược biên soạn trực quan Bước 2
Sau khi các điều kiện tiên quyết và điều kiện cần thiết được chỉ định, bạn cần phải viết logic giao dịch. Việc này không phức tạp như bạn nghĩ đâu. Nó không có gì hơn là thể hiện logic chiến lược trên dưới dạng các khối mã.
Nghĩa là, nếu chênh lệch tài sản nhỏ hơn 5% số dư âm khả dụng thì mua; nếu chênh lệch tài sản lớn hơn 5% số dư khả dụng thì bán. Như hình dưới đây:

Hình 3-43
Toàn bộ chiến lược dường như đã được viết ra, nhưng bạn phải biết rằng chương trình được thực thi từ trên xuống dưới và dừng lại sau khi thực thi. Tuy nhiên, chiến lược giao dịch của chúng tôi không phải là thực hiện các điều kiện giao dịch một lần mà là thực hiện chúng nhiều lần.
Nói cách khác, chương trình cần phải liên tục kiểm tra xem các điều kiện chiến lược đã được đáp ứng hay chưa. Nếu có, hãy thực hiện lệnh mua hoặc bán; nếu không, hãy tiếp tục kiểm tra. Lúc này, bạn cần sử dụng một câu lệnh lặp khác như minh họa bên dưới:

Hình 3-44
Kiểm tra lại chiến lược
Không có sự khác biệt cơ bản nào giữa các chiến lược trực quan hóa và các chiến lược được viết bằng các ngôn ngữ lập trình khác. Chúng cũng hỗ trợ thử nghiệm dữ liệu lịch sử với nhiều giai đoạn và mức độ chính xác. Tất nhiên, chúng cũng hỗ trợ giao dịch theo thời gian thực các hợp đồng tương lai hàng hóa trong nước và nước ngoài và tiền kỹ thuật số. Sau đây là thông tin kiểm tra ngược của chiến lược:

Hình 3-45
Đến thời điểm này, một chiến lược giao dịch hoàn chỉnh đã được hoàn tất. Để phòng ngừa những kẻ muốn lợi dụng chúng ta, chiến lược này đã được chia sẻ trên Strategy Square và có thể được sao chép và nghiên cứu trực tiếp.
Phần kết luận
Nguyên tắc 10.000 giờ luôn tồn tại, nhưng đối với các nhà giao dịch không có kiến thức cơ bản, không thể dành 10.000 giờ để quay lại ngành. Vì vậy, bạn phải có một chiếc thang, và đối với các nhà giao dịch không có nền tảng lập trình nào, thì lập trình trực quan của Inventor Quant chính là chiếc thang giúp bạn tham gia nhanh chóng.
Với lập trình trực quan, bạn không cần phải nhớ cú pháp và tên phương thức, bạn chỉ cần duyệt qua các mô-đun chức năng và tìm những gì bạn muốn. Đây cũng chính là mục đích ban đầu của người phát minh ra giao dịch định lượng, đó là giúp những người mới bắt đầu giao dịch định lượng hạ thấp ngưỡng tham gia và tăng hứng thú với giao dịch định lượng, để mọi người đều có thể trở thành nhà giao dịch định lượng!
Tuy nhiên, nói như vậy không có vấn đề gì khi sử dụng lập trình trực quan như một bước đệm để học định lượng, nhưng nó cũng có những hạn chế riêng, chẳng hạn như không có khả năng phát triển các chiến lược giao dịch quá phức tạp và tinh vi. Nhưng điều này không ảnh hưởng đến bước đầu tiên của bạn trong giao dịch định lượng!
Xem trước phần tiếp theo
Xét về góc độ chuyên môn của giao dịch định lượng, cả ngôn ngữ Mai và ngôn ngữ hình ảnh đều chỉ là những ngôn ngữ chuyển tiếp để bước vào thế giới giao dịch định lượng. Đặc điểm ngôn ngữ của họ quyết định những hạn chế trong việc phát triển các chiến lược giao dịch định lượng và một số chiến lược phức tạp khó có thể được triển khai. Vì vậy, trong phần tiếp theo, chúng tôi sẽ hướng dẫn bạn về JavaScript, một ngôn ngữ lập trình cấp cao chính thức và là cách duy nhất giúp bạn tiến tới giao dịch định lượng nâng cao.
Bài tập về nhà
- Cố gắng triển khai chỉ báo Dải Bollinger bằng ngôn ngữ trực quan.
- Hãy thử sử dụng mô-đun giao dịch trong phần này để hoàn thiện chiến lược giao dịch.
Chương 4 Triển khai các chiến lược giao dịch trong các ngôn ngữ lập trình chính thống
4.1 Giới thiệu nhanh về ngôn ngữ JavaScript
bản tóm tắt
Với tư cách là một ngôi sao giao dịch định lượng trong tương lai, bạn không thể chỉ học một ngôn ngữ đơn giản. Mặc dù ngôn ngữ Mai và ngôn ngữ trực quan của các công cụ định lượng của nhà phát minh có thể giúp bạn bắt đầu, nhưng chúng có nhiều hạn chế trong việc phát triển chiến lược do đặc điểm ngôn ngữ của chúng. Do đó, nếu bạn muốn có chỗ đứng trong giao dịch định lượng, bạn phải học một ngôn ngữ lập trình chính thức.
Tại sao nên học JavaScript
So với ngôn ngữ trực quan, JavaScript có hiệu suất và hiệu quả thực thi cao hơn. Và về mặt phát triển chiến lược, JavaScript linh hoạt hơn nhiều so với ngôn ngữ trực quan. Ví dụ, nếu bạn muốn phát triển chiến lược chênh lệch giá, bạn không thể sử dụng ngôn ngữ trực quan vì nó có các mô-đun hạn chế và không hỗ trợ các chiến lược giống như chênh lệch giá, trong khi JavaScript có thể dễ dàng thực hiện công việc.
Ngoài ra, JavaScript ngắn gọn và thanh lịch hơn ngôn ngữ trực quan. Ví dụ, 10 dòng mã trong ngôn ngữ trực quan có thể được viết trong 5 dòng trong JavaScript. Theo một số cách, ngôn ngữ hình ảnh chỉ là phiên bản văn bản của JavaScript, còn cách thực thi và logic của mã này hầu như giống với JavaScript. Nếu bạn học ngôn ngữ hình ảnh, việc học JavaScript sẽ rất dễ dàng.
Giới thiệu về JavaScript
JavaScript là một ngôn ngữ lập trình cấp cao chính thức. Ngôn ngữ này phù hợp để làm ngôn ngữ nhập môn cho việc học lập trình và cũng là ngôn ngữ làm việc cho công việc phát triển hàng ngày. Đây là một trong những ngôn ngữ máy tính triển vọng và đầy hứa hẹn nhất hiện nay và vẫn giữ vị trí thống trị không thể lay chuyển trên phương diện trình duyệt. Mặc dù nổi tiếng trong việc phát triển các trang web, nhưng nó cũng được sử dụng trong nhiều môi trường không phải trình duyệt, chẳng hạn như máy chủ, PC, thiết bị di động, v.v. Tất nhiên, nó cũng có thể thực hiện giao dịch định lượng!
Chiến lược hoàn chỉnh
Để giúp bạn nhanh chóng hiểu được kiến thức chính của phần này, trước khi giới thiệu nhanh về ngôn ngữ JavaScript lượng tử của nhà phát minh, trước tiên bạn nên hiểu sơ bộ về các khái niệm trong phần này. Hãy lấy chiến lược đường trung bình động kép đơn giản nhất làm ví dụ:
Mở vị thế dài:Nếu không có vị trí hiện tại và đường trung bình động 5 kỳ lớn hơn đường trung bình động 20 kỳ.
Mở một vị thế bán khống:Nếu không có vị thế hiện tại và đường trung bình động 5 kỳ nhỏ hơn đường trung bình động 20 kỳ.
Đóng vị thế dài:Nếu hiện tại bạn đang nắm giữ vị thế mua và đường trung bình động 5 kỳ nhỏ hơn đường trung bình động 20 kỳ.
Đóng vị thế bán khống:Nếu hiện tại bạn đang nắm giữ vị thế bán khống và đường trung bình động 5 kỳ lớn hơn đường trung bình động 20 kỳ.
Nếu viết bằng JavaScript, nó sẽ trông như thế này:

Hình 4-1
Mã trong hình trên là một chiến lược giao dịch định lượng hoàn chỉnh được viết bằng JavaScript. Nó có thể chạy theo thời gian thực và tự động đặt hàng. Xét về số lượng mã, ngôn ngữ này đơn giản hơn ngôn ngữ hình ảnh. Quy trình thiết kế toàn bộ chiến lược bao gồm: thiết lập loại thị trường, thu thập dữ liệu K-line, thu thập thông tin vị trí, tính toán logic giao dịch và đặt lệnh mua và bán.
Biểu tượng
Mọi thứ trong JavaScript (biến, tên hàm và toán tử) đều phân biệt chữ hoa chữ thường, nghĩa là tên biến test và tên biến Test là hai biến khác nhau. Ký tự đầu tiên của một định danh (tên của một biến, hàm, thuộc tính, tham số hàm) phải là một chữ cái, một dấu gạch dưới (_), ký hiệu đô la ($), và các ký tự sau cũng có thể là số, như thể hiện trong hình sau:

Hình 4-2
Ghi chú
Bình luận bao gồm bình luận một dòng và bình luận cấp khối. Bình luận một dòng bắt đầu bằng hai dấu gạch chéo và bình luận khối bắt đầu bằng dấu gạch chéo và dấu hoa thị (/) và kết thúc bằng dấu hoa thị và dấu gạch chéo (/) như hình dưới đây:

Hình 4-3
Các tuyên bố
Mỗi câu lệnh đều kết thúc bằng dấu chấm phẩy; mặc dù không bắt buộc nhưng chúng tôi khuyên bạn không nên bỏ qua nó. Việc thêm dấu chấm phẩy có thể tăng hiệu suất mã trong một số trường hợp, như thể hiện trong hình sau:

Hình 4-4
Biến số
Biến có thể lưu trữ bất kỳ loại dữ liệu nào. Khi tạo biến, hãy sử dụng toán tử var theo sau là tên biến. Khi định nghĩa một biến, bạn cũng có thể thiết lập giá trị cho biến đó. Khi một biến được tạo, bạn không cần phải sử dụng toán tử var để thiết lập lại giá trị của biến, như minh họa bên dưới:

Hình 4-5
dữ liệu
JavaScript có tổng cộng 5 kiểu dữ liệu, cụ thể là: Undefined, Null, Boolean, Number và String, như thể hiện trong hình sau:

Hình 4-6
Undefined chỉ có một giá trị đặc biệt là "undefined", biểu thị một giá trị chưa được thiết lập. Ví dụ, nếu chúng ta chỉ định nghĩa một biến và không đặt giá trị cho nó, giá trị của biến sẽ là "không xác định".
Null chỉ có một giá trị duy nhất, giá trị đặc biệt "null", biểu thị cho giá trị được đặt thành rỗng. Ví dụ, nếu trước tiên chúng ta tạo một biến rồi đặt giá trị của biến đó thành "null", thì giá trị trả về của biến đó sẽ là "null".
Boolean có hai giá trị, "true" và "false". "true" biểu thị đúng và "false" biểu thị sai. Lưu ý rằng cả "true" và "false" đều là chữ thường.
Số là loại số, bao gồm: số dương, số âm, số nguyên, số thập phân, v.v. Ngoài ra, "NaN" cũng là một số đặc biệt chỉ rõ tình huống không có giá trị nào được trả về, ví dụ: 1 chia cho 0 trả về "NaN".
Bạn có thể hiểu String là văn bản, bao gồm tiếng Trung và tiếng Anh, và bạn có thể tạo chuỗi bằng dấu ngoặc đơn hoặc dấu ngoặc kép. Ví dụ: "fmz" hoặc "inventor quantization".
Đối tượng
Bạn có thể nghĩ về một đối tượng như một thùng chứa để lưu trữ nhiều dữ liệu khác nhau, trong đó các thuộc tính và giá trị tương ứng với nhau. Trước tiên, bạn có thể tạo vùng chứa này thông qua toán tử new. Bạn cũng có thể thêm thuộc tính và phương thức vào đối tượng đã tạo, như thể hiện trong hình sau:

Hình 4-7
Nhóm
Mảng cũng là một container để lưu trữ nhiều dữ liệu khác nhau, 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. Ngoài ra, mảng JavaScript có thể lưu trữ bất kỳ kiểu dữ liệu nào, như được hiển thị bên dưới:

Hình 4-8
chức năng
Các hàm trong JavaScript về cơ bản giống như các hàm chúng ta đã học ở trường trung học. Bạn có thể nghĩ về nó như những gì được truyền vào và những gì được xuất ra thông qua phép tính của hàm, như thể hiện trong hình sau:

Hình 4-9
Máy tính
JavaScript có nhiều toán tử khác nhau, cụ thể là toán tử số học, toán tử so sánh và toán tử logic. Trong đó, toán tử số học là các phép toán cộng, trừ, nhân, chia. Toán tử so sánh có thể so sánh xem hai giá trị có nhỏ hơn hay nhỏ hơn không. Các toán tử logic chính là: logic AND, logic OR và logic NOT. Như thể hiện trong hình sau:

Hình 4-10
Cần lưu ý rằng: "&&" là phép toán logic AND, có nghĩa là "và". “||” là phép toán logic OR, có nghĩa là “hoặc”. "!" là một phủ định logic, có nghĩa là "không":
“&&” nghĩa là khi tất cả các điều kiện đều “đúng”, thì điều kiện cuối cùng sẽ là “đúng”;
“||” có nghĩa là trong tất cả các điều kiện, chỉ cần một trong số chúng là “đúng”, thì điều kiện cuối cùng sẽ là “đúng”.
Ưu tiên
Nếu có 100*Đối với biểu thức (10-1)/(10+5), bước nào trong chương trình sẽ tính toán đầu tiên? Toán trung học cơ sở cho ta biết: ① Nếu là phép tính cùng cấp độ thì thường tính từ trái sang phải. ② Nếu có cả phép cộng và phép trừ cũng như phép nhân và phép chia, thì tính phép nhân và phép chia trước, sau đó tính phép cộng và phép trừ. ③Nếu có dấu ngoặc thì trước tiên hãy tính nội dung bên trong dấu ngoặc. ④ Nếu phù hợp với các quy luật vận hành thì có thể sử dụng các quy luật vận hành để đơn giản hóa phép tính. Điều tương tự cũng đúng với mức độ ưu tiên của ngôn ngữ JavaScript, như được hiển thị bên dưới:

Hình 4-11
Câu lệnh có điều kiện
Thông thường khi viết mã, bạn sẽ cần thực hiện nhiều hành động khác nhau cho những quyết định khác nhau. Bạn có thể sử dụng các câu lệnh điều kiện trong mã của mình để thực hiện nhiệm vụ này. Trong JavaScript, chúng ta có thể sử dụng các câu lệnh điều kiện sau:
câu lệnh if - Sử dụng câu lệnh này để thực thi mã chỉ khi điều kiện được chỉ định là đúng
Câu lệnh if...else - thực thi mã nếu điều kiện là đúng và thực thi mã khác nếu điều kiện là sai
if...else if....else Câu lệnh - Sử dụng câu lệnh này để chọn một trong nhiều khối mã để thực thi
câu lệnh switch - Sử dụng câu lệnh này để chọn một trong nhiều khối mã để thực thi
Câu lệnh If
Câu lệnh này chỉ thực thi mã nếu điều kiện được chỉ định là đúng. Vui lòng sử dụng chữ thường nếu. Sử dụng chữ in hoa (IF) sẽ tạo ra lỗi JavaScript! Như thể hiện trong hình sau:

Hình 4-12#
Câu lệnh if...else
Khi điều kiện đúng, mã sẽ được thực thi, và khi điều kiện sai, mã khác sẽ được thực thi, như thể hiện trong hình sau:

Hình 4-13
vòng lặp for
Đôi khi chúng ta cần lấy dữ liệu K-line của vài ngày gần nhất và chúng ta cần lấy dữ liệu này từ mảng K-line theo trình tự theo vị trí của dữ liệu K-line. Khi đó, sử dụng vòng lặp for rất tiện lợi, như thể hiện trong hình sau:

Hình 4-14
Vòng lặp While
Chúng ta đều biết rằng thị trường liên tục thay đổi. Nếu bạn muốn có được mảng K-line mới nhất, bạn phải chạy đi chạy lại cùng một mã. Sau đó sử dụng vòng lặp whilex. Miễn là điều kiện được chỉ định là đúng, vòng lặp luôn có thể lấy được mảng K-line mới nhất.

Hình 4-15
câu lệnh break và câu lệnh continue
Vòng lặp có một điều kiện tiên quyết. Chỉ khi điều kiện tiên quyết là "đúng" thì vòng lặp mới bắt đầu thực hiện một việc gì đó lặp đi lặp lại và vòng lặp sẽ không kết thúc cho đến khi điều kiện tiên quyết là "sai". Tuy nhiên, câu lệnh break có thể ngay lập tức thoát khỏi vòng lặp trong quá trình thực thi vòng lặp; câu lệnh continue có thể ngắt một vòng lặp nhất định và sau đó tiếp tục vòng lặp tiếp theo. Như thể hiện trong hình sau:

Hình 4-16
câu lệnh trả về
Câu lệnh return kết thúc việc thực thi một hàm và trả về giá trị của hàm đó. Câu lệnh return chỉ có thể xuất hiện trong thân hàm. Nếu nó xuất hiện ở bất kỳ nơi nào khác trong mã, nó sẽ gây ra lỗi cú pháp!

Hình 4-17
Khung chiến lược CTA
Trong Inventor Quantitative Tool, việc viết các chiến lược bằng JavaScript rất tiện lợi. Công cụ chính thức này đã tích hợp sẵn một bộ khung chiến lược chuẩn, như thể hiện trong hình sau:

Hình 4-18
Như được hiển thị trong mã ở trên, đây là một khuôn khổ chiến lược chuẩn. Ngoại trừ "mã sản phẩm tương lai hàng hóa" có thể thay đổi, mọi thứ khác đều ở định dạng cố định. Ưu điểm lớn nhất của việc sử dụng khuôn khổ để viết chiến lược là bạn chỉ cần viết logic chiến lược. Các vấn đề khác như mua lại thị trường, xử lý đơn hàng, v.v. đều được khuôn khổ xử lý. Điều này cho phép bạn tập trung vào việc phát triển chiến lược.
Tóm tắt
Trên đây là phần giới thiệu nhanh về ngôn ngữ JavaScript. Sau khi học, bạn có thể lập trình các chiến lược giao dịch định lượng. Nếu bạn cần viết các chiến lược phức tạp hơn, bạn có thể tham khảo tài liệu API ngôn ngữ JavaScript của Inventor Quantitative Tool.
Xem trước phần tiếp theo
Giao dịch trong ngày cũng là một mô hình giao dịch. Phương pháp này không giữ vị thế qua đêm, do đó rủi ro biến động thị trường thấp hơn. Khi điều kiện thị trường bất lợi xảy ra, có thể điều chỉnh kịp thời. Sau khi học ngôn ngữ JavaScript trong phần này, ở phần tiếp theo, chúng tôi sẽ chỉ cho bạn cách viết một chiến lược giao dịch định lượng trong ngày khả thi.
Bài tập về nhà
- Thử sử dụng ngôn ngữ JavaScript trong Công cụ định lượng Inventor để lấy dữ liệu đường K lịch sử.
- Cố gắng viết mã chiến lược ở đầu phần này và thêm bình luận.
4.2 Cách triển khai chiến lược giao dịch bằng ngôn ngữ JavaScript
bản tóm tắt
Trong bài viết trước, chúng tôi đã giải thích các điều kiện tiên quyết để triển khai các chiến lược giao dịch từ các khía cạnh giới thiệu ngôn ngữ JavaScript, cú pháp cơ bản, khuôn khổ chiến lược CTA, v.v. Trong bài viết này, chúng tôi sẽ tiếp tục nội dung của bài viết trước và giúp bạn triển khai từng bước một chiến lược giao dịch định lượng trong ngày khả thi từ các mô-đun chiến lược và chỉ báo kỹ thuật thường dùng.
Giới thiệu chiến lược
Dải Bollinger còn được gọi là Kênh Bollinger, viết tắt là BOLL trong tiếng Anh. Đây là một trong những chỉ báo kỹ thuật được sử dụng phổ biến nhất và được John Bollinger phát minh vào những năm 1980. Về mặt lý thuyết, giá luôn dao động trong một phạm vi nhất định xung quanh giá trị. Dựa trên nền tảng lý thuyết này, Bollinger Bands đã giới thiệu khái niệm "kênh giá".
Phương pháp tính toán là sử dụng các nguyên tắc thống kê để đầu tiên tính "độ lệch chuẩn" của giá trong một khoảng thời gian, sau đó cộng/trừ 2 lần độ lệch chuẩn từ đường trung bình động để tìm ra "khoảng tin cậy" của giá. Hình dạng cơ bản của nó là một kênh dải bao gồm ba đường ray (đường ray giữa, đường ray trên và đường ray dưới). Đường ở giữa là chi phí trung bình của giá, đường trên và đường dưới lần lượt biểu thị đường áp lực và đường hỗ trợ của giá.
Do áp dụng khái niệm độ lệch chuẩn, độ rộng của Dải Bollinger sẽ được điều chỉnh linh hoạt theo biến động giá gần đây. Khi độ biến động nhỏ, Dải Bollinger sẽ hẹp lại; khi độ biến động lớn, Dải Bollinger sẽ rộng ra. Khi kênh BOLL trở nên hẹp hơn, điều đó có nghĩa là giá đang dần trở về mức trung bình. Khi kênh BOLL chuyển từ hẹp sang rộng, điều đó có nghĩa là thị trường bắt đầu thay đổi. Nếu giá vượt qua đường ray trên, điều đó cho thấy sức mua đã tăng lên. Nếu giá vượt qua đường ray dưới, điều đó cho thấy sức bán đã tăng lên.
Phương pháp tính toán chỉ báo Bollinger Bands
Trong số tất cả các chỉ báo kỹ thuật, phương pháp tính toán Dải Bollinger là một trong những phương pháp phức tạp nhất, đưa ra khái niệm độ lệch chuẩn trong thống kê và liên quan đến việc tính toán đường giữa (MB), đường trên (UP) và đường dưới (DN). Phương pháp tính toán như sau:
Đường giữa = Đường trung bình động đơn giản trong N khoảng thời gian
Đường ray phía trên = Đường giữa + K × độ lệch chuẩn của N khoảng thời gian
Đường ray dưới = Đường giữa − Độ lệch chuẩn của khoảng thời gian K × N

Hình 4-19
Chiến lược Logic
Có nhiều cách để sử dụng Bollinger Bands. Chúng có thể được sử dụng riêng lẻ hoặc kết hợp với các chỉ báo khác. Trong hướng dẫn này, chúng ta sẽ sử dụng phương pháp đơn giản nhất để sử dụng Dải Bollinger. Tức là: khi giá phá vỡ đường trên từ dưới lên trên, tức là phá vỡ đường áp suất trên, chúng tôi cho rằng lực tăng giá đang mạnh lên, một làn sóng thị trường tăng đã được hình thành và tín hiệu mở lệnh mua được tạo ra; khi giá giảm xuống dưới đường dưới từ trên xuống dưới, tức là giảm xuống dưới đường hỗ trợ, chúng tôi cho rằng lực giảm giá đang mạnh lên, một làn sóng xu hướng giảm đã được hình thành và tín hiệu mở lệnh bán được tạo ra.

Hình 4-20
Nếu sau khi mở vị thế mua, giá giảm trở lại đường giữa của Dải Bollinger, chúng tôi tin rằng lực tăng giá đang yếu đi hoặc lực giảm giá đang mạnh lên và tín hiệu đóng bán được tạo ra; nếu sau khi mở vị thế bán, giá tăng trở lại đường giữa của Dải Bollinger, chúng tôi tin rằng lực giảm giá đang yếu đi hoặc lực tăng giá đang mạnh lên và tín hiệu đóng mua được tạo ra.
Điều kiện giao dịch
Mở vị thế dài: Nếu không có vị thế, và giá đóng cửa lớn hơn đường ray trên cùng, và thời gian không phải là 14:45
Mở một vị thế bán khống:Nếu không có vị thế, giá đóng cửa thấp hơn đường ray dưới và thời gian không phải là 14:45
Đóng vị thế dài:Nếu bạn giữ lệnh dài và giá đóng cửa thấp hơn giá trung bình hoặc thời gian là 14:45
Đóng vị thế bán khống:Nếu bạn giữ lệnh bán khống và giá đóng cửa lớn hơn giá trung bình hoặc thời gian là 14:45
Thực hiện mã chiến lược
Để triển khai một chiến lược, trước tiên chúng ta cần cân nhắc xem chúng ta cần dữ liệu gì? Có thể lấy thông tin này thông qua API nào? Vậy thì làm sao để tính toán logic giao dịch? Cuối cùng, những phương pháp nào được sử dụng để đặt lệnh và giao dịch? Tiếp theo, chúng ta hãy thực hiện từng bước một:
Bước 1: Sử dụng Khung chiến lược CTA
Cái gọi là khung chiến lược CTA là một khung tiêu chuẩn được Inventor Quantitative chính thức ra mắt. Sử dụng khung này, bạn không phải lo lắng về các vấn đề tầm thường trong việc phát triển các chiến lược giao dịch định lượng và có thể tập trung trực tiếp vào logic giao dịch lập trình. Ví dụ, nếu bạn không sử dụng khuôn khổ này, khi đặt lệnh, bạn cần cân nhắc đến việc chuyển khoản hàng tháng, giá mua và bán lệnh, hủy lệnh hoặc theo dõi khi lệnh không được thực hiện, v.v.

Hình 4-21
Hình ảnh trên là khuôn khổ chiến lược CTA sử dụng các công cụ định lượng của nhà phát minh. Đây là định dạng mã cố định và tất cả mã logic giao dịch được viết bắt đầu từ dòng 3. Trong quá trình sử dụng, ngoài mã số giống (màu vàng nhạt) thì không cần thay đổi gì thêm.
Xin lưu ý rằng mã sản phẩm trong hình trên là "rb000/rb888", nghĩa là dữ liệu tín hiệu sử dụng "rb000", dữ liệu giao dịch sử dụng "rb888" và việc chuyển tháng là tự động. Tất nhiên, bạn cũng có thể chỉ định mã sản phẩm cụ thể, chẳng hạn như mã sản phẩm "rb1910", nghĩa là cả dữ liệu tín hiệu và dữ liệu giao dịch đều sử dụng "rb1910".
FMZ có thư viện giao dịch hàng hóa tương lai JavaScript tích hợp. Bạn có thể sử dụng nó trong mã của mình bằng cách chỉ cần nhấp vào tham chiếu trong giao diện chỉnh sửa chiến lược:

Bước 2: Lấy nhiều dữ liệu khác nhau
Hãy suy nghĩ thật kỹ, bạn cần dữ liệu gì? Theo logic giao dịch chiến lược của mình, chúng tôi thấy rằng: trước tiên chúng ta cần có được trạng thái vị thế hiện tại, sau đó so sánh mối quan hệ giữa giá đóng cửa và các đường trên, giữa và dưới của chỉ báo Dải Bollinger và cuối cùng xác định xem thị trường sắp đóng cửa hay chưa. Vậy chúng ta hãy lấy dữ liệu này.
Lấy dữ liệu đường K
Bước đầu tiên là lấy mảng K-line và giá đóng cửa của K-line trước đó, vì chỉ có mảng K-line mới có thể tính toán được chỉ báo Dải Bollinger. Mã trông như thế này:

Hình 4-22
Như thể hiện trong hình trên:
Dòng 4: Lấy mảng K dòng, đây là một định dạng cố định.
Dòng 5: Lọc độ dài của đường K, vì tham số chúng ta sử dụng để tính chỉ báo Dải Bollinger là 20. Khi đường K nhỏ hơn 20, không thể tính được chỉ báo Dải Bollinger. Do đó, chúng ta cần lọc độ dài của K-line ở đây. Nếu có ít hơn 20 K-line, chúng ta sẽ quay lại trực tiếp và tiếp tục chờ K-line tiếp theo.
Dòng 6: Từ mảng K-line thu được, trước tiên lấy đối tượng của K-line trước đó, sau đó lấy giá đóng cửa từ đối tượng. Lấy phần tử thứ hai từ cuối của một mảng, là độ dài của mảng trừ đi 2 (r[r.length - 2]); Các phần tử trong mảng K-line đều là các đối tượng, chứa giá mở cửa, giá cao nhất, giá thấp nhất, giá đóng cửa, khối lượng giao dịch và thời gian. Để có giá đóng cửa, chỉ cần thêm "." và tên thuộc tính ở cuối (r[r.length - 2].Close)。
Nhận dữ liệu thời gian K-line
Vì chúng ta đang sử dụng chiến lược trong ngày, chúng ta cần đóng vị thế trước khi thị trường đóng cửa, vì vậy chúng ta cần xác định xem đường K hiện tại có gần với mức đóng cửa của thị trường hay không. Nếu gần, chúng ta đóng vị thế. Nếu không, chúng ta có thể mở vị thế. Mã như sau:

Hình 4-23
Như thể hiện trong hình trên:
Dòng 8: Lấy thuộc tính dấu thời gian của dòng K hiện tại, sau đó tạo một đối tượng thời gian (new Date(timestamp)).
Dòng 9: Tính giờ và phút dựa trên đối tượng thời gian và xác định xem thời gian của đường K có phải là 14:45 hay không.
Nhận dữ liệu vị trí
Thông tin vị thế là một điều kiện rất quan trọng trong các chiến lược giao dịch định lượng. Khi các điều kiện giao dịch được đáp ứng, cũng cần phải xác định xem có nên đặt lệnh dựa trên trạng thái vị thế và số lượng vị thế hay không. Ví dụ: khi các điều kiện để mở vị thế mua được đáp ứng, nếu bạn có vị thế, bạn không cần phải đặt lệnh lại; nếu bạn không có vị thế, bạn có thể đặt lệnh. Mã trông như thế này:

Hình 4-24
Như thể hiện trong hình trên:
Dòng 11: Lấy trạng thái vị trí hiện tại. Nếu có nhiều lệnh, giá trị là 1; nếu có lệnh bán khống, giá trị là -1; nếu không có vị thế nào, giá trị là 0.
Nhận dữ liệu Dải Bollinger
Tiếp theo, bạn cần tính toán giá trị của các đường trên, giữa và dưới của chỉ báo Dải Bollinger. Sau đó, trước tiên bạn cần lấy mảng Bollinger Bands, sau đó lấy giá trị của các dải trên, giữa và dưới từ mảng này. Trong Inventor Quantitative Tool, rất đơn giản để có được mảng Bollinger Band. Bạn có thể gọi trực tiếp Bollinger Band API. Phần khó là lấy được giá trị của các track trên, giữa và dưới, vì mảng Bollinger Band là mảng hai chiều.
Mảng hai chiều thực ra rất dễ hiểu. Nó là một mảng trong một mảng. Vì vậy, thứ tự thu thập là: đầu tiên lấy mảng đã chỉ định trong mảng, sau đó lấy phần tử đã chỉ định từ mảng đã chỉ định, như thể hiện trong hình sau:

Hình 4-25
Như thể hiện trong hình bên dưới, các dòng 13 đến 19 sử dụng mã để lấy giá trị của thanh trên, giữa và dưới của Dải Bollinger. Trong đó, dòng 13 sử dụng trực tiếp API của công cụ định lượng của nhà phát minh để trực tiếp thu được mảng Dải Bollinger; dòng 14 đến 16 trước tiên thu được mảng thanh ray trên, mảng thanh ray giữa và mảng thanh ray dưới trong mảng hai chiều tương ứng; dòng 17 đến 19 thu được giá trị thanh ray trên, thanh ray giữa và thanh ray dưới của Dải Bollinger của dòng K trước đó từ mảng thanh ray trên, mảng thanh ray giữa và mảng thanh ray dưới tương ứng.

Hình 4-26
Bước 3: Đặt hàng
Với dữ liệu trên, bạn có thể viết logic giao dịch và mã để đặt lệnh. Định dạng cũng rất đơn giản. Định dạng được sử dụng phổ biến nhất là "câu lệnh if", có thể được mô tả bằng lời như sau: nếu điều kiện 1 và điều kiện 2 được đáp ứng, hãy đặt hàng; nếu điều kiện 3 hoặc điều kiện 4 được đáp ứng, hãy đặt hàng. Như thể hiện trong hình sau:

Hình 4-27
Trong hình trên, dòng 21 đến 24 là logic giao dịch và mã đặt lệnh. Từ trên xuống dưới là: đóng dài, đóng ngắn, mở dài, mở ngắn.
Lấy việc mở một vị thế mua (dòng 23) làm ví dụ, đây là một "câu lệnh if". Nếu chỉ có một dòng mã được thực thi trong câu lệnh này, thì có thể bỏ qua dấu ngoặc nhọn "{}". Câu lệnh này được dịch thành văn bản như sau: Nếu vị trí hiện tại là 0 và giá đóng cửa lớn hơn đường ray trên cùng và thời gian K-line không phải là 14:45, thì "trả về 1"
Những người cẩn thận có thể thấy rằng có "return 1" và "return -1" trong những dòng này. Đây là một định dạng cố định, nghĩa là: nếu là mua, hãy viết "return 1"; nếu là bán, hãy viết "return -1". Mở một vị thế mua và đóng một vị thế bán đều là mua, vì vậy hãy viết "lợi nhuận 1"; mở một vị thế bán và đóng một vị thế mua đều là bán, vì vậy hãy viết "lợi nhuận -1".
Mã chiến lược hoàn chỉnh
Đến thời điểm này, một mã chiến lược hoàn chỉnh đã được viết. Nếu khung giao dịch, dữ liệu giao dịch, logic giao dịch, vị trí đặt lệnh, v.v. được viết riêng, thì chẳng phải sẽ rất đơn giản sao? Sau đây là toàn bộ mã của chiến lược này:

Hình 4-28
Có hai điểm cần lưu ý: cố gắng (nhưng không nhất thiết) viết logic chiến lược sao cho khi điều kiện gốc K-line được đáp ứng, lệnh K-line tiếp theo được đặt hoặc khi điều kiện gốc K-line được đáp ứng, lệnh K-line gốc được đặt. Theo cách này, kết quả kiểm tra ngược sẽ không khác nhiều so với kết quả thực tế. Bạn không cần phải viết theo cách này, nhưng bạn phải chú ý xem logic chiến lược có đúng không. Nói chung, logic đóng một vị thế nên được viết trước logic mở một vị thế. Mục đích của việc này là làm cho logic chiến lược phù hợp nhất có thể với kỳ vọng của bạn. Ví dụ: Nếu logic chiến lược tình cờ bắt kịp với vị thế đảo ngược, thì quy tắc của vị thế đảo ngược là đóng vị thế trước rồi mới mở vị thế mới. Thay vì mở một vị thế mới trước rồi mới đóng nó lại. Nếu chúng ta viết logic đóng trực tiếp trước logic mở thì vấn đề này sẽ không xảy ra.
Tóm tắt
Ở trên, chúng ta đã tìm hiểu từng bước để phát triển một chiến lược giao dịch định lượng trong ngày hoàn chỉnh, bao gồm: giới thiệu chiến lược, phương pháp tính toán chỉ báo Bollinger Band, logic chiến lược, điều kiện mua và bán, triển khai mã chiến lược, v.v. Thông qua trường hợp chiến lược này, bạn không chỉ có thể làm quen với phương pháp lập trình công cụ định lượng của nhà phát minh mà còn có thể điều chỉnh nó thành các chiến lược khác nhau dựa trên mẫu này.
Chiến lược giao dịch định lượng không gì khác hơn là bản tóm tắt các kinh nghiệm hoặc hệ thống giao dịch chủ quan. Nếu chúng ta viết ra các kinh nghiệm hoặc hệ thống được sử dụng trong giao dịch chủ quan trước khi viết chiến lược, sau đó dịch chúng thành mã từng cái một, bạn sẽ thấy rằng việc viết chiến lược sẽ dễ dàng hơn nhiều. Hãy thử xem!
Xem trước phần tiếp theo
Trong quá trình phát triển các chiến lược giao dịch định lượng, nếu bạn chỉ có thể chọn một ngôn ngữ lập trình, thì không cần do dự, bạn phải chọn Python. Từ thu thập dữ liệu đến kiểm tra ngược chiến lược đến giao dịch, Python đã bao phủ toàn bộ chuỗi kinh doanh. Nó chiếm một vị trí quan trọng trong lĩnh vực đầu tư định lượng tài chính. Trong khóa học tiếp theo, chúng ta sẽ tìm hiểu kiến thức cơ bản về ngôn ngữ Python.
Bài tập về nhà
- Cố gắng sử dụng kiến thức trong phần này để triển khai chiến lược đường trung bình động kép.
- Thử triển khai thuật toán chỉ báo KDJ bằng ngôn ngữ JavaScript trong Công cụ định lượng Inventor.
4.3 Giới thiệu nhanh về ngôn ngữ Python
bản tóm tắt
Trong quá trình phát triển các chiến lược giao dịch định lượng, nếu bạn chỉ có thể chọn một ngôn ngữ lập trình, thì không cần do dự, bạn phải chọn Python. Từ thu thập dữ liệu đến kiểm tra ngược chiến lược đến giao dịch, Python đã bao phủ toàn bộ chuỗi kinh doanh. Nó chiếm một vị trí quan trọng trong lĩnh vực đầu tư định lượng tài chính. Trong khóa học này, chúng ta sẽ tìm hiểu kiến thức cơ bản về ngôn ngữ Python.
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 khóa học trước, chúng ta đã học tổng cộng: Ngôn ngữ lập trình Mai, ngôn ngữ trực quan, ngôn ngữ JavaScript, bao gồm cả ngôn ngữ Python sẽ được học trong phần này. Một số bạn có thể có thắc mắc. Tôi ở đây để học giao dịch định lượng, tại sao tôi phải học nhiều ngôn ngữ lập trình như vậy?
Trên thực tế, mỗi ngôn ngữ lập trình đều có đặc điểm ngôn ngữ riêng, không có sự phân biệt giữa ngôn ngữ tốt và ngôn ngữ xấu. Nó phụ thuộc nhiều hơn vào ngôn ngữ lập trình nào phù hợp với chiến lược của bạn hơn và ngôn ngữ lập trình này có phù hợp với bạn không. Có câu nói rằng bạn chỉ có thể biết nếu bạn tự mình thử. Đây là lý do tại sao chúng tôi dành nhiều không gian để nói về ngôn ngữ lập trình. Nếu bạn muốn làm tốt công việc của mình, trước tiên bạn phải mài giũa các công cụ của mình.
Đồng thời, chúng tôi cũng cam kết mở ra cánh cửa nghiên cứu định lượng cho mọi người và phổ biến kiến thức về nhiều ngôn ngữ lập trình khác nhau. Nghiên cứu định lượng không hề bí ẩn và xa vời như chúng ta tưởng tượng. Tôi tin rằng nghiên cứu định lượng sẽ trở nên phổ biến và dễ tiếp cận với công chúng trong tương lai.
Tại sao nên chọn Python cho giao dịch định lượng
Quá trình giao dịch định lượng không gì khác hơn là thu thập dữ liệu, phân tích và tính toán dữ liệu, xử lý dữ liệu, v.v. Về mặt phân tích dữ liệu, không có ngôn ngữ nào có thể tính toán tốt và duy trì hiệu suất như Python. Đặc biệt trong việc xử lý dữ liệu phân tích chuỗi thời gian (K-line là dữ liệu chuỗi thời gian), Python có ưu điểm là đơn giản và tiện lợi hơn. Ngoài ra, so với các ngôn ngữ lập trình khác, Python ngắn gọn và dễ học hơn. Đọc một chương trình Python tốt cũng giống như đọc tiếng Anh.
Năm lý do để chọn Python
1. Ứng dụng định lượng rất rộng rãi:
Cả Quantopian ở Hoa Kỳ và Inventor Quant ở Trung Quốc đều có thể sử dụng ngôn ngữ Python.
2. Dễ học:
Triết lý thiết kế của Python lấy người dùng làm trung tâm và là ngôn ngữ được thông dịch dễ gỡ lỗi.
3. Miễn phí và mã nguồn mở:
Không có chi phí sử dụng, chia sẻ mã nguồn mở và nâng cao hiệu quả học tập và sử dụng.
4. Thư viện phong phú:
Xử lý dữ liệu, tính toán dữ liệu, trực quan hóa, 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:
Giao diện để thu thập, lưu trữ, gọi và đặt lệnh dựa trên thông tin thị trường theo thời gian thực từ các nền tảng lớn.
Chiến lược hoàn chỉnh
Để giúp bạn nhanh chóng hiểu được kiến thức chính của phần này, trước khi giới thiệu nhanh về ngôn ngữ JavaScript lượng tử của nhà phát minh, trước tiên bạn nên hiểu sơ bộ về các khái niệm trong phần này. Hãy lấy chiến lược đường trung bình động kép đơn giản nhất làm ví dụ:
Mở vị thế dài:Nếu không có vị trí hiện tại và đường trung bình động 5 kỳ lớn hơn đường trung bình động 20 kỳ.
Mở một vị thế bán khống:Nếu không có vị thế hiện tại và đường trung bình động 5 kỳ nhỏ hơn đường trung bình động 20 kỳ.
Đóng vị thế dài:Nếu hiện tại bạn đang nắm giữ vị thế mua và đường trung bình động 5 kỳ nhỏ hơn đường trung bình động 20 kỳ.
Đóng vị thế bán khống:Nếu hiện tại bạn đang nắm giữ vị thế bán khống và đường trung bình động 5 kỳ lớn hơn đường trung bình động 20 kỳ.
Nếu viết bằng Python, nó sẽ trông như thế này:

Hình 4-29
Mã trong hình trên là một chiến lược giao dịch định lượng hoàn chỉnh được viết bằng Python. Nó có thể chạy theo thời gian thực và tự động đặt hàng. Xét về số lượng mã, Python nhiều hơn JavaScript vì chúng ta không sử dụng khuôn khổ giao dịch CTA.
Tuy nhiên, quy trình thiết kế toàn bộ chiến lược hầu như giống nhau: thiết lập loại thị trường, thu thập dữ liệu K-line, thu thập thông tin vị thế, tính toán logic giao dịch và đặt lệnh mua và bán. Nói cách khác, mặc dù cú pháp lập trình khác nhau nhưng logic chiến lược được viết là giống nhau, vậy tiếp theo, chúng ta hãy cùng tìm hiểu cú pháp cơ bản của Python!
Lựa chọn phiên bản
Có hai phiên bản Python, cụ thể là: Python2 và Python3. Có một câu chuyện cười rằng Python giống như một khẩu súng hai nòng, nhưng bạn chỉ có thể sử dụng một nòng để bắn đạn cùng một lúc, nhưng bạn sẽ không bao giờ biết nòng nào chính xác hơn. Vì vậy, nếu bạn mới làm quen với Python, bạn nên học trực tiếp Python 3 vì đây là phiên bản mới nhất và được cộng đồng Python duy trì. Các khóa học của chúng tôi cũng được giảng dạy bằng Python 3.
Biểu tượng
Mã định danh là tên của biến, chẳng hạn như test, Test, test10,bản demo, v.v. Mọi thứ trong Python (biến, tên hàm và toán tử) đều phân biệt chữ hoa chữ thường, nghĩa là tên biến test và tên biến Test là hai biến khác nhau. Ký tự đầu tiên của một định danh (tên của một biến, hàm, thuộc tính, tham số hàm) phải là một chữ cái, một dấu gạch dưới (), các ký tự theo sau nó cũng có thể là số, như thể hiện trong hình sau:

Hình 4-30
Ghi chú
Bình luận là bản dịch hoặc giải thích của một dòng mã. Các quy tắc rất đơn giản và bao gồm bình luận một dòng và bình luận cấp khối. Bình luận một dòng bắt đầu bằng dấu thăng (#), bình luận khối bắt đầu bằng ba dấu ngoặc đơn (''') hoặc ba dấu ngoặc kép (""") và kết thúc bằng ba dấu ngoặc đơn (''') hoặc ba dấu ngoặc kép ("""), như thể hiện trong hình sau:

Hình 4-31
Dòng và thụt lề
Tính năng đặc biệt nhất của Python là sử dụng thụt lề để chỉ khối mã, mà không cần sử dụng dấu ngoặc nhọn {}. Số lượng khoảng trắng thụt lề có thể thay đổi, nhưng các câu lệnh trong cùng một khối mã phải chứa cùng số lượng khoảng trắng thụt lề. Như hình dưới đây: 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, "True" sẽ không được xuất ra, vì Python sẽ tự động phát hiện xem cú pháp mã có đúng không trước khi mã chạy. Nếu định dạng mã không đúng, chương trình sẽ không chạy. Nguyên nhân là do dòng mã thứ 5 không có định dạng thụt lề thống nhất. Thụt lề bốn khoảng trắng là định dạng cố định của Python và mọi người đều cần phải quen thuộc với nó.

Hình 4-32
Biến số
Biến có thể lưu trữ bất kỳ loại dữ liệu nào. Chỉ cần viết tên biến là đã tạo ra biến. Tuy nhiên, khi tạo biến, bạn cần phải đặt giá trị của biến cùng lúc, nếu không chương trình sẽ báo lỗi. Phía bên trái của toán tử dấu bằng (=) là tên biến và phía bên phải của toán tử dấu bằng (=) là giá trị được lưu trữ trong biến. Như thể hiện trong hình bên dưới: name2 là tên biến và "inventor quantification" là giá trị của biến. Nếu bạn không đặt giá trị mới cho name2, giá trị của name2 sẽ luôn là "inventor quantification".

Hình 4-33
dữ liệu
Python có sáu kiểu dữ liệu, trong đó có ba kiểu dữ liệu không thể thay đổi và ba kiểu dữ liệu có thể thay đổi. Như tên gọi của nó, một khi dữ liệu bất biến được tạo ra, giá trị của nó không thể thay đổi và địa chỉ của nó trong bộ nhớ là duy nhất; dữ liệu có thể thay đổi là tham chiếu đến một địa chỉ trong bộ nhớ và nếu giá trị của nó thay đổi, địa chỉ bộ nhớ của nó vẫn không thay đổi.
Dữ liệu không thay đổi (3): Số, Chuỗi, Bộ;
Dữ liệu có thể thay đổi (3): Danh sách, Từ điển, Tập hợp.

Hình 4-34
Số liệu
Các kiểu số của Python hỗ trợ int (số nguyên), float (số thực), bool (Boolean) và complex (số phức). Hàm type() tích hợp có thể được sử dụng để truy vấn loại đối tượng mà một biến tham chiếu tới. Như hình dưới đây:

Hình 4-35
Máy tính
Giống như hầu hết các ngôn ngữ khác, toán học trong Python rất đơn giản. Cho dù là toán tử số học, toán tử so sánh hay toán tử logic, tất cả đều giống như những gì chúng ta đã học ở trường. Trong đó, toán tử số học là các phép toán cộng, trừ, nhân, chia. Toán tử so sánh có thể so sánh xem hai giá trị có nhỏ hơn hay nhỏ hơn không. Các toán tử logic chính là: logic AND, logic OR và logic NOT. [Bạn có thể nói sơ qua về các chuỗi thường dùng trong chiến lược giao dịch không?] Ví dụ, trong chiến lược giao dịch của chúng tôi, chuỗi được sử dụng phổ biến nhất là mã sản phẩm, chẳng hạn như: "rb1910", "MA1910".

Hình 4-36
Cần lưu ý rằng "and" là phép AND logic, có nghĩa là "và". "or" là phép OR logic, có nghĩa là "hoặc". "!" là một phủ định logic, có nghĩa là "không":
"và" có nghĩa là khi tất cả các điều kiện đều "đúng", thì điều kiện cuối cùng là "đúng";
"hoặc" có nghĩa là trong tất cả các điều kiện, chỉ cần một trong số chúng là "đúng", thì điều kiện cuối cùng sẽ là "đúng".
Ưu tiên
Nếu có 100*Đối với biểu thức (10-1)/(10+5), bước nào trong chương trình sẽ tính toán đầu tiên? Toán trung học cơ sở cho ta biết: ① Nếu là phép tính cùng cấp độ thì thường tính từ trái sang phải. ② Nếu có cả phép cộng và phép trừ cũng như phép nhân và phép chia, thì tính phép nhân và phép chia trước, sau đó tính phép cộng và phép trừ. ③Nếu có dấu ngoặc thì trước tiên hãy tính nội dung bên trong dấu ngoặc. ④ Nếu phù hợp với các quy luật vận hành thì có thể sử dụng các quy luật vận hành để đơn giản hóa phép tính. Mức độ ưu tiên của tiếng Mai giống như được hiển thị bên dưới:

Hình 4-37
Boolean
Boolean biểu thị đúng hoặc sai và thường được sử dụng trong các phán đoán có điều kiện và các câu lệnh lặp. Python định nghĩa hai hằng số "True" và "False" để biểu thị giá trị đúng và sai. Trên thực tế, bất kỳ đối tượng nào cũng có thể được chuyển đổi sang kiểu Boolean và cũng có thể được sử dụng trực tiếp để phán đoán có điều kiện, như thể hiện trong hình sau:

Hình 4-38
Dãy ký tự
Chuỗi là văn bản. Chuỗi, chẳng hạn như "if1905", thường được sử dụng khi thiết lập mã sản phẩm. Chuỗi trong Python được đặt trong dấu ngoặc đơn ' hoặc dấu ngoặc kép ". Dấu cộng + là toán tử nối chuỗi. Bạn có thể lấy một ký tự trong chuỗi dựa trên giá trị chỉ mục, như được hiển thị bên dưới:

Hình 4-39
Danh sách
List là kiểu dữ liệu được sử dụng thường xuyên nhất trong Python. Bạn có thể nghĩ về một list như một container, ngoại trừ việc 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. Ngoài ra, danh sách Python có thể lưu trữ bất kỳ kiểu dữ liệu nào, như được hiển thị bên dưới:

Hình 4-40
chức năng
Các hàm trong Python về cơ bản giống như các hàm chúng ta đã học ở trường trung học. Bạn có thể nghĩ về nó như những gì được truyền vào và những gì được xuất ra thông qua phép tính của hàm, như thể hiện trong hình sau:

Hình 4-41
Câu if
Những 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ẽ cầm ô. Nghĩa là câu lệnh sẽ chỉ thực thi mã khi điều kiện được chỉ định là Đúng. Lưu ý, hãy chú ý đến định dạng thụt lề của mã, nếu không sẽ tạo ra lỗi Python! Như thể hiện trong hình sau:

Hình 4-42
câu lệnh if...else
Câu lệnh if...else cũng là những câu lệnh thường được sử dụng, ví dụ: Nếu hôm nay trời mưa, tôi sẽ cầm ô; nếu không, tôi sẽ không cầm ô. Câu lệnh else là phần mở rộng của câu lệnh if, nghĩa là đoạn mã theo sau else sẽ chỉ được thực thi khi điều kiện được chỉ định là False. Như thể hiện trong hình sau:

Hình 4-43
Tuyên bố elif
Vì Python không hỗ trợ câu lệnh switch nên Python chỉ có thể sử dụng câu lệnh elif để triển khai nhiều phán đoán có điều kiện. Ví dụ: nếu là đường dương, tôi sẽ lạc quan; ngược lại, nếu là đường âm, tôi sẽ bi quan; còn không, tôi sẽ chờ và quan sát. Như thể hiện trong hình sau:

Hình 4-44
vòng lặp for
Đôi khi chúng ta cần lấy dữ liệu K-line của vài ngày gần nhất và chúng ta cần lấy dữ liệu này từ mảng K-line theo trình tự theo vị trí của dữ liệu K-line. Khi đó, sử dụng vòng lặp for rất tiện lợi, như thể hiện trong hình sau:

Hình 4-45
Vòng lặp While
Chúng ta đều biết rằng thị trường liên tục thay đổi. Nếu bạn muốn có được mảng K-line mới nhất, bạn phải chạy đi chạy lại cùng một mã. Sau đó sử dụng vòng lặp whilex. Miễn là điều kiện được chỉ định là đúng, vòng lặp luôn có thể lấy được mảng K-line mới nhất.

Hình 4-46
câu lệnh break và câu lệnh continue
Vòng lặp có một điều kiện tiên quyết. Chỉ khi điều kiện tiên quyết là "đúng" thì vòng lặp mới bắt đầu thực hiện một việc gì đó lặp đi lặp lại và vòng lặp sẽ không kết thúc cho đến khi điều kiện tiên quyết là "sai". Tuy nhiên, câu lệnh break có thể ngay lập tức thoát khỏi vòng lặp trong quá trình thực thi vòng lặp; câu lệnh continue có thể ngắt một vòng lặp nhất định và sau đó tiếp tục vòng lặp tiếp theo. Như thể hiện trong hình sau:

Hình 4-47
câu lệnh trả về
Câu lệnh return kết thúc việc thực thi một hàm và trả về giá trị của hàm đó. Câu lệnh return chỉ có thể xuất hiện trong thân hàm. Nếu nó xuất hiện ở bất kỳ nơi nào khác trong mã, nó sẽ gây ra lỗi cú pháp!

Hình 4-48
Khung chiến lược
Bạn có thể hiểu kiến trúc chiến lược là một định dạng cố định của chiến lược. Công cụ định lượng của nhà phát minh áp dụng chế độ thăm dò. Sau đây là kiến trúc chiến lược tương lai hàng hóa cổ điển.
Dòng 4 đến 7 là các hàm nhập chính của toàn bộ chương trình, tức là máy tính bắt đầu thực thi mã từ dòng 4; sau đó thực thi trực tiếp dòng 5 và vào vòng lặp vô hạn; sau đó hàm logic chiến lược (onTick) và hàm sleep (Sleep) được thực thi trong vòng lặp vô hạn; hàm onTick là mã ở dòng 1 và bạn có thể viết logic chiến lược ở dòng 2; chúng ta biết rằng trong vòng lặp, tốc độ thực thi của chương trình rất nhanh, vì vậy sử dụng hàm sleep (Sleep) có thể tạm dừng chương trình trong một thời gian. Mã sau Sleep(500) có nghĩa là nó ngủ trong 500 mili giây mỗi khi vòng lặp hoàn thành.

Hình 4-49
Tóm tắt
Trên đây là phần giới thiệu nhanh về ngôn ngữ Python. Mặc dù chỉ là kiến thức cơ bản đơn giản, nhưng vẫn không có vấn đề gì khi sử dụng nó để 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 các chiến lược phức tạp hơn, bạn có thể tham khảo tài liệu API ngôn ngữ Python của Inventor Quantitative Tool.
Xem trước phần tiếp theo
Trong số các chiến lược xu hướng trong lĩnh vực phân tích kỹ thuật, đường trung bình động và đột phá kênh chắc chắn là hai trường phái chính. Mặc dù mục tiêu là nắm bắt xu hướng biến động giá, nhưng triết lý giao dịch và đặc điểm rủi ro của hai chiến lược này lại hoàn toàn khác nhau. Sau khi tìm hiểu phần giới thiệu về ngôn ngữ Python trong phần này, ở phần tiếp theo, chúng tôi sẽ chỉ cho bạn cách viết chiến lược giao dịch định lượng cho kênh đột phá.
Bài tập về nhà
- Thử sử dụng ngôn ngữ Python trong Công cụ định lượng Inventor để lấy dữ liệu K-line lịch sử.
- Cố gắng viết mã chiến lược ở đầu phần này và thêm bình luận.
4.4 Cách triển khai chiến lược giao dịch bằng ngôn ngữ Python
bản tóm tắt
Ở bài viết trước, chúng ta đã tìm hiểu về phần giới thiệu, cú pháp cơ bản, khung chiến lược, v.v. của ngôn ngữ Python. Mặc dù nội dung khá nhàm chán, nhưng đây lại là kỹ năng cần thiết để bạn triển khai chiến lược giao dịch của mình và bạn phải học nó. Trong bài viết này, chúng ta sẽ đánh khi sắt còn nóng và tiếp tục với kiến thức Python cơ bản trong bài viết trước. Chúng ta sẽ bắt đầu với một chiến lược đơn giản, học trong khi sử dụng và giúp mọi người nhận ra chiến lược giao dịch định lượng khả thi từng bước.
Giới thiệu chiến lược
Trong số nhiều chiến lược giao dịch, chiến lược Kênh Donchian phải là một trong những chiến lược đột phá kinh điển nhất. Nó đã được biết đến rộng rãi từ năm 1970. Vào thời điểm đó, một công ty nước ngoài đã tiến hành các thử nghiệm mô phỏng và nghiên cứu về các chiến lược giao dịch chương trình chính thống. Kết quả cho thấy rằng, trong số tất cả các cuộc thử nghiệm chiến lược, chiến lược Kênh Donchian là thành công nhất.
Sau đó, khóa đào tạo giao dịch viên "Turtle" nổi tiếng nhất trong lịch sử giao dịch đã diễn ra tại Hoa Kỳ, mang lại thành công to lớn. Vào thời điểm đó, phương thức giao dịch của "Rùa" được giữ bí mật, nhưng hơn mười năm sau, khi "Quy tắc giao dịch của Rùa" được công khai, mọi người phát hiện ra rằng "Rùa" đang sử dụng phiên bản cải tiến của Kênh Donchian chiến lược.
Chiến lược giao dịch đột phá phù hợp với các sản phẩm giao dịch có xu hướng tương đối ổn định. Phương pháp giao dịch đột phá phổ biến nhất là sử dụng mối quan hệ vị trí tương đối giữa giá và hỗ trợ và kháng cự để xác định các điểm mua và bán giao dịch cụ thể. Chiến lược Kênh Donchian trong phần này dựa trên nguyên tắc này.
Quy tắc chiến lược kênh Donchian
Kênh Donchian là một chỉ báo xu hướng và giao diện cũng như tín hiệu của nó khá giống với chỉ báo Dải Bollinger. Nhưng kênh giá của Donchian được xây dựng dựa trên mức giá cao nhất và thấp nhất trong một khoảng thời gian nhất định. Ví dụ: tính giá trị lớn nhất của giá cao nhất trong 50 dòng K mới nhất để tạo thành đường ray phía trên; tính giá trị nhỏ nhất của giá thấp nhất trong 50 dòng K mới nhất để tạo thành đường ray phía dưới.
Chỉ báo này bao gồm ba đường cong có màu khác nhau. Mặc định là giá cao nhất và thấp nhất trong vòng 20 chu kỳ để thể hiện sự biến động của giá thị trường. Khi kênh hẹp, điều đó có nghĩa là sự biến động của thị trường nhỏ. Ngược lại, kênh rộng có nghĩa là sự biến động của thị trường tương đối lớn.
Nếu giá tăng lên trên đường trên thì đó là tín hiệu mua; ngược lại, nếu giá giảm xuống dưới đường dưới thì đó là tín hiệu bán. Vì đường kênh trên và dưới được tính toán bằng cách sử dụng giá cao nhất và thấp nhất nên trong những trường hợp bình thường, giá hiếm khi tăng và giảm xuống dưới đường kênh trên và dưới cùng một lúc. Trong hầu hết các trường hợp, giá di chuyển đơn phương theo đường trên hoặc đường dưới, hoặc giữa đường trên và đường dưới.
Phương pháp tính toán kênh Donchian
Trong Công cụ định lượng Inventor, phương pháp tính toán của Kênh Donchian rất đơn giản. Bạn có thể trực tiếp sử dụng nó để có được giá cao nhất hoặc giá thấp nhất trong khoảng thời gian được chỉ định, như thể hiện trong hình dưới đây: dòng thứ 5 là để có được giá trị lớn nhất của giá cao nhất trong 50 kỳ, và dòng thứ 6 là để có được giá trị nhỏ nhất của giá thấp nhất trong 50 kỳ.

Hình 4-50
Chiến lược Logic
Có nhiều cách để sử dụng Kênh Donchian. Có thể sử dụng riêng lẻ hoặc kết hợp với các chỉ báo khác. Trong khóa học này chúng ta sẽ sử dụng phương pháp đơn giản nhất. Tức là khi giá phá vỡ đường trên từ dưới lên trên, tức là phá vỡ đường áp suất trên, chúng tôi cho rằng lực tăng giá đang mạnh lên, một làn sóng thị trường tăng đã hình thành và tín hiệu mở lệnh mua. được tạo ra; khi giá giảm từ trên xuống dưới và phá vỡ đường dưới, nghĩa là khi giá giảm xuống dưới đường hỗ trợ, chúng tôi tin rằng phía bán đang mạnh lên, xu hướng giảm đã hình thành và mở cửa bán tín hiệu được tạo ra.

Hình 4-51
Nếu giá giảm trở lại đường giữa của Kênh Donchian sau khi mở vị thế mua, chúng tôi tin rằng phe mua đang yếu đi hoặc phe bán đang mạnh lên và tín hiệu bán tháo được tạo ra; nếu giá giảm trở lại đường giữa đường đi của Kênh Donchian sau khi mở một vị thế bán khống, chúng tôi tin rằng phe mua đang suy yếu hoặc phe bán đang mạnh lên và tín hiệu bán tháo được tạo ra; Khi nó tăng trở lại đường đi giữa của Kênh Donchian, chúng tôi tin rằng sức mạnh của phe gấu đang yếu đi, hoặc sức mạnh của phe bò đang mạnh lên, và tín hiệu mua để đóng được tạo ra.
Điều kiện giao dịch
Mở vị thế dài: Nếu không có vị thế và giá đóng cửa lớn hơn đường ray trên
Mở một vị thế bán khống: Nếu không có vị thế và giá đóng cửa thấp hơn đường ray thấp hơn
Đóng vị thế dài:Nếu bạn giữ lệnh dài và giá đóng cửa thấp hơn giá trung bình
Đóng vị thế bán khống:Nếu bạn giữ lệnh bán khống và giá đóng cửa cao hơn giá ở giữa
Thực hiện mã chiến lược
Bước đầu tiên để triển khai một chiến lược là thu thập dữ liệu, vì dữ liệu là điều kiện tiên quyết cho một chiến lược giao dịch. Hãy tưởng tượng chúng ta cần dữ liệu gì? Và làm sao để có được dữ liệu này? Sau đó, chúng tôi thiết kế logic giao dịch dựa trên những dữ liệu này; cuối cùng, chúng tôi đặt lệnh mua và bán theo logic giao dịch. Các bước cụ thể như sau:
Bước 1: Sử dụng thư viện giao dịch
Bạn có thể coi thư viện giao dịch như một mô-đun chức năng. Ưu điểm của việc sử dụng thư viện giao dịch là nó cho phép bạn tập trung vào việc viết logic chiến lược. Ví dụ: khi chúng ta sử dụng thư viện giao dịch, khi mở và đóng vị thế, chúng ta có thể sử dụng trực tiếp API lệnh trong thư viện giao dịch; nhưng nếu chúng ta không sử dụng thư viện giao dịch, khi mở và đóng vị thế, chúng ta cần lấy giá thị trường, xem xét vấn đề đặt lệnh nhưng không được thực hiện, xem xét vấn đề hủy lệnh, v.v.

Hình 4-52
Hình ảnh trên là khuôn khổ chiến lược CTA sử dụng các công cụ định lượng của nhà phát minh. Đây là định dạng mã cố định và tất cả mã logic giao dịch được viết bắt đầu từ dòng 4. Không cần phải sửa đổi ở bất kỳ chỗ nào khác.
Thư viện mẫu của JavaScript được tích hợp sẵn, Python cần sao chép và lưu mẫu này: https://www.fmz.com/strategy/24288. Sau đó nhấp vào Tham chiếu trên trang chỉnh sửa chính sách. Tất nhiên, bạn cũng có thể hoàn thiện chiến lược mà không cần sử dụng thư viện mẫu.
Bước 2: Lấy nhiều dữ liệu khác nhau
Hãy suy nghĩ thật kỹ, bạn cần dữ liệu gì? Theo logic giao dịch chiến lược của mình, chúng tôi thấy rằng: trước tiên chúng ta cần có được trạng thái vị thế hiện tại, sau đó so sánh mối quan hệ giữa giá đóng cửa và các đường trên, giữa và dưới của chỉ báo Dải Bollinger và cuối cùng xác định xem thị trường sắp đóng cửa hay chưa. Vậy chúng ta hãy lấy dữ liệu này.
Lấy dữ liệu đường K
Bước đầu tiên là lấy mảng K-line và giá đóng cửa hiện tại của K-line. Chỉ với mảng K-line, chúng ta mới có thể gọi API để lấy giá cao nhất hoặc thấp nhất của N kỳ. Mã trông như thế này:

Hình 4-53
Như thể hiện trong hình trên:
Dòng 4: Lấy mảng K dòng, đây là một định dạng cố định.
Dòng 5: Lọc độ dài của dòng K. Vì chúng ta tính giá cao nhất hoặc thấp nhất của N chu kỳ nên tham số được sử dụng là 50. Khi số lượng dòng K nhỏ hơn 50 thì không thể tính được. Do đó, chúng ta cần lọc độ dài của K-line ở đây. Nếu có ít hơn 50 K-line, hãy bỏ qua vòng lặp này và tiếp tục chờ K-line tiếp theo.
Dòng 6: Chúng tôi sử dụng mã "records[len(records) - 1]" đầu tiên lấy dữ liệu cuối cùng của mảng K-line, tức là dữ liệu K-line mới nhất. Dữ liệu này là một đối tượng, bao gồm: giá mở cửa, giá cao nhất, giá thấp nhất, giá đóng cửa, khối lượng giao dịch, thời gian và dữ liệu khác. Vì là đối tượng, chúng ta có thể trực tiếp sử dụng ".Close" để lấy giá đóng cửa K-line mới nhất.
Nhận dữ liệu vị trí
Thông tin vị thế là một điều kiện rất quan trọng trong các chiến lược giao dịch định lượng. Khi các điều kiện giao dịch được đáp ứng, cũng cần phải xác định xem có nên đặt lệnh dựa trên trạng thái vị thế và số lượng vị thế hay không. Ví dụ: khi các điều kiện để mở vị thế mua được đáp ứng, nếu bạn có vị thế, bạn không cần phải đặt lệnh lại; nếu bạn không có vị thế, bạn có thể đặt lệnh. Lần này chúng ta trực tiếp đóng gói thông tin vị trí vào một hàm và chúng ta có thể sử dụng nó chỉ bằng cách gọi hàm này:

Hình 4-54
Như thể hiện trong hình trên:
Đây là hàm lấy thông tin vị trí. Nếu là vị trí ngắn, hàm trả về 0; nếu là vị trí dài, hàm trả về 1; nếu là vị trí ngắn, hàm trả về -1. Lưu ý đoạn mã trên:
Dòng 2: Tạo một hàm có tên là mp, không có tham số.
Dòng 3: Lấy mảng vị trí, đây là một định dạng cố định.
Dòng 4: Xác định độ dài của mảng vị trí. Nếu độ dài của nó bằng , thì nó phải là một vị trí trống, do đó trả về 0
Dòng 6: Sử dụng vòng lặp for để bắt đầu duyệt mảng. Logic sau đây rất đơn giản. Nếu bạn giữ vị thế dài, nó trả về 1; nếu bạn giữ vị thế ngắn, nó trả về -1.
Dòng 18: Gọi hàm mp mà chúng ta vừa viết để lấy thông tin vị trí.
Nhận giá cao nhất và thấp nhất của 50 nghìn dòng cuối cùng
Trong Inventor Quantitative Tool, bạn có thể trực tiếp lấy được giá trị này bằng cách sử dụng các hàm "TA.Highest" và "TA.Lowest" mà không cần phải tự viết các phép tính logic. Và kết quả trả về của hàm "TA.Highest" và "TA.Lowest" là các giá trị cụ thể chứ không phải là mảng. Điều này rất tiện lợi. Không chỉ vậy, sản phẩm còn tích hợp hàng trăm chức năng chỉ báo.

Hình 4-55
Như thể hiện trong hình trên:
Dòng 19: Gọi hàm "TA.Highest" để lấy giá trị lớn nhất của mức giá cao nhất trong 50 kỳ
Dòng 20: Gọi hàm "TA.Lowest" để lấy giá trị nhỏ nhất của mức giá thấp nhất trong 50 kỳ
Dòng 21: Tính giá trị trung bình dựa trên giá trị lớn nhất của mức giá cao nhất trong 50 kỳ và giá trị nhỏ nhất của mức giá thấp nhất trong 50 kỳ
Bước 3: Đặt hàng
Với dữ liệu trên, bạn có thể viết logic giao dịch và mã để đặt lệnh. Định dạng cũng rất đơn giản. Định dạng được sử dụng phổ biến nhất là "câu lệnh if", có thể được mô tả bằng lời như sau: nếu điều kiện 1 và điều kiện 2 được đáp ứng, hãy đặt hàng; nếu điều kiện 3 hoặc điều kiện 4 được đáp ứng, hãy đặt hàng.

Hình 4-56
Như thể hiện trong hình trên:
Dòng 22: Sử dụng thư viện giao dịch, đây là định dạng cố định
Dòng 23 và 24: Đây là một câu lệnh để đóng một vị thế mua, sử dụng "toán tử so sánh" và "toán tử logic" mà chúng ta đã học trước đó. Điều này có nghĩa là nếu hiện tại bạn đang nắm giữ một vị thế mua và giá đóng cửa thấp hơn giá đóng cửa ở giữa, tất cả các vị thế sẽ bị đóng.
Dòng 25 và 26: Đây là một câu lệnh để đóng lệnh bán khống, sử dụng "toán tử so sánh" và "toán tử logic" mà chúng ta đã học trước đó. Điều này có nghĩa là nếu hiện tại bạn đang giữ lệnh bán khống và giá đóng cửa lớn hơn giá đóng cửa ở giữa, tất cả các vị thế sẽ bị đóng.
Dòng 27: Xác định trạng thái vị trí hiện tại. Nếu vị trí ngắn, hãy tiến hành bước tiếp theo.
Dòng 28 và 29: Xác định xem giá đóng cửa có lớn hơn đường ray trên không. Nếu giá đóng cửa tăng trên đường ray trên, hãy mua để mở vị thế.
Dòng 30 và 31: Xác định xem giá đóng cửa có thấp hơn đường dưới không. Nếu giá đóng cửa giảm xuống dưới đường dưới, hãy bán và mở một vị thế.
Tóm tắt
Ở trên, chúng ta đã tìm hiểu từng bước phát triển chiến lược giao dịch định lượng hoàn chỉnh bằng Python, bao gồm: giới thiệu chiến lược, phương pháp tính kênh Donchian, logic chiến lược, điều kiện mua và bán, triển khai mã chiến lược, v.v. Phần này chỉ là một chiến lược đơn giản, như một điểm khởi đầu. Có nhiều hơn một phương pháp. Bạn có thể chồng các phương pháp giao dịch khác nhau theo hệ thống giao dịch của riêng bạn để hình thành chiến lược giao dịch định lượng của riêng bạn.
Xem trước phần tiếp theo
Trong quá trình phát triển các chiến lược giao dịch định lượng, xét về tốc độ thực thi ngôn ngữ lập trình, nếu hỏi ngôn ngữ nào nhanh nhất thì chỉ có thể là C++. Đặc biệt trong lĩnh vực phái sinh và giao dịch tần suất cao, C++ có tính đặc thù ngôn ngữ độc đáo và lợi thế trong tính toán số. Tốc độ của nó có thể tăng lên gấp nhiều lần so với JavaScript và Python. Nếu bạn muốn phát triển trong lĩnh vực phái sinh và giao dịch tần suất cao trong tương lai, đây sẽ là khóa học bạn không thể bỏ qua.
Bài tập về nhà
- Bắt đầu bằng cách sao chép và thực hiện các chiến lược trong phần này.
- Cố gắng thêm chỉ báo trung bình động vào chiến lược trong phần này để giảm tần suất giao dịch.
Chương 5 Chiến lược kiểm tra ngược, gỡ lỗi và cải thiện
5.1 Tầm quan trọng và những cạm bẫy của việc kiểm tra ngược
bản tóm tắt
Kiểm tra ngược là sự khác biệt lớn nhất giữa giao dịch định lượng và 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ử, nó nhanh chóng mô phỏng các giao dịch kích hoạt tín hiệu chiến lược và khớp lệnh để có được báo cáo hiệu suất và dữ liệu khác trong một khoảng thời gian. Đây là một trong những thành phần quan trọng nhất của chiến lược phát triển cổ phiếu trong nước và nước ngoài, hàng hóa tương lai, ngoại hối và các thị trường khác.
Tầm quan trọng của việc kiểm tra ngược
Trong các chương trước, chúng ta đã học những điều cơ bản của ngôn ngữ lập trình chính thống và dạy bạn cách sử dụng những điều cơ bản về 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 chúng ta đã đi được hơn một nửa chặng đường dài. Tuy nhiên, một khi chiến lược đã được viết ra, nó không thể được đưa vào thực hành trực tiếp. Nó vẫn cần phải liên tục kiểm tra ngược - gỡ lỗi - kiểm tra ngược - gỡ lỗi - v.v., cho đến khi chiến lược có thể triển khai đầy đủ nội dung mô hình và chạy trơn tru.
Theo quan điểm của logic giao dịch định lượng, các chiến lược thực sự dựa trên một loạt các nhận thức và giả định về thị trường. Kiểm tra ngược có thể xác định hiệu quả liệu các giả định này có hợp lệ và ổn định hay không. Những tổn thất nào có thể xảy ra trong giai đoạn bất ổn lịch sử và làm thế nào để hỗ trợ đưa ra quyết định nhằm ngăn ngừa những tổn thất đó.
Ngoài ra, theo góc nhìn của hoạt động giao dịch định lượng, kiểm thử ngược có thể giúp phát hiện lỗi trong logic chiến lược, chẳng hạn như các hàm tương lai, đánh cắp giá, khớp lệnh nhiều lần, v.v. Cung cấp bằng chứng đáng tin cậy rằng chiến lược này có thể được sử dụng trong giao dịch thực tế.
- Xác minh tính chính xác của tín hiệu giao dịch.
- Xác minh logic giao dịch và xem ý tưởng của bạn có khả thi hay không.
- Khám phá những sai sót trong hệ thống giao dịch của bạn và cải thiện chiến lược ban đầu.
Do đó, ý nghĩa của việc kiểm tra ngược là khôi phục lại quá trình giao dịch thực tế một cách chân thực nhất có thể thông qua dữ liệu lịch sử, xác minh tính hiệu quả của chiến lược, tránh phải trả giá đắt cho các chiến lược sai lầm và giúp chúng ta sàng lọc, cải thiện và tối ưu hóa các chiến lược giao dịch.
Những cạm bẫy khi kiểm tra ngược
Tín hiệu bẫy kiểm tra ngược nhấp nháy:
Các chiến lược giao dịch được kiểm tra ngược dựa trên dữ liệu lịch sử tĩnh. Dữ liệu giao dịch thực tế là dữ liệu động. Ví dụ: Nếu giá cao nhất cao hơn giá đóng cửa của ngày hôm qua thì hãy mua để mở vị thế. Trong giao dịch thực tế, nếu đường K chưa hoàn thành, mức giá cao nhất sẽ dao động và tín hiệu giao dịch có thể nhấp nháy qua lại. Trong quá trình kiểm tra ngược, công cụ kiểm tra ngược có thể mô phỏng các giao dịch khớp lệnh dựa trên dữ liệu lịch sử tĩnh.
Bẫy kiểm thử ngược của chức năng tương lai:
Hàm tương lai sử dụng giá tương lai, nghĩa là các điều kiện hiện tại có thể được thay đổi trong tương lai. Hàm tương lai cũng có thể gây ra tín hiệu nhấp nháy. Vì vậy, bất kỳ hàm nào cũng có đặc điểm của một hàm tương lai, chẳng hạn như "hàm ngoằn ngoèo".
Như hình minh họa bên dưới: Hàm ZigZag chỉ ra các điểm đảo chiều của đỉnh và đáy. Nó có thể điều chỉnh giá trị của nó cho phù hợp theo giá thời gian thực mới nhất. Tuy nhiên, nếu giá hiện tại thay đổi, kết quả tính toán bằng hàm ZigZag cũng sẽ thay đổi. Nếu sử dụng một hàm có hàm tương lai, tín hiệu lệnh hiện tại có thể được thiết lập và lệnh có thể được đặt, nhưng tín hiệu có thể không được thiết lập sau một thời gian.

Hình 5-1
Bẫy kiểm tra ngược: Ăn cắp giá
Cái gọi là đánh cắp giá là việc sử dụng giá trong quá khứ để giao dịch. Ví dụ: nếu giá cao nhất lớn hơn giá cố định, hãy mua ở giá mở cửa. Tình trạng này chính là ăn cắp giá, vì trên thị trường thực tế, khi giá cao nhất lớn hơn một mức giá nào đó thì giá đã cao hơn giá mở cửa một khoảng nhất định rồi, lúc này không thể mua được ở mức giá mở cửa. Nhưng trong quá trình kiểm tra ngược, có tín hiệu mua và giao dịch có thể được hoàn tất.
Còn một tình huống nữa. Nếu giá tăng cao hơn và mở cao hơn giá cố định do chiến lược đặt ra, giao dịch có thể được hoàn tất ở mức giá cố định trong quá trình kiểm tra ngược, nhưng rõ ràng là mức giá cố định này không khả dụng trên thị trường thực tế.
Backtesting Trap: Giá giao dịch không thể
Có một số trường hợp giá không thể giao dịch được:
Thứ nhất: Trong giao dịch thực tế, bạn thường không thể mua khi giá đạt đến giới hạn trên và ngược lại. Tuy nhiên, vẫn có thể giao dịch trong quá trình kiểm tra ngược.
Loại thứ hai: Cơ chế khớp lệnh trao đổi là: ưu tiên giá và ưu tiên thời gian. Một số loại thường có lệnh lớn trên thị trường. Nếu bạn đặt lệnh mua hoặc bán trong giao dịch thực tế, bạn cần phải đợi độ dày của thị trường được lấp đầy trước khi giao dịch có thể hoàn tất hoặc thậm chí không thể hoàn tất. Tuy nhiên, trong quá trình kiểm tra ngược, các lệnh mua và bán đang chờ xử lý có thể được thực hiện.
Loại thứ ba: Nếu là chiến lược chênh lệch giá, thì lợi nhuận kiểm thử ngược rất cao, vì mỗi lần kiểm thử ngược, người ta cho rằng những chênh lệch giá này đã được nắm bắt. Trên thực tế, nhiều spread không thể nắm bắt được, hoặc chỉ nắm bắt được một chân. Nói chung, chân nào không thuận lợi cho hướng đi của bạn sẽ được thực hiện trước, vì vậy bạn cần phải lấp đầy chân còn lại ngay lập tức. Lúc này, độ trượt không còn là 1 hoặc 2 điểm nữa, và bản thân chiến lược chênh lệch giá đã kiếm được spread của một vài điểm này. Tình huống này không thể mô phỏng được trong quá trình kiểm tra ngược. Lợi nhuận thực tế không tốt bằng kết quả kiểm tra ngược.
Loại thứ tư: sự kiện thiên nga đen. Như thể hiện trong vòng tròn màu đỏ trong hình bên dưới, trong sự kiện thiên nga đen của ngoại hối franc Thụy Sĩ, mặc dù trên bề mặt có giá mở cửa, giá cao nhất, giá thấp nhất và giá đóng cửa, nhưng trên thực tế, trong điều kiện thị trường cực đoan của ngày, giá ở giữa là chân không, một số lượng lớn lệnh dừng lỗ đã gây ra tình trạng hỗn loạn, thanh khoản bằng không và giao dịch rất khó khăn, nhưng có thể đạt được lệnh dừng lỗ khi kiểm tra lại.

Hình 5-2
Bẫy kiểm tra ngược: Quá khớp
Mỗi lần nhìn hình bên dưới, tôi lại cảm thấy: Hahahaha... Từ hình bên dưới, bạn có thể thấy rằng một mô hình vô lý, chỉ cần đủ phức tạp, đều có thể thích ứng hoàn hảo với dữ liệu.

Hình 5-3
Đối với giao dịch định lượng, kiểm tra ngược dựa trên dữ liệu lịch sử, nhưng các mẫu dữ liệu lịch sử bị hạn chế. Nếu chiến lược giao dịch có quá nhiều tham số hoặc logic giao dịch quá phức tạp, chiến lược giao dịch sẽ bị điều chỉnh quá mức theo dữ liệu lịch sử.
Quá trình mô hình hóa các chiến lược định lượng về cơ bản là quá trình tìm dữ liệu không ngẫu nhiên cục bộ từ một lượng lớn dữ liệu có vẻ ngẫu nhiên. Nếu không có sự trợ giúp của kiến thức thống kê, rất dễ rơi vào bẫy quá khớ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à bạn cho rằng việc loại bỏ mô hình là điều đáng tiếc hoặc bạn không muốn thừa nhận rằng mô hình của mình không tốt và bạn tiếp tục tối ưu hóa mô hình trên dữ liệu ngoài mẫu cho đến khi dữ liệu ngoài mẫu hoạt động tốt thì cuối cùng, số tiền mà bạn khó khăn lắm mới kiếm được sẽ bị tổn hại.
Bẫy kiểm tra ngược: Thiên kiến của người sống sót
Có một câu chuyện cười phổ biến trên Phố Wall: Giả sử có 1.000 con khỉ tham gia đầu tư vào thị trường. Trong năm đầu tiên, 500 con khỉ thua thị trường sẽ bị loại. Đến năm thứ hai, một nửa số khỉ lại bị loại bỏ, chỉ còn lại 250 con. Đến cuối năm thứ ba, số lượng khỉ còn lại là 125 con.

Hình 5-4
Đến năm thứ chín, chỉ còn lại một con khỉ. Sau đó, bạn nhìn nó, trái và phải, và nó có vẻ quen thuộc. Cuối cùng, khi nhìn thấy trang bìa của một tạp chí tài chính, tôi đột nhiên nhớ ra, "Ồ, đây không phải là Buffett sao?"
Tất nhiên đây chỉ là một trò đùa, nhưng bạn có bao giờ nghĩ rằng nếu có 1.000 nhà quản lý quỹ, thì sau 10 năm, sẽ có khoảng 10 nhà quản lý quỹ vượt trội hơn thị trường trong 10 năm liên tiếp không? Nhưng điều này có thể được xác định bởi tính ngẫu nhiên và may mắn, và không liên quan gì đến kỹ năng của người quản lý quỹ.
Giống như hiệu suất kiểm tra ngược ở phía bên trái của hình ảnh bên dưới, tôi tin rằng hầu hết các nhà đầu tư sẽ ngạc nhiên. Chiến lược đầu tư này có hiệu suất rất vững chắc và hầu như không có sự sụt giảm đáng kể nào.

Hình 5-5
Đợi một chút, như hình bên phải cho thấy, tình hình thực tế nằm ở bên trong. Thực tế thì đường cong kiểm tra ngược bên trái chính là đường cong có hiệu suất tốt nhất trong số nhiều đường cong kiểm tra ngược khác. Nghĩa là, trong backtest bên trái, có nhiều tình huống có hiệu suất thậm chí còn tệ hơn.
Backtesting Trap: Chi phí tác động
Trong môi trường giao dịch thực tế, giá cả liên tục biến động. Khi bạn nhìn thấy cơ hội giao dịch và đặt lệnh, giá có thể đã thay đổi. Do đó, vấn đề trượt giá là không thể tránh khỏi, dù là trong giao dịch chủ quan hay giao dịch định lượng.
Tuy nhiên, kiểm thử ngược 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á lệnh là mua ở mức 1050, nhưng giá giao dịch thực tế có thể là 1051. Có nhiều lý do dẫn đến hiện tượng này, chẳng hạn như: thiếu thanh khoản trong điều kiện thị trường khắc nghiệt, độ trễ mạng, hệ thống phần mềm và phần cứng, phản hồi của máy chủ, v.v.
Kiểm tra ngược mà không bị trượt giá
Như hình trên cho thấy, đây là một backtest không có trượt giá. Đường cong vốn trông đẹp hơn, nhưng có sự khác biệt giữa giá giao dịch thực tế trong giao dịch thực tế và giá giao dịch lý tưởng của backtest chiến lược. Do đó, để giảm lỗi này, khi kiểm tra lại chiến lược, bạn có thể đặt 2 điểm trượt giá để tăng giá mua hoặc giảm giá bán.
Kiểm tra ngược với Slippage
Như hình trên minh họa, đối với cùng một chiến lược, nếu kết quả backtest khác biệt đáng kể so với kết quả backtest không có trượt giá sau khi thêm trượt giá 2 lần nhảy thì có nghĩa là chiến lược này cần được cải thiện hoặc thay thế bằng chiến lược mới. Đặc biệt đối với các chiến lược có tần suất giao dịch tương đối cao, việc thêm độ trượt giá từ 1 đến 2 lần trong quá trình kiểm tra ngược có thể giúp quá trình kiểm tra ngược gần hơn với môi trường giao dịch thực tế.
Tóm tắt
Một số bạn có thể hỏi, vì có thể có rất nhiều vấn đề trong giao dịch định lượng, làm sao tôi có thể chứng minh rằng chiến lược của mình là tốt? Trên thực tế, câu trả lời rất đơn giản. Trước khi triển khai chiến lược trong thực tế, trước tiên bạn phải mô phỏng giao dịch trong một khoảng thời gian. Nếu giá giao dịch của giao dịch được mô phỏng gần giống với giá giao dịch trong quá trình kiểm tra ngược, thì điều đó chứng tỏ chiến lược không có vấn đề gì, ít nhất là không có vấn đề gì với logic chiến lược.
Trong mọi trường hợp, kiểm tra ngược là điều bắt buộc đối với một nhà phát triển hệ thống giao dịch có kinh nghiệm. Bởi vì nó có thể cho bạn biết liệu một ý tưởng chiến lược có thể được xác minh là có hiệu quả trong các giao dịch lịch sử hay không. Nhưng nhiều khi việc kiểm tra ngược không có nghĩa là sẽ có lợi nhuận trong tương lai. Bởi vì có quá nhiều cạm bẫy trong quá trình kiểm tra ngược, bạn sẽ không hiểu được trừ khi bạn chi tiền để học một số bài học. Và những bài học này được rút ra bằng tiền thật. Tôi nghĩ rằng việc đọc bài viết này ít nhất có thể giúp bạn tránh được nhiều sai lầm và cạm bẫy về mặt định lượng.
Bài tập về nhà
- Overfitting là gì và làm sao để tránh nó?
- Một số ví dụ về sự thiên vị người sống sót trong cuộc sống thực là gì?
5.2 Cách thực hiện kiểm tra ngược giao dịch định lượng
bản tóm tắt
Tầm quan trọng và ý nghĩa của việc kiểm tra ngược là không còn nghi ngờ gì nữa. Khi tiến hành kiểm tra ngược định lượng, người ta nên cố gắng giữ chiến lược trong môi trường lịch sử thực tế càng nhiều càng tốt. Nếu các chi tiết trong môi trường lịch sử bị bỏ qua, toàn bộ kiểm tra ngược định lượng có thể không hợp lệ. Bài viết này sẽ giải thích cho bạn cách thực hiện kiểm tra ngược giao dịch định lượng.
Kiểm tra ngược tương đương với phát lại dữ liệu. Nó phát 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ế để mua và bán, và cuối cùng tóm tắt tỷ lệ Sharpe, tỷ lệ rút vốn tối đa, tỷ lệ hoàn vốn hàng năm, đường cong vốn và dữ liệu khác trong một khoảng thời gian. Hiện nay, có rất nhiều phần mềm có thể thực hiện backtesting như Wenhua Finance có đầy đủ các sản phẩm, VNPY có thể tùy chỉnh linh hoạt,...
Là một phần mềm giao dịch định lượng thương mại, Inventor Quant đi kèm với một công cụ kiểm tra ngược hiệu suất cao và áp dụng khuôn khổ kiểm tra ngược vòng lặp for (thăm dò) để tính toán vectơ hóa, giúp tăng tốc độ. Nó cũng thống nhất các mã để kiểm tra ngược và giao dịch thực tế, giải quyết một phần tình trạng tiến thoái lưỡng nan của “kiểm tra ngược dễ, giao dịch thực tế khó”.
Giới thiệu giao diện backtesting
Hãy lấy Chiến lược ngôn ngữ Mai của Inventor Quantitative làm ví dụ và mở trang web chính thức của Công cụ giao dịch quantitative Inventor (www.fmz.com). Nhấp vào Trung tâm điều khiển, Thư viện chiến lược, Chọn chiến lược, Mô phỏng kiểm tra ngược và vào trang sau:

Hình 5-8
Trong giao diện cấu hình kiểm tra ngược, 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 ngược, chu kỳ K-line, loại dữ liệu (dữ liệu cấp độ mô phỏng hoặc dữ liệu cấp độ thời gian thực. Khi so sánh, kiểm tra ngược dữ liệu cấp độ mô phỏng nhanh hơn, trong khi kiểm tra ngược dữ liệu cấp độ thời gian thực chính xác hơn). Ngoài ra, bạn cũng có thể thiết lập phí kiểm tra ngược và số tiền ban đầu trong tài khoản, v.v.
Nhấp vào Thư viện giao dịch Mai Language, đầu tiên là tab Thiết lập giao dịch. Chiến lược Mai Language trong Công cụ giao dịch định lượng Inventor có hai phương pháp thực hiện kiểm tra ngược, cụ thể là: mô hình giá đóng cửa và mô hình giá thời gian thực. Mô hình giá đóng cửa có nghĩa là mô hình chỉ được thực hiện sau khi dòng K hiện tại hoàn tất và giao dịch được thực hiện khi dòng K tiếp theo bắt đầu. Mô hình giá theo thời gian thực có nghĩa là mô hình được thực hiện một lần mỗi khi giá thay đổi và giao dịch được thực hiện ngay lập tức khi tín hiệu giao dịch được thiết lập. Như hình dưới đây:

Hình 5-9
Kích thước lô mở mặc định đề cập đến số lượng vị thế được mở và đóng trong quá trình kiểm tra ngược và kích thước lệnh giao dịch đơn tối đa là số lượng vị thế mở và đóng tối đa được giao cho công cụ kiểm tra ngược trong một giao dịch duy nhất. Có một độ lệch giữa giá giao dịch thực tế và giá giao dịch được thiết lập trước. Độ lệch này thường di chuyển theo hướng bất lợi cho nhà giao dịch, dẫn đến tổn thất bổ sung trong giao dịch, do đó cần phải thêm trượt giá. Hợp đồng tương lai hàng hóa trong nước thường thêm 1 đến 2 lần nhảy, hoặc thậm chí nhiều hơn, để mô phỏng môi trường giao dịch thực tế.
Điền loại hợp đồng cần kiểm tra ngược trong tùy chọn tương lai, chẳng hạn như rb000 hoặc rb888. Tùy chọn thực tế chủ yếu được sử dụng cho giao dịch thực tế và các thiết lập mặc định có thể được giữ nguyên khi kiểm tra ngược. Nếu nhấp vào tiến trình phục hồi tự động thành đúng, thì khi chiến lược dừng robot trong quá trình hoạt động theo thời gian thực, việc khởi động lại robot sẽ tự động khôi phục vị trí tín hiệu trước đó mà không cần tính toán lại tín hiệu. Số lần đặt hàng lại mặc định là 20. Nếu đơn hàng không thành công, hệ thống sẽ thử đặt hàng lại. Khoảng thời gian thăm dò mạng là khoảng thời gian mà robot thực thi mã chiến lược.

Hình 5-10
Tùy chọn giao dịch giao ngay chủ yếu dành cho giao dịch tiền kỹ thuật số và bạn có thể giữ nguyên cài đặt mặc định trong quá trình kiểm tra ngược. 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 của giá tiền tệ, độ chính xác của sản phẩm giao dịch, phí xử lý, thời gian đồng bộ hóa tài khoản, khoảng thời gian thống kê lãi lỗ, v.v. Ngoài ra, đối với các sàn giao dịch tiền kỹ thuật số riêng lẻ, bạn cũng có thể đặt bội số đòn bẩy và các cài đặt liên quan khác.

Hình 5-11
Kiểm tra lại chiến lược
Trước khi kiểm tra ngược, trước tiên hãy xác định chiến lược giao dịch của bạn. Ở đây chúng ta lấy chiến lược bộ điều chỉnh nhiệt độ làm ví dụ. Chiến lược này sẽ áp dụng chiến lược xu hướng trong thị trường có xu hướng và chiến lược biến động trong thị trường biến động dựa trên điều kiện thị trường. Mã nguồn như sau (bạn cũng có thể tải xuống trực tiếp từ Strategy Square của trang web chính thức Inventor Quantitative):

Hình 5-12
Trong giao diện kiểm thử ngược mô phỏng, sau khi cấu hình các thiết lập kiểm thử ngược, chỉ cần nhấp vào nút Bắt đầu kiểm thử ngược và kết quả kiểm thử ngược sẽ được hiển thị ngay sau vài chục giây. Trong nhật ký kiểm thử ngược, số giây thực hiện kiểm thử ngược, tổng số nhật ký và số lượng giao dịch được ghi lại. Thông tin tài khoản in ra kết quả hiệu suất cuối cùng của chiến lược kiểm tra ngược: lợi nhuận và lỗ trung bình, lợi nhuận và lỗ vị thế, biên độ, phí xử lý và lợi nhuận ước tính, v.v.

Hình 5-13
Cột thông tin trạng thái ghi lại loại giao dịch, khối lượng vị thế, giá vị thế, 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 vị thế được giữ, số và thời gian cập nhật và thông tin vốn. Ngoài ra, nhãn lãi lỗ thả nổi hiển thị đường cong vốn chi tiết của tài khoản cũng như các chỉ số hiệu suất thường dùng: lợi suất, lợi suất hàng năm, tỷ lệ Sharpe, biến động hàng năm và tỷ lệ rút vốn tối đa, về cơ bản có thể đáp ứng nhu cầu của hầu hết người dùng.
Trong đó, chỉ số hiệu suất quan trọng nhất là tỷ lệ Sharpe. Đây là một chỉ số toàn diện, xem xét cả lợi nhuận và rủi ro. Đây cũng là một chỉ số tham chiếu quan trọng để đo lường một sản phẩm quỹ. Nói một cách dễ hiểu, nó có nghĩa là bạn chấp nhận bao nhiêu rủi ro cho mỗi đô la bạn kiếm được. Do đó, tỷ lệ Sharpe càng cao thì càng tốt.
Như tên gọi của nó, biến động hàng năm là biến động hàng ngày nhân với số ngày giao dịch mỗi năm. Nó đo lường rủi ro của một quỹ, nhưng chắc chắn không phải là rủi ro tổng thể. Ví dụ, Chiến lược A có độ biến động cao hơn, nhưng nó đã dao động theo hướng tăng với tỷ lệ lợi nhuận tốt, trong khi Chiến lược B có độ biến động thấp hơn, nhưng nó vẫn giữ nguyên. 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? Như thể hiện trong hình sau, chiến lược A:

Hình 5-14
Cuối cùng, trong cột thông tin nhật ký, trạng thái khớp lệnh của từng giao dịch trong quá trình kiểm tra ngược được ghi lại chi tiết, bao gồm thời gian cụ thể của giao dịch, trao đổi, mua và bán, loại mở và đóng, giá giao dịch khớp lệnh bởi công cụ kiểm tra ngược, số lượng giao dịch và thông tin in, v.v.

Hình 5-15
Sau khi kiểm tra ngược
Nhiều khi, thậm chí trong hầu hết các trường hợp, kết quả kiểm tra ngược sẽ không như mong đợi của bạn. Rốt cuộc, một chiến lược tạo ra lợi nhuận dài hạn, bền vững và ổn định không phải là điều dễ dàng. Nó đòi hỏi khả năng hiểu thị trường của bạn.
Nếu kết quả kiểm tra chiến lược của bạn cho thấy thua lỗ, đừng nản lòng, đây thực ra là điều bình thường. Đầu tiên, hãy kiểm tra xem logic chiến lược có được viết sai không, có sử dụng các tham số cực đoan không, có quá nhiều điều kiện mở và đóng không, v.v. Nếu cần, bạn cũng có thể xem xét lại chiến lược giao dịch và triết lý giao dịch của mình từ một góc độ khác.
Nếu kết quả kiểm tra ngược chiến lược của bạn rất tốt, đường cong vốn hoàn hảo và tỷ lệ Sharpe vượt quá 1 hoặc thậm chí cao hơn. Đừng quá vui mừng ngay bây giờ. Khi bạn gặp phải tình huống này, hầu hết thời gian là do sử dụng các hàm tương lai, trộm giá, quá mức hoặc không thiết lập được độ trượt giá, v.v. Bạn có thể sử dụng dữ liệu ngoài mẫu và giao dịch thực tế được mô phỏng để loại bỏ những vấn đề này.
Tóm tắt
Trên đây là phần giới thiệu về toàn bộ quá trình kiểm tra ngược toàn bộ chiến lược giao dịch, có thể nói là đã được chỉ rõ đến từng chi tiết. Cần lưu ý rằng xét cho cùng, việc kiểm tra ngược dữ liệu lịch sử là một môi trường lý tưởng nơi mà mọi rủi ro đều được biết đến. Do đó, thời điểm tốt nhất để kiểm tra lại chiến lược là trải qua thị trường tăng giá hoặc giảm giá, và số lượng giao dịch hiệu quả không được dưới 100 lần để tránh thiên kiến sống sót một phần.
Thị trường luôn thay đổi và phát triển. Một chiến lược hoạt động tốt trong quá trình kiểm tra ngược lịch sử không nhất thiết sẽ hoạt động tốt trong tương lai. Chiến lược không chỉ có thể đối phó với những rủi ro đã biết trong môi trường kiểm tra ngược mà còn cần phải đối phó với những rủi ro chưa biết trong tương lai. Do đó, việc tăng khả năng chống chịu rủi ro và tính phổ biến của chiến lược là rất cần thiết.
Bài tập về nhà
- Cố gắng sao chép chiến lược trong phần này và kiểm tra lại báo cáo hiệu suất
- Dựa trên kinh nghiệm giao dịch của riêng bạn, hãy cố gắng cải thiện và tối ưu hóa các chiến lược trong phần này
5.3 Cách hiểu báo cáo hiệu suất kiểm thử ngược chiến lược
bản tóm tắt
Khi quá trình kiểm tra ngược chiến lược của chúng tôi hoàn tất, Công cụ giao dịch định lượng Inventor sẽ đưa ra nhiều chỉ số hiệu suất và biểu đồ đường cong lợi nhuận khác nhau trên trang web. Tuy nhiên, có lẽ vì chúng ta không quen thuộc với cách diễn giải và nội dung của các chỉ số này nên chúng ta không thể đánh giá chính xác liệu một chiến lược là tốt hay xấu. Bài viết này sẽ bắt đầu với các khái niệm chỉ số chính để giúp mọi người hiểu báo cáo hiệu suất kiểm thử ngược chiến lược và phân biệt ưu 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ó loại báo cáo hiệu suất kiểm tra ngược này và nội dung cũng tương tự. Sau khi bạn đã học được nội dung của phần này, nó cũng sẽ áp dụng được ngay cả khi bạn chuyển sang một công cụ giao dịch khác.
Đánh giá khách quan và đầy đủ
Cho dù đó là bản ghi dữ liệu giao dịch thực tế hay báo cáo kiểm tra ngược sử dụng dữ liệu lịch sử, chất lượng của mô hình đều được đánh giá thông qua số liệu thống kê về điều kiện giao dịch.
Câu hỏi chính là cần có dữ liệu thống kê nào để so sánh? Hãy cùng xem một ví dụ: Như thể hiện trong hình bên dưới, giả sử hai bộ dữ liệu sau được thu thập trong quá trình thử nghiệm 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 không?

Hình 5-16
Câu trả lời là không. Tính thiên vị của hệ thống đánh giá sẽ dẫn hệ thống giao dịch định lượng đến ngõ cụt.
Hệ thống giao dịch phải có khả năng vượt qua thử nghiệm ngược lịch sử trước khi có thể đưa vào sử dụng. Một hệ thống giao dịch không thể vượt qua được thử nghiệm lịch sử sẽ khó có thể tạo ra lợi nhuận trong giao dịch thực tế trong thời gian dài. Kiểm tra ngược lịch sử là điều kiện tiên quyết cần thiết để đưa hệ thống giao dịch vào giao dịch thực tế.
Một hệ thống giao dịch có thể vượt qua được quá trình kiểm tra ngược lịch sử chưa hẳn đã là một hệ thống giao dịch tốt, nhưng nếu nó không thể vượt qua được quá trình kiểm tra ngược lịch sử thì chắc chắn đó không phải là một hệ thống giao dịch tốt. Nói chung, chúng ta cần phân tích báo cáo hiệu suất theo góc độ ổn định, bền vững và liệu chúng có đáp ứng được kỳ vọng hay không.

Hình 5-17
Như hình trên cho thấy, bất kỳ ai đã từng tiếp xúc với giao dịch định lượng có thể đã thấy những thuật ngữ dữ liệu hiệu suất backtest dài dòng và khó hiểu này. Trong số những dữ liệu hiệu suất này, nhiều dữ liệu thậm chí còn mâu thuẫn nhau. Nhiều người mới bắt đầu nghiên cứu định lượng thường bối rối không biết nên tập trung vào dữ liệu nào.
Các thuật ngữ chỉ báo hiệu suất trong hình trên thường có thể được chia thành nhiều 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, v.v. Ngay cả xét theo góc độ sản phẩm quỹ, phần lớn chúng chỉ là màn hình hiển thị kết quả tính toán backtest, ít có ý nghĩa ứng dụng thực tế như: yêu cầu vốn tài khoản, thu nhập nắm giữ, giới hạn tin cậy, v.v. Thậm chí bạn chỉ cần tập trung vào những điều quan trọng. Dưới đây tôi sẽ chọn ra những chỉ số hiệu suất kiểm thử ngược quan trọng nhất để giải thích chi tiết.
Các chỉ số hiệu suất quan trọng
Rút tiền tối đa
Công thức tính toán mức giảm tối đa như trên. Đối với mô hình, mức giảm tối đa là một chỉ số rủi ro rất quan trọng, thậm chí còn quan trọng hơn cả biến động. Mức giảm tối đa được thấy trong quá trình kiểm tra ngược cũng đại diện cho tình huống tồi tệ nhất có thể xảy ra sau khi bạn mở một vị thế.
Về mặt toán học, nếu vốn lỗ 20%, số tiền còn lại cần phải kiếm được 25% lợi nhuận để khôi phục lại quy mô vốn ban đầu. Nếu lỗ 50%, số tiền còn lại cần phải kiếm được 100% lợi nhuận để khôi phục lại quy mô vốn trước khi lỗ.
Khi đó không còn nghi ngờ gì nữa, tổn thất càng lớn thì khả năng phục hồi về quy mô vốn ban đầu càng nhỏ và độ khó càng lớn. Không gian lợi nhuận hướng lên của quỹ là không giới hạn, nhưng không gian lỗ hướng xuống thì có hạn và khả năng chạm đáy là lớn hơn.
Bất kể được định nghĩa thế nào thì ít nhất hai điểm sau đây là cách hiểu chính thống hiện nay:
- Độ thoái lui tối đa càng nhỏ thì càng tốt;
- Mức giảm tỷ lệ thuận với rủi ro. Mức giảm càng lớn thì rủi ro càng lớn và mức giảm càng nhỏ thì rủi ro càng nhỏ.
Tỷ lệ lợi nhuận trên rủi ro đã điều chỉnh (RAROC)
Nhiều người không quen với khái niệm này. Trên thực tế, tỷ lệ lợi nhuận-rủi ro đã điều chỉnh là ranh giới giữa người chơi chuyên nghiệp và người chơi nghiệp dư. Đây cũng là một công cụ đánh giá rất tốt cho các ngân hàng đầu tư, quỹ lớn và các nhà giao dịch chuyên nghiệp, đồng thời là tiêu chuẩn đánh giá chung trong lĩnh vực tài chính toàn cầu.
Trong đầu tư, chúng ta không chỉ nên nhìn vào lợi nhuận mà còn phải cân nhắc đến mức độ rủi ro đã phải chấp nhận để có được lợi nhuận đó. Nói chung, rủi ro và lợi nhuận của một tài sản là tỷ lệ thuận. Điều này có nghĩa là khi mô hình đang dẫn đầu về năng suất và đạt được tiến triển nhanh chóng, có thể vẫn còn những rủi ro tiềm ẩn đằng sau vinh quang của nó mà chưa bùng nổ.
Ví dụ, điều kiện mở và đóng hoặc tăng giảm vị thế trong mô hình có thể mang lại lợi nhuận cao hơn khi thị trường tăng, nhưng một khi thị trường giảm, mức lỗ sẽ tăng gấp bội, dẫn đến thua lỗ rất lớn. Hơn nữa, sự tăng và giảm có tác động không cân xứng đáng kể.
Nhiều nhà giao dịch định lượng giàu kinh nghiệm sẵn sàng hy sinh một số lợi nhuận để giảm rủi ro. Trong trường hợp này, lợi nhuận điều chỉnh theo rủi ro có giá trị tham khảo hơn. Do đó, trong quá trình kiểm thử ngược, một mô hình có rủi ro và biến động cao chưa chắc đã là một mô hình tốt ngay cả khi nó có lợi nhuận cao.
Các khoản tiền gửi này an toàn, nhưng lợi nhuận hàng năm chỉ đạt 2%. Thị trường có thể giúp bạn kiếm được 50% lợi nhuận chỉ trong vài ngày, hoặc cũng có thể khiến bạn mất 50% lợi nhuận chỉ trong vài ngày. Sau nhiều năm giao dịch, tôi có một khái niệm rất quan trọng: đối mặt với rủi ro. Rủi ro và lợi nhuận không bao giờ tồn tại riêng lẻ. Giao dịch cũng giống như ra khơi đánh cá. Bạn không thể đánh cá nhưng không muốn chịu rủi ro của biển cả. Quá bảo thủ và quá cấp tiến thực chất là hai thái cực. Điều này cũng đúng khi thiết kế mô hình chiến lược.
Số lượng giao dịch
Bạn không thể sử dụng kết quả kiểm tra ngược của vài tháng để chứng minh mô hình. Nếu có quá ít dữ liệu kiểm tra ngược, kết quả kiểm tra ngược có thể là ngẫu nhiên, hoặc các tham số là ngẫu nhiên, hoặc điều kiện thị trường là ngẫu nhiên, v.v. Ngoài ra, dữ liệu lịch sử dài hơn cũng có thể lọc ra một số thành kiến của người sống sót.
Nhìn chung, đối với cổ phiếu và hàng hóa trong nước, dữ liệu phải được kiểm tra ngược trong hơn 5 năm và đối với sản phẩm mới niêm yết, dữ liệu phải được kiểm tra ngược ít nhất 3 năm. Đối với các sản phẩm hoặc hàng hóa được niêm yết trước đó như vàng và chỉ số đô la Mỹ trên thị trường quốc tế, cần kiểm tra lại ít nhất một chu kỳ tăng-giảm, thường kéo dài hơn 10 đến 15 năm. Thời gian kiểm tra ngược phải đủ dài để kết quả kiểm tra ngược đủ tin cậy. Đối với những sản phẩm không đáp ứng yêu cầu này, giá trị R phải được tính trọng số phù hợp khi mở vị thế để chủ động giảm thiểu rủi ro.
Lợi nhuận trung bình
Chỉ số lợi nhuận trung bình có vẻ bình thường nhưng thực ra lại rất quan trọng. Cách tính cũng rất đơn giản: Lợi nhuận ròng / Số lượng giao dịch. Sẽ không ngoa khi nói rằng đây là tấm gương có thể phát hiện ra những thành tích kiểm thử ngược có vẻ sáng sủa trên bề mặt. Như minh họa bên dưới, nếu chiến lược này có thể kiếm được tiền thì nó không bình thường:

Hình 5-18

Hình 5-19
Nếu bạn xem hiệu suất kiểm tra ngược của chiến lược này, bạn có thể tự hỏi: liệu có đáng tiếc không nếu không sử dụng một chiến lược gần như hoàn hảo như vậy? Đợi đã! Xin hãy xem kỹ lợi nhuận trung bình ở hình thứ 2, chỉ có 17, nghĩa là lợi nhuận trung bình từ mỗi giao dịch chỉ là 17 nhân dân tệ.
Lấy ví dụ về phần lớn các sản phẩm trên thị trường tương lai có mức tăng 10 nhân dân tệ. Bất kỳ ai đã từng giao dịch thực tế sẽ hiểu điều đó có nghĩa là gì. Trong giao dịch thực tế, không chỉ một cú nhảy mà thậm chí mười hoặc tám cú nhảy cũng có thể xảy ra. Hai lần nhảy và ba lần nhảy là chuyện bình thường.
Tỷ lệ thắng
Tỷ lệ chiến thắng không bao giờ tồn tại riêng lẻ, hoặc sẽ không thực tế khi nói về vấn đề chỉ dựa trên tỷ lệ chiến thắng. Nếu bạn sử dụng đúng mô hình vào đúng thị trường, sẽ không có gì ngạc nhiên khi đạt được tỷ lệ chiến thắng 80%, nhưng điều này không có ý nghĩa gì.
Giá cả có thể tăng hoặc giảm, nếu không thì vẫn giữ nguyên. Nếu thời gian đủ dài, bạn sẽ thấy rằng xác suất giá tăng và giảm là 50% mỗi loại. Bất kể bạn sử dụng mô hình chiến lược nào, nếu tỷ lệ chiến thắng vượt quá 50% trong quá trình kiểm tra ngược, bạn nên cẩn thận. Về mặt toán học và vật lý, điều này là không thể.
Đường cong vốn chủ sở hữu chi tiết
Như câu nói, một bức tranh đáng giá ngàn lời. Đường cong vốn chủ sở hữu chi tiết bắt đầu từ thời điểm nhập đầu tiên đến thời điểm thanh cuối cùng của biểu đồ. Đây là đường cong vốn chủ sở hữu theo thời gian thực để giao dịch. Nó là theo thời gian thực vì nó tính đến lợi nhuận và lỗ thả nổi trên mỗi thanh.

Hình 5-20
Đường cong vốn chủ sở hữu chi tiết phản ánh những thay đổi trong giá trị ròng của tài khoản và là công cụ đánh giá trực quan nhất. Nó cho phép người ta có được ý tưởng sơ bộ về trạng thái thua lỗ và lợi nhuận của chiến lược và tính biến động/ổn định của lợi nhuận và thua lỗ chỉ trong nháy mắt. Tuy nhiên, bức tranh về báo cáo hiệu suất chiến lược này không chỉ có giá trị bằng ngàn lời nói mà còn khiến hàng triệu người tin tưởng bối rối. Ngoài ra, đừng bao giờ nhìn vào đường cong vốn chủ sở hữu đóng.
Tỷ lệ lợi nhuận hàng năm
Lợi nhuận hàng năm là một chỉ số gây tranh cãi. Một số người cho rằng nó dành cho người bình thường xem và không có giá trị tham khảo. Trước hết, việc tạo ra lợi nhuận là điều kiện tiên quyết để mô hình được lựa chọn, hay nói cách khác, bản thân lợi nhuận của mô hình phải có giá trị kỳ vọng dương.

Hình 5-21
Bạn có thể có vô số khoản lợi nhuận 100%, nhưng bạn chỉ có thể chi trả tối đa một khoản lợi nhuận 100%. Khoảng cách giữa tỷ lệ hoàn vốn hàng năm và tỷ lệ hoàn vốn thực tế (tỷ lệ hoàn vốn trong thời gian nắm giữ) có thể rất lớn, đôi khi còn lớn hơn cả những gì chúng ta có thể tưởng tượng.
Tóm tắt
Cuối cùng, có một điều cần giải thích. Hiệu suất kiểm thử ngược hoàn hảo không tồn tại. Ngoài các vấn đề với dữ liệu kiểm thử, người dùng mô hình có thể gặp nhiều cạm bẫy hơn. Mọi thứ từ tối ưu hóa tham số đến thiết kế giao dịch có thể khác với hoạt động thực tế.
Quan trọng hơn, các vấn đề cảm xúc ở cấp độ thực hiện là yếu tố X trong việc đưa mô hình vào sản xuất. Giao dịch thực tế không thể diễn ra trong môi trường "chân không cảm xúc". Hiện tượng đuôi béo là điều mà mọi nhà giao dịch theo chương trình phải luôn cảnh giác.
Bài tập về nhà
- Liệt kê các chỉ số hiệu suất mà bạn cho là quan trọng nhất trong quá trình kiểm tra ngược
- Hãy thử tính toán chỉ số tỷ lệ Sharpe
5.4 Tại sao cần phải thử nghiệm ngoài mẫu
bản tóm tắt
Ở phần trước, chúng tôi đã tập trung vào một số chỉ số hiệu suất quan trọng để hướng dẫn bạn cách hiểu báo cáo hiệu suất kiểm thử ngược chiến lược. Trên thực tế, việc viết một chiến lược có thể kiếm tiền thông qua backtesting không phải là điều khó khăn nhất. Điều khó khăn hơn là làm thế nào để đánh giá liệu chiến lược này có tiếp tục hiệu quả trong giao dịch thực tế hay không. Vì vậy, hôm nay tôi sẽ giải thích cho các bạn về thử nghiệm ngoài mẫu và tầm quan trọng của nó.
Kiểm tra ngược không giống như giao dịch thực tế
Nhiều người mới bắt đầu giao dịch định lượng dễ dàng bị thuyết phục về chiến lược giao dịch của họ dựa trên báo cáo hiệu suất có vẻ tốt hoặc đường cong vốn từ quá trình kiểm tra ngược, và sẵn sàng thể hiện tài năng của mình trên thị trường. Phải thừa nhận rằng, kết quả kiểm tra ngược này có thể hoàn toàn khớp với trạng thái thị trường nhất định mà họ quan sát được, nhưng khi chiến lược giao dịch này được đưa vào thực tế trong thời gian dài hơn, họ sẽ thấy rằng chiến lược này thực sự không hiệu quả.
Tôi đã thấy nhiều chiến lược giao dịch có tỷ lệ thành công trên 50% khi được kiểm tra ngược. Với tỷ lệ thắng cao như vậy, tỷ lệ lãi lỗ vẫn có thể cao hơn 1:1. Tuy nhiên, một khi những chiến lược này được đưa vào thực tế, về cơ bản chúng đều dẫn đến thua lỗ. Có nhiều lý do dẫn đến thua lỗ, một trong số đó là khi kiểm tra ngược, có quá ít mẫu dữ liệu, dẫn đến sai lệch dữ liệu.
Tuy nhiên, giao dịch là một việc phức tạp như vậy. Nhìn lại thì rất rõ ràng, nhưng nếu quay lại từ đầu thì chúng ta vẫn đang thua lỗ. Điều này liên quan đến vấn đề gốc rễ của việc định lượng - những hạn chế của dữ liệu lịch sử. Do đó, nếu bạn chỉ sử dụng dữ liệu lịch sử hạn chế để kiểm tra chiến lược giao dịch của mình, sẽ khó tránh khỏi vấn đề "lái xe trong khi nhìn vào gương chiếu hậu".
Xét nghiệm ngoài mẫu là gì?
Làm thế nào chúng ta có thể tận dụng tốt nhất dữ liệu hạn chế để kiểm tra lại các chiến lược giao dịch một cách khoa học khi dữ liệu bị hạn chế? Câu trả lời là thử nghiệm ngoài mẫu. Khi kiểm thử ngược, dữ liệu lịch sử được chia thành hai phần theo trình tự thời gian. Phần dữ liệu đầu tiên được sử dụng để tối ưu hóa chiến lược và được gọi là tập huấn luyện, trong khi phần dữ liệu thứ hai được sử dụng để kiểm thử ngoài mẫu và được gọi là tập kiểm tra.
Nếu chiến lược của bạn luôn hiệu quả, hãy tối ưu hóa các tham số tốt nhất trong dữ liệu tập huấn luyện và áp dụng các tham số này vào dữ liệu tập kiểm tra để kiểm tra ngược. Lý tưởng nhất là kết quả kiểm tra ngược phải tương tự như kết quả của tập huấn luyện hoặc trong phạm vi hợp lý. Điều này cho thấy chiến lược này tương đối hiệu quả.
Tuy nhiên, nếu một chiến lược hoạt động tốt trong tập kiểm tra nhưng hoạt động kém trong tập kiểm tra hoặc thay đổi rất nhiều và các tham số khác cũng vậy, thì chiến lược đó có thể có sai lệch về khả năng thích ứng dữ liệu.
Ví dụ, giả sử bạn muốn kiểm tra ngược lại thép cây tương lai hàng hóa và có khoảng 10 năm dữ liệu về thép cây (2009-2019). Sau đó, bạn có thể sử dụng dữ liệu từ năm 2009 đến năm 2015 làm tập huấn luyện và dữ liệu từ năm 2015 đến năm 2019 làm tập kiểm tra. Ví dụ, đối với chiến lược trung bình động kép, các nhóm tham số tốt nhất trong tập huấn luyện là (trung bình động 15 kỳ và trung bình động 90 kỳ), (trung bình động 5 kỳ và trung bình động 50 kỳ), (trung bình động 10 kỳ và trung bình động 100 kỳ)... Sau đó, chúng tôi đưa các nhóm tham số này vào tập kiểm tra để kiểm tra ngược và so sánh các báo cáo hiệu suất kiểm tra ngược và đường cong vốn của tập huấn luyện và tập kiểm tra để xác định xem sự khác biệt của chúng có nằm trong phạm vi hợp lý hay không.
Nếu bạn không sử dụng thử nghiệm ngoài mẫu và sử dụng trực tiếp dữ liệu từ năm 2009 đến năm 2019 để kiểm tra ngược chiến lược, kết quả có thể là báo cáo hiệu suất kiểm tra ngược tốt và đường cong vốn vì dữ liệu lịch sử phù hợp. Tuy nhiên, kết quả kiểm tra ngược như vậy không có nhiều ý nghĩa đối với giao dịch thực tế và không có vai trò hướng dẫn, đặc biệt là đối với các chiến lược có nhiều tham số hơn.
Kiểm tra ngoài mẫu nâng cao
Ngoài việc chia dữ liệu lịch sử thành hai phần và thực hiện kiểm tra ngược trong mẫu và ngoài mẫu, thực sự còn có một lựa chọn tốt hơn, đó là phương pháp kiểm tra ngược đệ quy và kiểm tra ngược chéo. Đặc biệt khi có ít dữ liệu lịch sử, chẳng hạn như hợp đồng tương lai dầu thô và hợp đồng tương lai táo vừa được niêm yết trong những năm gần đây, hai phương pháp này có thể được sử dụng để kiểm tra toàn diện mô hình bằng cách sử dụng dữ liệu hạn chế.
Nguyên tắc cơ bản của kiểm tra trục xuất: đào tạo mô hình với dữ liệu lịch sử dài trước, và kiểm tra mô hình với dữ liệu tương đối ngắn sau đó, sau đó liên tục di chuyển cửa sổ lấy dữ liệu về phía sau, lặp lại các bước đào tạo và kiểm tra.
Dữ liệu đào tạo: 2000 đến 2001, dữ liệu thử nghiệm: 2002;
Dữ liệu đào tạo: 2001 đến 2002, dữ liệu thử nghiệm: 2003;
Dữ liệu đào tạo: 2002 đến 2003, dữ liệu thử nghiệm: 2004;
Dữ liệu đào tạo: 2003 đến 2004, dữ liệu thử nghiệm: 2005;
Dữ liệu đào tạo: 2004 đến 2005, dữ liệu thử nghiệm: 2006;
...và những thứ tương tự...
Cuối cùng, kết quả thử nghiệm của các năm 2002, 2003, 2004, 2005, 2006 ...) được thống kê để đánh giá tổng hợp hiệu suất của chiến lược.
Nguyên tắc kiểm tra trục xuất có thể được giải thích trực quan như trong hình dưới đây:

Hình 5-22
Hình trên cho thấy hai phương pháp khác nhau để kiểm tra theo trục xuất.
Loại thứ nhất: Mỗi lần kiểm tra, dữ liệu kiểm tra ngắn hơn, số lần kiểm tra nhiều hơn.
Loại thứ hai: Mỗi lần kiểm tra, dữ liệu kiểm tra dài hơn, số lần kiểm tra ít hơn.
Trong các ứng dụng thực tế, độ dài của dữ liệu thử nghiệm có thể thay đổi và có thể thực hiện nhiều thử nghiệm để xác định tính ổn định của mô hình khi xử lý dữ liệu không dừng. Nguyên tắc cơ bản của xác thực chéo là chia tất cả dữ liệu thành N phần bằng nhau, sử dụng N-1 phần để đào tạo mỗi lần và sử dụng các phần còn lại để thử nghiệm.
Hãy chia các năm 2000-2003 thành 4 phần. Quá trình kiểm tra chéo là như sau:
Dữ liệu đào tạo: 2001-2003, dữ liệu thử nghiệm: 2000;
Dữ liệu huấn luyện: 2000-2002, dữ liệu thử nghiệm: 2003
Dữ liệu huấn luyện: 2000, 2001, 2003, dữ liệu thử nghiệm: 2002;
Dữ liệu huấn luyện: 2000, 2002, 2003, dữ liệu thử nghiệm: 2001;

Hình 5-23
Như hình trên: ưu điểm lớn nhất của kiểm tra chéo là tận dụng đầy đủ dữ liệu giới hạn, mỗi dữ liệu đào tạo cũng là dữ liệu thử nghiệm. Tuy nhiên, có những nhược điểm rõ ràng khi kiểm tra chéo được áp dụng cho kiểm tra mô hình chiến lược:
Khi dữ liệu giá không ổn định, kết quả kiểm tra mô hình thường không đáng tin cậy. Ví dụ, sử dụng dữ liệu năm 2008 để đào tạo, thử nghiệm với dữ liệu năm 2005. Rất có thể môi trường thị trường năm 2008 đã thay đổi rất nhiều so với năm 2005, do đó kết quả kiểm tra mô hình không đáng tin cậy.
2, tương tự như điều 1, trong kiểm tra chéo, nếu sử dụng mô hình đào tạo dữ liệu mới nhất và mô hình thử nghiệm dữ liệu cũ hơn, điều này không hợp lý.
Ngoài ra, khi kiểm tra mô hình chiến lược đối số hóa, cả kiểm tra trục xuất và kiểm tra chéo đều gặp phải vấn đề chồng chéo dữ liệu.
Trong khi phát triển mô hình chiến lược giao dịch, hầu hết các chỉ số kỹ thuật đều dựa trên dữ liệu lịch sử có độ dài nhất định. Ví dụ: sử dụng chỉ số xu hướng, tính toán dữ liệu lịch sử trong 50 ngày qua, và vào ngày giao dịch tiếp theo, chỉ số này được tính toán từ 50 ngày trước ngày giao dịch, sau đó tính toán dữ liệu của cả hai chỉ số là giống nhau trong 49 ngày, điều này sẽ dẫn đến sự thay đổi không rõ ràng của chỉ số mỗi hai ngày liền kề.

Hình 5-24
Dữ liệu chồng lên nhau có thể gây ra các tác động sau:
1 , Sự thay đổi chậm trong kết quả dự đoán của mô hình dẫn đến sự thay đổi chậm trong giữ vị thế, đó là sự chậm trễ của chỉ số mà chúng ta thường nói.
2. Một số giá trị thống kê không có trong kiểm tra kết quả mô hình, do liên quan đến chuỗi dẫn đến dữ liệu lặp lại, khiến một số kết quả kiểm tra thống kê không đáng tin cậy.
Một chiến lược giao dịch tốt phải có khả năng mang lại lợi nhuận trong tương lai. Ngoài việc kiểm tra khách quan các chiến lược giao dịch, việc kiểm tra ngoài mẫu cũng có thể tiết kiệm thời gian cho các nhà giao dịch định lượng một cách hiệu quả. Trong hầu hết các trường hợp, việc áp dụng trực tiếp các thông số tối ưu của tất cả các mẫu và đưa chúng vào thực chiến là rất nguy hiểm.
Nếu tất cả dữ liệu lịch sử trước thời điểm tối ưu hóa tham số được phân biệt, phân chia thành dữ liệu trong mẫu và dữ liệu ngoài mẫu, trước tiên sử dụng dữ liệu trong mẫu để tối ưu hóa tham số, sau đó sử dụng dữ liệu ngoài mẫu để thử nghiệm ngoài mẫu, thì có thể loại bỏ lỗi này, đồng thời có thể kiểm tra xem chiến lược tối ưu hóa có phù hợp với thị trường trong tương lai hay không.
Tóm tắt
Cũng giống như giao dịch, chúng ta không bao giờ có thể vượt qua thời gian để đưa ra một quyết định đúng đắn cho chính mình mà không có một sai lầm nào. Nếu có bàn tay của Thiên Chúa hoặc khả năng vượt qua từ tương lai trở lại, thì không cần kiểm tra, giao dịch trực tiếp trực tuyến cũng có thể tràn ngập. Và những người như tôi phải kiểm tra chiến lược của chúng tôi trong dữ liệu lịch sử.
Tuy nhiên, ngay cả với một lượng lớn dữ liệu lịch sử, chúng vẫn có vẻ cực kỳ khan hiếm khi phải đối mặt với tương lai rộng lớn, vô tận và không thể đoán trước. Do đó, hệ thống giao dịch được xây dựng theo chiều hướng từ dưới lên dựa trên lịch sử cuối cùng cũng sẽ sụp đổ theo thời gian. Bởi vì lịch sử không thể làm cạn kiệt tương lai. Do đó, một hệ thống giao dịch kỳ vọng tích cực hoàn chỉnh phải được hỗ trợ bởi các nguyên tắc và logic nội tại của nó.
“Tin tưởng nhưng phải kiểm chứng” — Tổng thống Reagan
Bài tập về nhà
- Những hiện tượng nào trong cuộc sống thực là ví dụ về sự thiên vị của người sống sót?
- Sử dụng các công cụ định lượng của nhà phát minh để kiểm tra ngược cả mẫu trong và mẫu ngoài, và so sánh sự khác biệt của chúng.
5.5 Tối ưu hóa và tối ưu hóa chiến lược giao dịch
bản tóm tắt
Bản chất của chiến lược giao dịch là khái quát hóa và kết luận các quy tắc thị trường. Bạn càng hiểu sâu về thị trường và khả năng diễn đạt ý tưởng bằng mã càng cao thì chiến lược của bạn sẽ càng gần với thị trường. Phần này sẽ tiếp tục giải thích cách tối ưu hóa chiến lược giao dịch của bạn và chuẩn bị cuối cùng cho giao dịch thực tế của bạn.
Tối ưu hóa việc vào và ra
Hầu hết các chiến lược theo dõi xu hướng đều sử dụng các đột phá hoặc chỉ báo kỹ thuật để nắm bắt xu hướng thị trường. Thông thường, các phương pháp vào và thoát của các tín hiệu này ít kịp thời hơn. Nếu chiến lược sử dụng mô hình giá đóng cửa, điểm vào sẽ ở mức giá mở cửa của đường K tiếp theo. Do đó, thời điểm vào tốt nhất để phá vỡ đường K này sẽ bị bỏ lỡ và một lượng lợi nhuận lớn sẽ bị bỏ lỡ.
Do đó, một cách hiệu quả là sử dụng giá theo thời gian thực có lợi hơn trong việc triển khai chiến lược và đặt lệnh ngay khi tín hiệu xuất hiện. Theo cách này, khi tín hiệu được thiết lập, bạn có thể tham gia thị trường ngay lập tức và sẽ không bỏ lỡ lợi nhuận. Nhưng không phải tất cả giá theo thời gian thực đều tốt hơn giá đóng cửa. Điều này phụ thuộc vào chiến lược giao dịch. Đối với một số chiến lược có logic giao dịch đơn giản, sự khác biệt giữa giá thời gian thực và giá đóng cửa là tương đối nhỏ. Tuy nhiên, mô hình giá đóng cửa không thể xử lý logic giao dịch chi tiết hơn, do đó cần phải sử dụng giá theo thời gian thực.
Tối ưu hóa tham số
Việc tối ưu hóa tham số có thể giúp các chiến lược giao dịch định lượng gần hơn với dữ liệu lịch sử và đạt được hiệu suất kiểm tra ngược tốt hơn. Ví dụ: Chúng tôi sử dụng chiến lược trung bình động kép trong hợp đồng cốt thép, nhưng hai trung bình động nào là tốt nhất? Sau đó, bạn có thể sử dụng chức năng điều chỉnh tham số trong công cụ định lượng của nhà phát minh để tự động tìm ra hai tham số trung bình động tốt nhất.
Như thể hiện trong hình bên dưới, lấy chiến lược trung bình động kép làm ví dụ, bản thân nó là một trường hợp đa chiều. Nếu chúng ta vẽ kết quả kiểm tra ngược của mỗi tham số thành một điểm (lưu ý hình bên dưới), thì mỗi tham số là một chiều của chiến lược này và cuối cùng tất cả các kết hợp tham số đều xây dựng nên hình dạng bề mặt đa chiều phức tạp này (giống như một ngọn núi).

Hình 5-25
Như đã trình bày ở trên, đây là biểu đồ hiệu suất chiến lược tham số kép. Khi các tham số thay đổi, tỷ lệ hoàn vốn cuối cùng cũng thay đổi đáng kể và bề mặt bị biến dạng mạnh, tạo thành "đỉnh" và "đáy" có độ cao khác nhau. Thông thường, vị trí đầu tiên trong kết quả tối ưu hóa là điểm cao nhất của toàn bộ bề mặt. Tuy nhiên, xét về độ nhạy của tham số, tính khách quan, v.v., đôi khi kết quả này có thể không phải là kết quả "tối ưu". Bởi vì thị trường liên tục thay đổi.
Do đó, nguyên tắc quan trọng của tối ưu hóa tham số là chọn các điểm ổn định của tham số thay vì các điểm đảo của tham số. Cái gọi là ngưỡng tham số đề cập đến sự tồn tại của một phạm vi tham số rộng hơn mà trong đó chiến lược có thể đạt được hiệu suất tốt. Nhìn chung, nó tạo thành phân phối chuẩn với tâm của cao nguyên. Cái gọi là đảo tham số có nghĩa là chiến lược sẽ chỉ hoạt động tốt khi giá trị tham số nằm trong phạm vi rất nhỏ. Khi tham số lệch khỏi giá trị này, hiệu suất của chiến lược sẽ giảm đáng kể.

Hình 5-26
Tham số Plateau
Lấy ví dụ như hình trên, một phân phối tham số chiến lược tốt phải là một tham số ổn định. Ngay cả khi các thiết lập tham số lệch, lợi nhuận của chiến lược vẫn có thể được đảm bảo. Các thông số như vậy có tính ổn định cao, có thể giúp chiến lược trở nên phổ biến hơn khi gặp phải nhiều điều kiện thị trường khác nhau trong các hoạt động thực tế trong tương lai.

Hình 5-27
Đảo Tham số
Lấy ví dụ từ hình trên, nếu hiệu suất kiểm tra ngược cho thấy các đảo tham số, khi các tham số dịch chuyển nhẹ, lợi nhuận của chiến lược sẽ giảm đáng kể. Các tham số như vậy thường khó đối phó với các điều kiện thị trường luôn thay đổi trong các giao dịch thực tế do tính phổ quát kém.
Do đó, nếu hiệu suất của các tham số lân cận kém hơn nhiều so với tham số tối ưu, thì tham số tối ưu này có thể là kết quả của việc lắp quá mức, về mặt toán học có thể được coi là một giải pháp kỳ dị hơn là giải pháp tối đa đang được tìm kiếm. Theo quan điểm toán học, các điểm kỳ dị không ổn định. Trong điều kiện thị trường không chắc chắn trong tương lai, khi các đặc điểm thị trường thay đổi, các tham số tối ưu có thể trở thành các tham số tệ nhất.
Thêm bộ lọc
Nhiều chiến lược xu hướng có thể nắm bắt xu hướng tốt và đạt được lợi nhuận cao khi thị trường có xu hướng. Tuy nhiên, về lâu dài, kết quả cuối cùng là lợi nhuận nhỏ hoặc lỗ. Vấn đề là gì?
Lý do là chiến lược này liên tục giao dịch trong một thị trường biến động và hầu hết các giao dịch biến động đều là thua lỗ hoặc lợi nhuận nhỏ. Thị trường ở trong một thị trường biến động khoảng 70% thời gian. Các khoản lỗ nhỏ liên tục trong thời gian dài dẫn đến mất tất cả các khoản lợi nhuận trước đó.

Hình 5-28
Giải pháp là thêm bộ lọc. Có nhiều loại bộ lọc trên thị trường, bao gồm bộ lọc lãi lỗ, bộ lọc giá trị rủi ro, bộ lọc mô hình xu hướng, bộ lọc chỉ báo kỹ thuật, v.v. Ví dụ, việc thêm bộ lọc trung bình động trong thời gian dài có thể giảm số lượng giao dịch trong thị trường biến động và lọc ra một nửa các giao dịch sai.
Làm phẳng đường cong tài trợ
Quantification theo đuổi phương pháp kiếm lợi nhuận ổn định và bền vững, đó là điều mà hầu hết các nhà giao dịch muốn thấy. Không ai muốn kiếm được 50% trong năm nay, mất 30% vào năm sau và kiếm được 40% vào năm sau nữa. Họ thà chấp nhận mức lợi nhuận hàng năm là 20%, nhưng nó có thể kéo dài hơn mười năm. Đây chính là những gì đầu tư định lượng có thể làm được. Bởi vì đầu tư định lượng là mô hình giao dịch có hiệu suất bền vững.
Để đạt được đường cong vốn trơn tru, cần phải xây dựng danh mục đầu tư với nhiều chiến lược, nhiều loại hình, nhiều chu kỳ và nhiều thông số. Nhưng nhiều hơn không nhất thiết là tốt hơn. Có một hiệu ứng biên giảm dần ở đây. Bạn càng thêm nhiều vào danh mục đầu tư lúc đầu, thì sự đa dạng hóa càng tốt. Tuy nhiên, khi chiến lược đạt đến một cấp độ nhất định, hiệu ứng lợi nhuận giảm dần của sự đa dạng hóa bắt đầu xuất hiện. Ưu điểm của sự kết hợp là đa dạng hóa. Mặc dù tỷ lệ lợi nhuận chung không phải là cao nhất, nhưng là ổn định nhất.
Hãy từ bỏ việc tìm kiếm Chén Thánh
Liệu giao dịch định lượng có thể tìm ra Chén Thánh hay không là câu hỏi mà nhiều nhà giao dịch cân nhắc. Một số nhà giao dịch thậm chí còn vội vã lao vào thị trường với cái gọi là chiến lược hoàn hảo của họ sau một lần kiểm tra ngược đơn giản. Tôi hy vọng mình sẽ chiến thắng mọi trận chiến và trở thành một chuyên gia lượng tử có thể vượt qua mọi trở ngại.
Nhưng liệu có Chén Thánh không? Thực ra rất đơn giản, câu trả lời là không. Trên thực tế, điều này không khó để hiểu. Nếu thị trường này thực sự có quy tắc, thì những người có chỉ số IQ cao hơn, trình độ học vấn cao hơn và làm việc chăm chỉ hơn sẽ có thể khám phá ra các quy tắc. Cho dù họ sử dụng phân tích toán học, độc quyền thông tin hay các phương pháp phân tích khác, cuối cùng họ sẽ kiếm được phần lớn tiền trên thị trường. Về lâu dài, những người này sẽ độc quyền thị trường giao dịch cho đến khi thị trường không còn có thể hoạt động bình thường nữa.
Tóm tắt
Nếu thời gian giao dịch đủ dài, bất kỳ ai cũng có thể phải đối mặt với nhiều xu hướng thị trường khác nhau trong quá trình giao dịch và những xu hướng này khó có thể lặp lại chính xác. Là một nhà giao dịch định lượng, ngoài việc kiểm tra và tối ưu hóa chính xác các chiến lược giao dịch của mình, bạn còn cần liên tục theo dõi các điều kiện thị trường và không ngừng cải thiện các chiến lược của mình để ứng phó với những thay đổi của thị trường.
Đồng thời, bạn cũng nên nhận ra rằng lợi nhuận và thua lỗ đều đến từ cùng một nguồn. Thua lỗ là một phần của toàn bộ chiến lược giao dịch. Ngay cả chiến lược giao dịch tốt nhất cũng có thể trải qua một loạt các đợt giảm giá. Khi có thua lỗ trong mọi giao dịch, các quy tắc và chiến lược giao dịch của bạn không nên bị nghi ngờ. Ít nhất thì đừng dễ dàng thay đổi khuôn khổ logic chiến lược của bạn trừ khi khuôn khổ logic đó sai ngay từ đầu.
Bài tập về nhà
- Xây dựng danh mục đầu tư dựa trên đặc điểm chiến lược của riêng bạn và kiểm tra ngược bằng các công cụ định lượng của nhà phát minh
- Cố gắng tối ưu hóa chiến lược giao dịch định lượng của bạn dựa trên nội dung của phần này
5.6 Xây dựng tư duy xác suất và cải thiện mô hình giao dịch của bạn
bản tóm tắt
Giao dịch vừa là khoa học vừa là nghệ thuật. Có nhiều phương pháp giao dịch, cho dù là đầu tư giá trị, phân tích kỹ thuật, điểm nóng sự kiện, phòng ngừa chênh lệch giá, v.v., chúng có vẻ chặt chẽ về mặt logic trên bề mặt và có lý thuyết. Nhưng trên thực tế, chúng thường mâu thuẫn nhau. Đôi khi, sự nghiêm ngặt của khoa học không thể giải thích được trí tưởng tượng phong phú của nghệ thuật.
Mặc dù các phương pháp giao dịch khác nhau có điểm khởi đầu khác nhau, nhưng mọi con đường đều dẫn tới Rome. Ưu điểm của đầu tư giá trị là có thể thiết lập biên độ an toàn cho biến động giá dựa trên giá trị; ưu điểm của phân tích kỹ thuật là ba giả định chính khiến giao dịch mang tính khoa học.
Tuy nhiên, tất cả chúng đều có một đặc điểm chung, đó là chỉ có thể đưa ra những dự đoán sơ bộ về phân tích giá trong tương lai chứ không thể đưa ra những dự đoán chính xác. Ngay cả khi phân tích cơ bản được kết hợp với phân tích kỹ thuật thì cũng không thể giải quyết được vấn đề cải thiện "độ chính xác", do đó giao dịch là một trò chơi xác suất từ đầu đến cuối.
Trò chơi may rủi
Trên thực tế, giao dịch không chỉ là trò chơi xác suất. Trong cuộc sống, mọi thứ từ những việc nhỏ như băng qua đường (đèn xanh, có an toàn để băng qua đường không?) và nên kết bạn với kiểu người nào (người bạn này có đáng tin cậy không?); cho đến những việc lớn như nên theo đuổi nghề nghiệp nào (giao dịch chuyên nghiệp có thực sự là một nghề tốt không?) và nên kết hôn với ai (liệu chúng ta có hạnh phúc bên nhau không?), tất cả đều là trò chơi xác suất để đánh giá rủi ro và lợi nhuận. Bởi vì chúng ta không có khả năng dự đoán tương lai nên mỗi khi chúng ta làm điều gì đó, dù chúng ta có tự tin đến đâu thì vẫn luôn có rủi ro và chúng ta không thể chắc chắn 100%.
Một lý do quan trọng khiến nhiều người mắc lỗi khi giao dịch là do thiếu tư duy xác suất và quá cảm tính thay vì lý trí khi giao dịch. Cảm xúc thực ra là bản năng nguyên thủy của chúng ta. Trên thị trường, những bản năng nguyên thủy này có thể kích thích nhiều điểm yếu của con người và khuếch đại chúng theo cấp số nhân. Đây là lý do tại sao hầu hết mọi người tham gia thị trường và kết thúc bằng thất bại.
Lý do giao dịch thất bại
Lý do 1: Do bản chất con người
Phần lớn mọi người đều có một điểm yếu: họ thích tận dụng những lợi thế nhỏ và sợ phải chịu những tổn thất nhỏ. Khi có một khoản lợi nhuận nhỏ trên thị trường, họ sẽ rút tiền ngay lập tức và thoát khỏi thị trường với lợi nhuận; khi có khoản lỗ, họ sẽ giữ vị thế thua lỗ để cố gắng lấy lại tiền của mình một cách tình cờ. Kết quả là, các khoản lỗ nhỏ dần dần tích tụ thành các khoản lỗ lớn.
Giá cả có thể tăng hoặc giảm, hoặc giữ nguyên. Về lâu dài, nếu không tính đến phí giao dịch và trượt giá, khả năng kiếm được tiền hoặc mất tiền là khoảng 50%. Do đó, phương pháp giao dịch của hầu hết mọi người trở thành chiến lược kỳ vọng tiêu cực với lợi nhuận hạn chế và rủi ro không giới hạn. Bảng quyết toán giao dịch của họ phải như thế này: lợi nhuận nhỏ>>......>>lợi nhuận nhỏ>>lỗ lớn.
Trong cuộc sống thực, điều này rất giống với suy nghĩ của người nghèo và người giàu. Người nghèo thường không thích rủi ro và sợ mất tiền. Tôi thích những công việc mang lại thu nhập ổn định và hướng tới sự ổn định. Ngay cả khi bạn không hoàn toàn chắc chắn về việc làm gì đó, bạn cũng không bao giờ nên làm. Nhìn bề ngoài, việc này có vẻ không có gì sai, nhưng thực ra lại có những cơ hội và rủi ro rất lớn.
Người giàu sẵn sàng chấp nhận rủi ro hơn, biết rằng rủi ro và lợi nhuận luôn tỷ lệ thuận. Chỉ có rủi ro mới tạo ra cơ hội. Họ đánh giá rủi ro một cách hợp lý và đặt cược dũng cảm khi rủi ro có thể kiểm soát được.
Lý do 2: Tôi thích kiếm tiền nhanh
Một tổ chức nước ngoài đã từng thực hiện một số liệu thống kê cho thấy về lâu dài, lợi nhuận hàng năm trên tài sản ròng của hầu hết các ngành công nghiệp khó có thể vượt quá 15%. Ngược lại, nhiều nhà đầu tư bán lẻ cảm thấy xấu hổ khi chào hỏi người khác nếu họ kiếm được 15% lợi nhuận trên thị trường. Mọi người thích kiếm tiền nhanh chóng và hành động của họ bao gồm giao dịch lớn và giao dịch ngắn hạn.
Vị trí nặng
Vị thế lớn, đòn bẩy cao và phân bổ vốn đều rất hấp dẫn nhưng cũng rất nguy hiểm. Nếu bạn thành công, bạn sẽ thành công; nếu bạn thất bại, bạn sẽ phải chịu số phận bi đát. Nếu bạn có chiến lược giao dịch với tỷ lệ chiến thắng là 50% và bạn hoạt động với vị thế đầy đủ và giao dịch ký quỹ, nếu may mắn, bạn có thể thắng hơn mười lần liên tiếp và tài sản của bạn cũng có thể thay đổi từ thay đổi về số lượng sang thay đổi về chất lượng.
Nhưng chỉ cần bạn mắc lỗi một lần, mọi thứ sẽ trở về con số không. Ngay cả khi bạn chỉ giao dịch với một vị thế lớn mà không phân bổ vốn, vẫn có nguy cơ tài khoản của bạn về 0, vì bạn không thể đảm bảo rằng mình sẽ không bị lỗ hơn chục lần liên tiếp trong tình huống thị trường tiếp theo. Ngay cả giao dịch lớn cũng có thể biến một chiến lược giao dịch ban đầu được kỳ vọng thành một chiến lược có lợi nhuận và thua lỗ không cân xứng.
Ngắn hạn
Môn võ duy nhất trên thế giới không thể đánh bại là tốc độ. Trong giới giao dịch, giao dịch thủ công trong ngày, giao dịch ngắn hạn trong ngày và giao dịch tần suất cao định lượng luôn rất bí ẩn. Tôi không nghi ngờ những người giao dịch bằng cách nhìn vào đồng hồ bấm giờ, nhưng tôi đang cố gắng thuyết phục bạn từ bỏ giao dịch ngắn hạn theo một góc nhìn khác.
Khi chúng ta đánh giá một phương pháp có khả thi hay không, chúng ta không chỉ nên xem xét những người đã thành công khi sử dụng các phương pháp này mà còn phải xem xét những người đã thất bại khi sử dụng các phương pháp này. Nói cách khác, bạn không thể cho rằng mua vé số là một chiến lược có kỳ vọng tích cực chỉ vì một số người trúng giải độc đắc.
Hơn nữa, khi xem xét bảng xếp hạng các sản phẩm vốn tư nhân, trong ba năm qua, có bao nhiêu trong số 100 công ty hàng đầu tham gia vào hoạt động đầu cơ hàng ngày hoặc giao dịch ngắn hạn? Không còn nghi ngờ gì nữa, tỷ lệ thành công của đầu tư ngắn hạn rất thấp, cho dù có thành công thì phương pháp kiếm tiền nhanh chóng này cũng khó có thể duy trì lâu dài. Nếu bạn không có năng khiếu, hãy cẩn thận khi sử dụng những mánh khóe này, dù sao thì chỉ có một Simmons mà thôi.
Lý do 3: Sự thiên vị
Nếu có thể, tôi khuyên bạn nên dành 100 phút để xem bộ phim "12 Angry Men". Một bộ phim được làm lại bởi bốn quốc gia: phiên bản đầu tiên của Mỹ năm 1957, phiên bản Nhật Bản năm 1991, phiên bản Nga năm 1997 và phiên bản Trung Quốc năm 2014. Mặc dù bộ phim này không thể dạy bạn cách giao dịch, nhưng nó dạy bạn cách nhìn nhận sự vật và học cách hiểu bản thân, điều này rất quan trọng.
Vì kinh nghiệm của con người có hạn nên nhận thức của con người cũng có hạn. Mọi người đều có thành kiến ít nhiều tùy thuộc vào kinh nghiệm của riêng họ. Nhiều khi, định kiến đã trở thành thói quen của hầu hết mọi người và họ coi việc phán đoán nhiều thứ dựa trên cảm xúc của mình là điều hiển nhiên.
Quay trở lại thị trường, cho dù đánh giá của bạn về thị trường dựa trên phân tích cơ bản hay phân tích kỹ thuật thì thực ra điều đó cũng không quan trọng. Nếu quan điểm của bạn khác với quan điểm của phần lớn thị trường, giá cả sẽ có xu hướng thiên về phần lớn thị trường và thị trường sẽ không hoạt động theo quan điểm của bạn.
Vì vậy, trong giao dịch, chúng ta phải nhớ “phán đoán nhưng không dựa vào phán đoán”. Cuối cùng, phải dựa trên sự kiện và giá cả. Lực duy nhất khiến giá cả tăng hoặc giảm chính là kỳ vọng của hầu hết mọi người về tương lai. Phán đoán của bạn không có trọng lượng trên thị trường, vì vậy đừng bao giờ để phán đoán của bạn hình thành nên thành kiến của riêng bạn.
Lý do 4: Theo đuổi sự hoàn hảo.
Những người tham gia thị trường bao gồm các chuyên gia từ mọi lĩnh vực, bao gồm vật lý, thống kê, toán học, thiên văn học, v.v. Nhiều người cố gắng sử dụng kiến thức chuyên môn của mình để giải thích thị trường này.
Nhưng những người tham gia chính vào thị trường là con người, và bản thân con người cũng có những hạn chế về nhận thức, điều đó có nghĩa là bản thân thị trường là sai lầm và không hoàn hảo. Vậy chúng ta có thể sử dụng những phương pháp "hoàn hảo" này để giải thích thị trường như thế nào? Điều này có trái với bản chất của thị trường không?
Trên đây là danh sách những lý do tại sao phần lớn những người tham gia thị trường cuối cùng đều thất bại. Ngoài những lý do chính nêu trên, còn có nhiều yếu tố khác không được liệt kê chi tiết ở đây. Tóm lại, ngoại trừ sự tự tin vào chiến thắng, mọi thứ khác đều là rào cản ngăn cản bạn đến với thành công.
Những người kiếm được tiền trên thị trường nhờ may mắn cuối cùng cũng sẽ trả lại tiền cho thị trường theo thời gian. Do đó, thị trường tương lai là một trò chơi có tổng âm. Chỉ bằng cách thay đổi cách suy nghĩ và thiết lập chiến lược giao dịch của riêng mình, bạn mới có thể đạt được thành công.
Tư duy xác suất là gì?
Tư duy xác suất là một cái tên mỹ miều, nói một cách đơn giản thì đó là tư duy cờ bạc. Bạn nghe không nhầm đâu, giao dịch cũng là cờ bạc. Khi nghe về cờ bạc, bạn có thể nghĩ đến "một người nào đó đã mất tất cả vì cờ bạc, bỏ trốn vì nợ nần hoặc không còn gia đình" và tránh xa nó.
Trong xã hội thực sự có một số người nghiện cờ bạc. Nhưng cờ bạc ≠ người đánh bạc. "Cờ bạc" có lẽ là một trong những từ bị hiểu lầm nhiều nhất. Nếu chiến lược của bạn là kỳ vọng tiêu cực, bạn là một con bạc; nếu chiến lược của bạn là kỳ vọng tích cực, bạn là một con bạc.
Nếu chúng ta loại bỏ ý nghĩa tiêu cực của "cờ bạc" và hiểu nó như một hoạt động liên quan đến việc chấp nhận một số rủi ro nhất định để đổi lấy một số lợi nhuận nhất định, thì cuộc sống thực sự là "cờ bạc" ở mọi nơi. Chọn chuyên ngành nào ở trường, có nên mua nhà không, có nên bắt đầu một dự án, đi làm hay khởi nghiệp kinh doanh, v.v.
Ngay cả việc gửi tiền vào ngân hàng cũng là một canh bạc vì bạn không chắc liệu có lạm phát trong tương lai hay liệu ngân hàng có phá sản hay không (xem cuộc khủng hoảng nợ của Hy Lạp). Tóm lại, từ lúc mới sinh ra cho đến lúc chết đi, mọi quá trình của cuộc sống đều là một canh bạc.
Làm thế nào để giành chiến thắng trong thời gian dài
Khái niệm cờ bạc cần được giải quyết sâu hơn: làm sao người ta có thể chiến thắng về lâu dài? Trước khi nghiên cứu các chiến lược chiến thắng dài hạn, trước tiên chúng ta hãy nghiên cứu các nguyên tắc của các chiến lược chiến thắng dài hạn đó. Ngoài máy in tiền, còn điều gì có thể đảm bảo chiến thắng lâu dài?
Đó chính là những gì xảy ra trong sòng bạc: baccarat, roulette, máy đánh bạc, blackjack, v.v. Bất kể phương pháp chơi thay đổi như thế nào, cuối cùng sòng bạc vẫn sẽ thắng. Thực ra có một bí mật ẩn giấu ở đây mà các sòng bạc không bao giờ tiết lộ: quy luật số lớn.
Sic Bo hoạt động như thế nào
Ba viên xúc xắc, cược vào kích thước, 4-10 là nhỏ, 11-17 là lớn, nếu cược đúng, bạn sẽ thắng tiền. Trong trò chơi Sic Bo có một loại xúc xắc bao quanh, tức là khi điểm của ba viên xúc xắc giống nhau thì người chia bài sẽ thắng. Xác suất xuất hiện xúc xắc bao quanh là 2,8%. Khi đó xác suất xuất hiện một số lớn và một số nhỏ đều là 48,6%. Sòng bạc dựa vào xác suất 2,8% này. Nếu mỗi người chơi cược 100 nhân dân tệ trong mỗi ván, sòng bạc sẽ thắng 280 nhân dân tệ sau khi chơi 100 ván.
(0.486+0.028)100100-0.486100100=280
Tuy nhiên, chiến lược sòng bạc này có lỗ hổng. Nếu một người chơi lớn cược hàng chục tỷ theo ý thích và tình cờ thắng, sòng bạc sẽ đột nhiên phá sản. Do đó, sòng bạc sẽ đặt ra giới hạn cược và không thể đặt cược thêm trong vòng này nếu vượt quá giới hạn. Theo cách này, ngay cả khi người chơi may mắn thắng được tiền trong một thời gian, về lâu dài, anh ta vẫn sẽ thua theo xác suất. Trong vô số trò chơi Sic Bo, người chơi sẽ mất 2,8% tiền của mình.
Luật số lớn
Lợi thế của chủ sòng bạc chỉ hơn người chơi 2%. Trong một lần đánh bạc, chủ sòng bạc có thể bị thua hoặc thậm chí thua liên tục. Tuy nhiên, chủ sòng bạc sẽ không sợ thua lỗ, vì anh ta biết rằng lý do anh ta có thể kiếm được tiền là do "quy luật số lớn" đang hoạt động. Chỉ cần mọi người tiếp tục đánh bạc, anh ta chỉ cần một chút lợi thế 2% để duy trì lợi nhuận ổn định trong dài hạn.
Vì vậy, sòng bạc không sợ bạn thắng tiền, mà sợ bạn sẽ không đến. Bạn thậm chí còn nghe nói về các ngân hàng phá sản trong nhiều năm qua, nhưng bạn đã bao giờ nghe nói đến một sòng bạc phá sản chưa? Về lâu dài, sòng bạc luôn là người chiến thắng. Đây là lý do tại sao cờ bạc sẽ chiến thắng về lâu dài.
Những ví dụ tương tự về chiến thắng trong thời gian dài bao gồm: nhiều loại xổ số. Quỹ giải thưởng xổ số ngày càng tăng lên kể từ khi xổ số ra đời và số tiền này chắc chắn đến từ phần lớn người chơi xổ số. Bạn có biết xác suất trúng 5 triệu đô la trong trò chơi Double Color Ball là bao nhiêu không? Câu trả lời là một trong 17,7 triệu.
Những thay đổi về xác suất
Giả sử có một đồng xu có cùng trọng lượng ở cả hai mặt, xác suất tung ra một chữ (mặt sau) hoặc một bông hoa (mặt trước) là 50% và mỗi lần tung đồng xu không phụ thuộc vào kết quả trước đó. Nếu bạn tung đồng xu 10.000 lần liên tiếp, xác suất ra mặt ngửa là khoảng 50%.
Nhưng nếu bạn chỉ ném 10 lần, xác suất nhận được kết quả dương tính sẽ thay đổi và xác suất có thể không đạt tới 50%. Do đó, người chia bài trong sòng bạc phải đảm bảo rằng chiến lược kỳ vọng tích cực này được kích hoạt đủ nhiều lần để chiến lược kỳ vọng tích cực này có hiệu quả. Đây cũng là lý do tại sao các tổ chức đầu tư tư nhân không thể dừng chiến lược khi họ bắt đầu chiến lược giao dịch định lượng trừ khi có những điều kiện đặc biệt.
Cách sử dụng "luật số lớn" để tạo ra chiến lược chiến thắng dài hạn trên thị trường tài chính sẽ là nội dung trong loạt khóa học tiếp theo của chúng tôi, hãy theo dõi nhé!
Tóm tắt
Ở trên, chúng tôi đã giải thích cho bạn cách nhìn nhận giao dịch theo hướng khoa học từ các khía cạnh xác suất, lý do giao dịch thất bại, tư duy giao dịch đúng đắn, nguyên tắc chiến thắng lâu dài trong cờ bạc, v.v. Tôi tin rằng nếu bạn học tốt, sự thay đổi trong suy nghĩ sẽ là sự thay đổi trong hành vi, và sự thay đổi trong hành vi sẽ là sự thay đổi trong thành công của bạn.
Bài tập về nhà
- Tại sao giao dịch lại là một trò chơi xác suất?
- Những lý do nào khác khiến giao dịch thất bại?
- 1











