Điều chúng ta chủ yếu nói đến ở đây là việc triển khai mã thời gian thực được lập trình cho các chiến lược giao dịch tần số trung bình và thấp.

Chiến lược

Sự ra đời của chiến lược giao dịch định lượng thường dựa trên việc quan sát và hiểu thị trường, tạo ra ý tưởng chiến lược, sau đó thiết kế các chi tiết cụ thể của chiến lược và sau đó kiểm tra lại nhiều loại dữ liệu để thu thập và xác minh tác động của các giá trị tham số cụ thể . Nếu hiệu quả tốt và có khả năng ứng dụng phổ biến thì bước tiếp theo là thử nghiệm thị trường thực với số vốn nhỏ. Nếu lời đề nghị thực tế ngoài mẫu khả thi, cuối cùng bạn có thể tăng vốn và chạy nó trong thời gian dài.

Để ngăn chặn đòn bẩy, hãy để tôi giải thích rằng tất nhiên có những phương pháp khác để tạo ra các chiến lược, chẳng hạn như khai thác dữ liệu, đào, đào, đào các yếu tố. Ngoài ra còn có các yếu tố tạo tự động như học máy và học tăng cường. Tuy nhiên, loại phương pháp hộp đen này khó tiếp tục chạy trong giai đoạn thoái lui của chiến lược, bởi vì bạn không biết khi nào và tại sao các yếu tố đào sâu này sẽ thất bại. Khi thực hiện giao dịch định lượng, điều quan trọng nhất là phải kiên quyết giao dịch. Nếu thị trường không tốt, bạn có thể thu hẹp vị thế của mình, nhưng bạn không thể đóng cửa. Không ai có thể biết khi nào thị trường lớn sẽ bùng nổ. Nếu bạn bỏ lỡ nó, sự thoái lui trước đó của bạn sẽ vô ích.

Một ví dụ tương tự là việc thiết kế và kiểm tra lại các chiến lược tương đương với “sự tính toán đền thờ” được nhắc đến trong “Binh pháp” của Tôn Tử “Người không có trận chiến mà có đền là người chiến thắng thì phải tính toán nhiều hơn; Ai chưa đánh mà chùa là kẻ thua thì phải tính toán. "Ít là nhiều. Nhiều thì thắng, ít thì ít, không tính là gì!"

Do đó, chiến lược giao dịch phải được lên kế hoạch tốt và tính toán cẩn thận ngay từ thiết kế ban đầu, nếu không bạn sẽ thực sự thua trước khi đưa ra lời đề nghị thực tế. Bước này là khó nhất. Mặc dù đoạn mã thực tế tiếp theo không hề dễ dàng, nhưng hầu hết nó chỉ tẻ nhạt. Nếu bạn dành nhiều thời gian và công sức hơn, bạn luôn có thể làm tốt. Chìa khóa của lời đề nghị chắc chắn là kiểm soát rủi ro.

Chiến lược giao dịch hoặc quy tắc giao dịch cho phép chúng ta "làm điều đúng đắn" và việc thực hiện cụ thể lời đề nghị thực tế là "làm điều đúng đắn". Nhiều khi, biết được hướng đi đúng còn khó hơn nhiều so với việc đi bộ một quãng đường. Giống như trò đùa về việc sửa chữa thiết bị, vẽ một đường kẻ phải trả một ngàn tệ. Bản thân việc vẽ đường chỉ có giá trị 1 đô la, nhưng biết vẽ ở đâu có giá 999 đô la.

Chiến lược + ưu đãi thực sự cùng nhau tạo thành một hệ thống giao dịch. Về thiết kế hệ thống giao dịch, bạn có thể tham khảo bài viết trước: Bảy yếu tố của một hệ thống giao dịch hoàn chỉnh. Ưu đãi thực sự ở đây thực chất là các hoạt động cụ thể của 4 bước tiếp theo của hệ thống giao dịch, "Nhập và thoát lãi và lỗ". Ba bước đầu tiên về cơ bản được xác định khi hoàn thành việc thiết kế chiến lược.

Tuy nhiên, ngay cả khi chiến lược tốt nhưng nếu không triển khai thực tế thì hiệu quả sẽ giảm đi rất nhiều, thậm chí chiến lược tiềm năng vốn tốt ban đầu cũng sẽ bị dừng lại. Phát triển một chiến lược tốt không hề dễ dàng, vì vậy đừng thất bại khi thực hiện nó. Một ý tưởng hay cuối cùng cần phải được thực hiện một cách kiên quyết.

câu hỏi

1. Tình hình thị trường bất ngờ

Loại chiến lược này sẽ chỉ gặp phải nếu có tín hiệu trong thanh. Trong thanh, giá đóng cửa hoặc giá mở cửa của một đường K nhất định không được sử dụng mà giá trong ngày được sử dụng để kích hoạt tín hiệu.

Đây là một ví dụ về một vấn đề gặp phải trong đợt chào hàng thực tế vài ngày trước. Một ví dụ vi mô về thị trường giao dịch. Nó khá phổ biến trong vòng tròn tiền tệ.

Hình bên dưới là đường K 10 giây của hợp đồng vĩnh viễn BNB cách đây vài ngày (2023.7.10 17:21) (một thanh là ý nghĩa của OHLCV tổng hợp từ dữ liệu giao dịch trong vòng 10 giây).

Như bạn có thể thấy, biên độ của đường dương lớn là 3,53% và giao dịch có giá trị khoảng 30 triệu đô la. Hoàn thành trong 10 giây. Trước khi thị trường này bắt đầu, xu hướng này hầu như không có biến động.

Nhìn vào hình bên dưới là dòng k 1 giây tại thời điểm đó, bạn có thể biết thêm chi tiết.

Về cơ bản, nó mất khoảng 4 giây để tăng hoàn toàn. Nó tăng hơn 2 điểm trong giây đầu tiên. Về cơ bản, đây là kết quả của các chiến lược tần suất cao (theo sự kiện, xu hướng tần số cao, tạo lập thị trường, v.v.) và các lệnh thuật toán có thể được sắp xếp trước.

Hãy nhìn vào đường K-line 4 giờ của BNB. Đường tích cực lớn nhất là khoảng thời gian tin tức được đưa ra. Biên độ 4,05%.

So sánh các đường K của các giai đoạn này, chúng ta có thể thấy rằng loại biến động do tin tức này (lần này tin tức là IEO mới của Binance, ArkM), thường được hoàn thành ngay lập tức. Thời gian tăng thêm 4 giờ thực ra không khác nhiều so với 10 giây và thời gian khởi động thực sự chỉ khoảng 4 giây. Loại chiến trường này thuộc về những chiến lược tần số cao được trang bị tận răng. Tuy nhiên, nó cũng có thể ảnh hưởng đến chiến lược tần số trung và thấp, gây ra độ trượt lớn hơn.

Chúng ta sẽ không nghiên cứu các chiến lược tần số cao ở đây. Chiến lược tần số trung bình và tần số thấp có ý nghĩa gì? Có hai điều chính hiện lên trong đầu tôi:

1. Một số xu hướng bùng phát rất đột ngột và hoàn thành trong một khoảng thời gian ngắn, vì vậy chiến lược không thể bị đình chỉ một cách tùy tiện. Ưu đãi thực sự trong vòng tròn tiền tệ phải được đảm bảo trực tuyến 24 giờ một ngày, đặc biệt nếu có một vị trí và không thể ngắt kết nối.

2. Độ trượt thực tế có thể đạt tới 2 điểm phần trăm. Hãy nhìn vào đường K 1 giây ở trên. Nếu tín hiệu mua của bạn dựa trên một mức giá nhất định và giá này xuất hiện ở phần dưới của đường K lớn, thì dù thế nào đi nữa, giá sau khi bạn vào lệnh. thị trường có thể trượt dốc 2~3 điểm phần trăm. Điều tồi tệ nhất có thể thấp tới 4 điểm phần trăm và những lệnh mua đó chỉ nằm trên đầu kim. Tuy nhiên, nếu bạn bán hàng, bạn sẽ kiếm được lợi nhuận ngoài mong đợi. Tuy nhiên, theo định luật Murphy, chiếc bánh mì rơi xuống luôn rơi vào mặt có bơ. Về lâu dài, khả năng cao là sẽ có nhiều trượt giá hơn.

Tuy nhiên, điều tốt là điều này chỉ xảy ra với số lần giới hạn. Miễn là chiến lược tốt và độ trượt giá lớn hơn thì đó chỉ là hoạt động chốt lời và sẽ không ảnh hưởng đến lợi nhuận dương lâu dài. Nó giống như phải chịu đựng thêm một cú sốc và hao mòn nữa.

Một cách để giảm thiểu điều này là sử dụng websocket để lấy giá mới nhất. Tài liệu cho biết nó cập nhật 250 mili giây một lần, nhưng đôi khi nó thực sự cập nhật nhanh hơn nên có thể phản hồi ngay lập tức. Một ưu điểm khác của websocket là nó không chiếm giới hạn tần số của Restful API của sàn giao dịch. Điều này sẽ được đề cập chi tiết sau.

2. Báo giá theo giờ

Điều này gặp phải bởi nhiều chiến lược xu hướng, bởi vì hầu hết chúng sử dụng giá vị trí chuyển đổi để tính toán tín hiệu vào và ra. Rồi khi một giờ trôi qua, mọi người lần lượt bắt đầu.

Vào giờ, đặc biệt là bội số của 8, vì cho dù chiến lược của bạn là chu kỳ nào, ba điểm này đều phải đáp ứng thời gian chia chung. Có thể chiến lược tự động của mọi người sẽ hoạt động và tần số cao, trung bình và thấp sẽ được nén lại với nhau. tạo ra tín hiệu riêng của họ, đối thủ của nhau.

Ngoài ra, lúc này sàn còn có nhu cầu thanh toán và giao hàng. Mặc dù hợp đồng vĩnh viễn không được giao nhưng có thể có các hoạt động khác để tính phí vốn giao hàng. Trong khoảng 6 giây sau ba giờ ngày 8/0/16, websocket của Binance không đẩy thông tin K-line, nó dừng lại! Chỉ cần hỏi bạn phải làm gì? Trong thực tế, thường không có giải pháp.

Điều nghiêm trọng hơn là thị trường sẽ tạo ra tiếng vang, đặc biệt là khi thị trường đi xuống, sự hoảng loạn sẽ dễ lây lan hơn. Các máy chủ của sàn giao dịch thậm chí còn bận rộn hơn và nhiều đồng tiền nhỏ với điều kiện thị trường khốc liệt không thể đặt lệnh ngay lập tức và tất cả đều là lỗi 1001. Khi bạn đặt lệnh vội vàng và thành công, lệnh giao dịch trên đầu chốt có thể là của bạn.

Vì vậy, việc trượt giá thực sự là điều khó tránh khỏi. Chỉ chấp nhận nó thôi. Như đã đề cập trước đó, hãy coi nó như một điểm dừng lỗ nữa.

Tuy nhiên, cũng có một số lời khuyên để chia sẻ.

Thời gian hết tín hiệu có thể được tính toán trước n giây trước giờ. Vào thời điểm đó, tình trạng tắc nghẽn chưa bắt đầu, bởi vì hầu hết các chiến lược tự động có thể đợi cho đến khi giá đóng cửa dòng K trong giờ xuất hiện trước khi bắt đầu tính toán tín hiệu. Tuy nhiên, vấn đề do hoạt động này gây ra là nó có thể tạo ra tín hiệu sai. Ví dụ: giá sẽ quay trở lại ngay lập tức. Không có tín hiệu nào và xảy ra dương tính giả. Tại thời điểm này, việc bạn có muốn làm điều này hay không là tùy thuộc vào sự lựa chọn của bạn. Tuy nhiên, bạn có thể thêm một ngưỡng nhất định và kích hoạt ngưỡng đó khi vượt quá ngưỡng đó, để ngăn chặn các tín hiệu sai do lợi nhuận ngắn hạn gây ra. Độ trượt có thể giảm đi một chút.

Ngoài ra còn có phương pháp sử dụng các tín hiệu bù như bù thời gian hoặc dòng shift k, không tạo ra tín hiệu theo giờ, không liên quan đến người khác và tránh tình trạng đông đúc tốt hơn. Ngoài ra còn có các phương pháp như TWAP.

Tuy nhiên, những điều này đòi hỏi một số kỹ năng và sẽ làm cho việc viết mã thực tế trở nên khó khăn hơn.

đề nghị chắc chắn

Chiến lược CTA tần số từ trung bình đến thấp Nói chung, mã thực tế rất đơn giản. Chỉ có một chiến lược cho nhiều loại và không có sự cộng hoặc trừ các vị trí và không có thông tin chéo nào được trộn lẫn với nhau. Khi đó mã cục bộ không cần duy trì bất kỳ trạng thái nào vì sàn giao dịch sẽ ghi lại mọi thứ cho bạn. Có vị thế hay không, yêu cầu ký quỹ bao nhiêu, lệnh có được hoàn thành hay không, v.v. Vì tần suất ở mức trung bình đến thấp nên bạn có thể kiểm tra thông tin tài khoản sàn giao dịch bất cứ lúc nào khi cần, và đây là cách nhanh chóng và chính xác nhất. Điều này giúp loại bỏ rắc rối khi sử dụng cơ sở dữ liệu cục bộ để ghi lại trạng thái giao dịch.

Chiến lược đơn giản này thực sự khả thi, nhưng vấn đề là mức thoái lui có thể lớn hơn, không đủ đa dạng và rủi ro cao. Một sản phẩm duy nhất có thể không có thị trường, dao động và hồi phục mà không quay trở lại, hoặc gặp phải điều kiện thị trường khắc nghiệt, và một lỗ hổng lớn khác sẽ xuất hiện trên đường cong vốn. Nếu bạn xem xét nó một cách nghiêm túc, bạn sẽ sợ hãi và dừng chiến lược của mình nếu bạn không thể chịu đựng được. Nếu bạn xem nhẹ nó, trải nghiệm giao dịch sẽ tồi tệ hơn nhiều. Lưu ý rằng tất cả đều nằm trong điều kiện của các vị trí hợp lý. Ngược lại, nếu vị trí quá nhẹ, mức thoái lui sẽ nhỏ, nhưng thu nhập cũng sẽ giảm, lãi và lỗ sẽ đến từ cùng một nguồn, và sẽ thật đáng tiếc nếu bỏ lỡ cơ hội; nặng quá thì sẽ mắc sai lầm, sớm muộn gì cũng xong.

Tuy nhiên, người mới bắt đầu nên bắt đầu bằng việc triển khai chiến lược này theo thời gian thực. Chỉ thông qua luyện tập, bạn mới có thể nhanh chóng nâng cao trình độ giao dịch của mình. Nhưng hãy đảm bảo giữ vị thế của bạn nhẹ nhàng và đòn bẩy phải thấp hơn. Tốt nhất là không nên sử dụng đòn bẩy để bạn có thể kiên trì trong thời gian dài hơn.

Nếu bạn muốn chuyên nghiệp hơn, giảm thiểu rủi ro về một điểm, đường cong vốn sẽ mượt mà hơn và bạn sẽ ít phải lo lắng hơn về thời điểm đưa ra lời đề nghị (như đã đề cập trước đó, trong các vị thế hợp lý, điều này thực sự rất quan trọng, bởi vì nó bám sát chiến lược và đợi đến khi gặp rủi ro sẽ dễ dàng hơn) nói chung là mô hình đa dạng, đa chiến lược, đa tham số, sau đó có sự cộng trừ các vị thế. Nó không nhất thiết có nghĩa là thêm hoặc bớt các vị trí trên một chiến lược, nhưng cũng có thể đạt được bằng nhiều chiến lược phụ để đạt được hiệu quả của việc thêm hoặc bớt các vị trí. Tuy nhiên, trong trường hợp này, chiến lược sẽ đông đúc hơn. Nếu bạn cũng muốn giảm thiểu độ trượt của các vị thế mở và đóng thì độ phức tạp của mã sẽ tăng vọt.

Hãy nói về những khó khăn do mô hình đa dạng, đa chiến lược và đa tham số này gây ra.

khó khăn

1. Giới hạn tần suất API

Khó khăn đầu tiên với nhiều chiến lược là giới hạn tần suất API. Có nhiều loại và chiến lược để có được giá cả, vị trí, đơn đặt hàng và thông tin khác theo thời gian thực, bạn phải liên tục truy cập vào sàn giao dịch. Như đã đề cập trước đó, nếu tần số thấp và chậm, giá thu được có thể không phải là giá mới nhất và độ trượt giá có thể lớn hơn nhiều.

Tài nguyên máy chủ của sàn giao dịch bị giới hạn nên có giới hạn về tần suất truy cập của API. Giới hạn của Binance là 2.400 mỗi phút, sau đó là giới hạn 10 giây và có các chế độ học máy khác để phát hiện hành vi độc hại. Dù sao, nó chắc chắn sẽ không hoạt động nếu quá thường xuyên. không hoạt động, sàn giao dịch sẽ có tiếng nói cuối cùng. Trong trường hợp này, bạn biết đấy, không có công thức nào cả.

Mặc dù được cho là 2400, nhưng tôi đã thử nghiệm nó một cách tình cờ bằng cách sử dụng đồng thời. Nếu tôi yêu cầu K dòng, ngay cả khi đó là 99 dòng ngắn nhất cùng một lúc (trọng lượng API là 1), thì nếu tôi yêu cầu khoảng 75 xu cùng một lúc. , Tôi sẽ bị cấm trong vài phút. Vì vậy, người ta không thể dễ dàng thách thức các giới hạn.

Nếu vi phạm sẽ bị lỗi 429, 418, IP của bạn sẽ bị cấm từ vài phút đến vài ngày. Lúc này nếu có vị trí thì sẽ khốn khổ (không có hạn chế gì trong việc đặt hàng). , đặc biệt là thanh lý các vị trí hiện có, nhưng bạn không có thông tin về giá, trừ khi có websocket).

Giải pháp cho vấn đề này là sử dụng websocket để lấy dữ liệu, để sàn giao dịch có thể chủ động đẩy dữ liệu lên kịp thời mà không chiếm API. Có thể làm giảm một số trượt. Vấn đề là bạn phải duy trì một trung tâm thị trường dựa trên websocket khác. Độ khó của mã trực tiếp ngày càng tăng và trở nên phức tạp hơn. Nó không được ngắt kết nối trong 24 giờ và nếu bị ngắt kết nối, nó phải được tự động kết nối lại kịp thời, v.v.

2. Trạng thái chiến lược

Như đã đề cập trước đó, nếu các chiến lược trở nên phức tạp hơn, bạn phải ghi lại trạng thái của từng chiến lược, nếu không, các vị thế của sàn giao dịch sẽ không biết chiến lược nào đã mở, mỗi chiến lược đã mở bao nhiêu, v.v. Và nếu muốn xem lại sau này, bạn sẽ phải ghi lại nhiều dữ liệu hơn.

Lúc này, bạn phải giới thiệu một cơ sở dữ liệu (tất nhiên, bạn cũng có thể sử dụng các bản ghi tệp, ý tưởng tương tự).

Sự ra đời của cơ sở dữ liệu dẫn đến các vấn đề của cơ sở dữ liệu. Tuy nhiên, điều này cũng tương tự như việc phát triển phần mềm ở các ngành khác và không có gì mới mẻ. Đặc biệt trong ngành thương mại điện tử, vì toàn là về số dư quỹ, quản lý đơn hàng và những thứ tương tự khác nên những người chưa có kinh nghiệm có thể đọc những cuốn sách, bài báo như vậy.

Cần lưu ý rằng cần có nhiều bước để đạt được các hoạt động nguyên tử tương tự như các giao dịch cơ sở dữ liệu, tức là một tập hợp các hoạt động hoặc tất cả chúng đều thành công. Khi một bước nhất định không thành công, bạn không phải làm gì và quay trở lại trạng thái ban đầu.

Sau đó, vì xét cho cùng, đây là một giao dịch bằng tiền thật nên đối với các hoạt động cơ sở dữ liệu về thông tin đơn hàng, tốt nhất nên sử dụng mức cao nhất trong bốn cấp độ cô lập, Serializable, để loại bỏ khả năng tất cả các lần đọc bẩn, đọc không thể lặp lại và ma đọc. Điều đó có nghĩa là không sử dụng đồng thời, đa luồng hoặc thậm chí không đồng bộ để đọc và ghi thông tin chính của cơ sở dữ liệu. Tất cả các hoạt động đều được hoàn thành trong một luồng. Triển khai các hoạt động.

Đừng xem nhẹ thách thức của việc lập trình đồng thời. Nếu có vấn đề với loại hệ thống này thì có lẽ không thể sửa được. Đây là lỗi khó tìm nhất trong quá trình phát triển phần mềm. Những người có thể hoàn thành loại công việc này một cách gọn gàng là những lập trình viên với mức lương hàng tháng từ 50.000+ trở lên.

Tôi có thể nghĩ ra không có nhiều cái sử dụng đa luồng hoặc không đồng bộ (đa luồng và không đồng bộ, nên sử dụng đa luồng, vì không đồng bộ giống như một căn bệnh truyền nhiễm trong Python. Một khi đã sử dụng, nó phải được sử dụng trong chuỗi cuộc gọi) Điều thực sự có lợi là gửi tín hiệu cảnh báo DingTalk và những thứ tương tự. Vì dịch vụ DingTalk ở Trung Quốc và máy chủ đổi tiền ở nước ngoài nên máy chủ mã của bạn phải được triển khai ở nước ngoài, gần sàn giao dịch hơn nên khi gửi DingTalk, đôi khi phải mất vài giây để quay lại và đôi khi nó còn bị chặn. kéo dài hơn mười giây.

cuối cùng

Trên thực tế, sẽ không có vấn đề gì nếu bạn không thể làm được nhiều việc. Miễn là bạn có ý thức chấp nhận mức trượt giá lớn hơn, bạn có thể kiếm được gần 1/5 hoặc thậm chí nhiều hơn lợi nhuận. Điều quan trọng nhất là chiến lược Mong đợi lợi nhuận tích cực và có thể hoạt động mà không có bất kỳ thời gian ngừng hoạt động nào là chìa khóa.

Nói tóm lại, ưu tiên hàng đầu của lời đề nghị chắc chắn là tiếp tục và thực hiện ổn định logic đã được thiết lập của chiến lược. Trượt giá là một phần của giao dịch, chỉ cần cố gắng giảm nó miễn là nó không làm bạn gãy cơ.

Chiến lược hạng nhất, luồng 2 và 3 được triển khai, không có vấn đề gì lớn. Nhưng nếu chiến lược không đạt tiêu chuẩn, mã giao dịch thực tế hàng đầu sẽ không giúp ích gì, và thua lỗ vẫn là lỗ. Vì vậy, chỉ viết mã tốt thì không thể thực hiện tốt giao dịch định lượng được. Chiến lược này tốt và mã trực tiếp mạnh mẽ. Tuy nhiên, khi thời gian có hạn, hãy tập trung vào chiến lược.

Còn tiếp