Cryptocurrency Quantitative Trading cho người mới bắt đầu - đưa bạn đến gần Cryptocurrency Quantitative (3)

Tác giả:Lydia., Tạo: 2022-07-29 09:37:22, Cập nhật: 2023-09-21 21:03:55

img

Cryptocurrency Quantitative Trading cho người mới bắt đầu - đưa bạn đến gần Cryptocurrency Quantitative (3)

Thông báo lỗi

Trong các bài viết trước, chúng ta đã học được rằng cái gọi là giao dịch theo chương trình và định lượng là một chương trình kịch bản dựa trên dữ liệu thu được từ sàn giao dịch thông qua một loạt các phép tính, phán đoán và kích hoạt để thực hiện một số hoạt động, và vận hành tài khoản giao dịch để giao dịch. Những hành động này của việc mua lại dữ liệu và hoạt động tài khoản đều được thực hiện thông qua giao diện API giao dịch. Nói đơn giản, chương trình kịch bản tương tác với sàn giao dịch. Vì nó là một tương tác, phải có tương tác bình thường và tương tác bất thường. Khi một tương tác bất thường xảy ra, giao diện trả về thông điệp ngoại lệ.

Tất nhiên, có tất cả các loại thông báo lỗi và thông báo lỗi trong các hệ thống giao dịch định lượng và định lượng trên thị trường, hoặc trong các chương trình được phát triển bởi chính chúng tôi. Các thông báo lỗi này không giới hạn trong các thông báo lỗi được báo cáo bởi giao diện API trao đổi. Ngoài ra còn có lỗi ngoại lệ thời gian chạy chương trình, lỗi cấu hình, lỗi ngữ pháp chương trình và vân vân.

Thông báo lỗi trên nền tảng giao dịch định lượng FMZ cũng được chia thành một số loại:

  • Lỗi ngữ pháp chiến lược Loại lỗi này là phổ biến nhất, bởi vì người mới bắt đầu không quen thuộc với lập trình, và có những lỗi ngữ pháp trong việc viết mã trong giai đoạn học tập và kiểm tra. Ví dụ:

    img

    Mã đã bỏ lỡ các ký tự như dấu ngoặc. Những lỗi như vậy thường có thể được nhìn thấy trên trang chỉnh sửa chiến lược, và chiến lược không thể được chạy (một lỗi sẽ được báo cáo trực tiếp tại thời điểm chạy, như được hiển thị trong hình bên dưới).

    imgVì vậy, sau khi viết chiến lược, hãy nhìn vào trang chỉnh sửa chiến lược nền tảng để xem có một XX màu đỏ không, nếu có, chắc chắn có một lỗi rõ ràng.

  • Ngoại lệ chương trình thời gian chạy do chương trình chiến lược BUG Có một lỗi trong chương trình. Khi chương trình đang chạy, kích hoạt một ngoại lệ sẽ khiến chương trình dừng lại bất thường và hiển thị các thông báo lỗi như vậy.

    img

    img

    Những lỗi như vậy sẽ khiến chương trình trở nên bất thường và chương trình sẽ ngừng chạy.

  • Lỗi do cấu hình và cài đặt không chính xác

    Trên nền tảng FMZ, cặp giao dịch được xác định một cách thống nhất theo định dạngX_Y, trong đó X đại diện cho tên của đồng tiền giao dịch và Y đại diện cho tên của đồng tiền mệnh giá (tiền tệ mệnh giá của cặp giao dịch hợp đồng tương lai dựa trên tiền tệ thường được thể hiện bằng USD, như được mô tả trong các bài viết trước), chẳng hạn như:BTC_USDT, nếu tôi viết cặp giao dịch ngẫu nhiên, viết nó nhưBTC-USDT.

    img

    Một lỗi được báo cáo trên hệ thống backtesting nền tảng FMZ:

    img

    Hơn nữa, một sai lầm mà người mới bắt đầu thường gặp:

    img

    Loại lỗi này là do thay đổi mật khẩu trên tài khoản nền tảng FMZ, dẫn đến việc vô hiệu hóaAPI KEYtrong đối tượng trao đổi được cấu hình (khóa API của người dùng được cấu hình trên nền tảng FMZ sau khi được mã hóa trên trình duyệt), và chiến lược không thể bắt đầu, do đó một lỗi được báo cáo.

  • Một lỗi được báo cáo trong cuộc gọi giao diện

    Các lỗi gọi giao diện thường gặp khi chạy một chiến lược. Trong các bài viết trước, chúng tôi đã học được rằng các giao diện trên nền tảng FMZ được chia thànhgiao diện tạo yêu cầu mạnggiao diện không tạo yêu cầu mạng. Lỗi giao diện sẽ không làm cho chương trình chiến lược dừng lại, thường là do ngoại lệ gọi giao diện và dữ liệu sai được trả về, chiến lược không tạo ra dung nạp lỗi, và lỗi ngoại lệ chương trình do dữ liệu sai gây ra khiến chương trình dừng lại (khái niệm dung nạp lỗi được đề cập trong các bài viết trước).

    Dưới đây là một số thông báo lỗi giao diện tạo ra các yêu cầu mạng:

    • Thời gian ra khỏi mạng

      Một trong những thông báo lỗi thường gặp của người mới bắt đầu là việc sử dụng thiết bị mạng nội địa (máy tính hoặc máy chủ nội địa của riêng họ).

    • Lỗi http 429

      Một trong những thông báo lỗi cổ điển là giao diện trao đổi được gọi quá thường xuyên, vượt quá giới hạn tần số của trao đổi (được đề cập trong các bài viết trước). Một số người mới bắt đầu có thể nói rằng tôi muốn nộp đơn choAPI KEYChúng ta cần biết rằng tần suất giới hạn truy cập giao diện của các sàn giao dịch thường dựa trên địa chỉ IP. Nói đơn giản, miễn là tất cả các yêu cầu được gửi đến một địa chỉ IP được tính trên địa chỉ IP này, máy chủ trao đổi sẽ từ chối truy cập nếu yêu cầu vượt quá giới hạn.

    • Báo cáo lỗi về hoạt động của giao diện trao đổi

      Thời gian hết hạn và 429 được đề cập ở trên là lỗi mạng. Nếu có vấn đề về kinh doanh của giao diện trao đổi, một lỗi cũng sẽ được báo cáo. Ví dụ, nếu tôi muốn có được giá thị trường giao ngay, nhưng tôi thiết lập một cặp giao dịch không tồn tại. Tôi đã thử nghiệm nó trong công cụ gỡ lỗi của nền tảng FMZ, công cụ gỡ lỗi là một công cụ kiểm tra rất thuận tiện, rất phù hợp với việc kiểm tra bot thực sự của các cuộc gọi hàm và thu thập dữ liệu.

      img

      Kết quả thực hiện công cụ gỡ lỗi, không có sự khác biệt giữa thực hiện công cụ gỡ lỗi và thực hiện bot thực sự.

      Huobi	error	GetTicker: Invalid ticker: {"Info":{"err-code":"invalid-parameter","err-msg":"invalid symbol","status":"error","ts":1620872079355},"High":0,"Low":0,"Sell":0,"Buy":0,"Last":0,"Volume":0,"OpenInterest":0,"Time":0}
      

      Thông báo lỗi ở đây có nghĩa là cặp giao dịch không hợp lệ (như thấy ở đây"err-msg":"invalid symbol") Ví dụ, có nhiều lỗi liên quan đến kinh doanh như thiết lập đòn bẩy khi một số sàn giao dịch không hỗ trợ các giá trị đòn bẩy với phần thập phân, tại thời điểm này, nếu giá trị đòn bẩy có một phần thập phân, nó cũng sẽ gây ra lỗi trong cuộc gọi giao diện.

    Danh sách một cuộc gọi giao diện không tạo yêu cầu mạng

    • Mã hợp đồng tương lai đặt Một số giao diện chỉ đặt một số biến số toàn cầu trong hệ thống và không tạo yêu cầu mạng, ví dụ:

      img

      Tuy nhiên, nếu tham số được truyền không chính xác hoặc bị phác thảo, sẽ báo cáo lỗi.

      img

    Nhưng bất kể loại lỗi, thông báo lỗi được hiển thị là thông tin chính để tìm ra vấn đề, và vấn đề thường có thể được nhìn thấy từ thông báo lỗi. Bạn có thể sử dụng công cụ dịch để dịch thông báo lỗi và trích xuất thông tin chính. Ví dụ:"err-msg":"invalid symbol"In the above example, the translation is: err msg: không hợp lệ ký hiệu . It is probably known that the trading pair is set incorrectly, because English symbols are usually used to represent the trading code and trading pair. For common problems, there is a post that will continue to be collected for query: Đối với các vấn đề phổ biến, có một bài viết sẽ tiếp tục được thu thập để truy vấn:https://www.fmz.com/bbs-topic/9158

Hệ thống kiểm tra ngược

Hệ thống backtesting cũng là trọng tâm của một công cụ định lượng. Hệ thống backtesting có thể kiểm tra các nguyên mẫu chiến lược một cách thuận tiện, các lỗi tiềm năng và các vấn đề logic trong chiến lược thử nghiệm sơ bộ. Hệ thống backtesting cần được xem xét một cách hợp lý. Hệ thống backtesting có thể phản ánh một số vấn đề của chiến lược đến một mức độ nhất định.

Sau đây là một mô tả ngắn gọn về hệ thống backtesting trên nền tảng FMZ từ mức độ của các ngôn ngữ chiến lược khác nhau được hỗ trợ bởi FMZ. (Một số giới thiệu về hệ thống backtesting đã được đề cập trong các bài viết trước đây)

  • JavaScript

    Kiểm tra lại trong trình duyệt sử dụng các tài nguyên phần cứng gốc.

  • Python

    Khi backtest trên một docker, bạn có thể chọn docker nào để gán (hoặc docker được triển khai bởi chính bạn, hoặc docker công cộng trên nền tảng FMZ). Do tải trọng lớn của người quản lý công cộng trên nền tảng FMZ, nên sử dụng docker cục bộ để backtest (điều này cũng sẽ nhanh, khi docker công cộng đang backtest, nếu các nhiệm vụ vượt quá tải, một số nhiệm vụ backtest sẽ bị hủy, dẫn đến gián đoạn backtesting).

  • C++

    Không giống như các ngôn ngữ kịch bản, các chiến lược ngôn ngữ C ++ cần được biên dịch và sau đó được thực thi. Chiến lược ngôn ngữ C ++ sẽ được biên dịch đầu tiên trên nền tảng FMZ (máy chủ) (nếu có vấn đề với mã, việc biên dịch có thể không vượt qua, và một thông báo lỗi sẽ bật lên trực tiếp). Sau khi biên dịch được thông qua, nó sẽ được kiểm tra lại trên nền tảng FMZ (máy chủ).

  • MyLanguage

    Việc thực hiện cơ bản là JavaScript, và backtesting cũng được thực hiện trên trình duyệt.

  • Hiển thị

    Việc thực hiện cơ bản là JavaScript, và backtesting cũng được thực hiện trên trình duyệt.

Hệ thống backtesting trên nền tảng giao dịch FMZ Quant được chia thành hai chế độ backtesting (điều này bất kể ngôn ngữ chiến lược, đây là cài đặt backtesting, và việc backtesting chiến lược trong tất cả các ngôn ngữ đều giống nhau).

img

    1. Kiểm tra hậu quả ở mức mô phỏng Nói một cách đơn giản, backtesting cấp độ mô phỏng đề cập đến dữ liệu giá của mỗi nút thời gian được mô phỏng và tạo ra theo dữ liệu đường K.
    A bar in the K-line opens high and closes low, which constitutes a price framework, within which the prices are all in this price frame, so as long as the generated price opens high and closes low in this K-line frame within the range, the simulated price is reasonable.
    

    Nó giống như một mô phỏng như thế này:https://www.fmz.comimgTất nhiên, khi hệ thống backtest thực tế thực hiện mô phỏng này, tình hình phức tạp hơn một chút so với hình trên. Biết nguyên tắc này, điều quan trọng là phải lưu ý đến những nhược điểm của việc kiểm tra lại ở cấp độ mô phỏng, mặc dù kiểm tra lại ở cấp độ mô phỏng rất nhanh (vì các giá được tạo ra bởi mô phỏng không phải là giá thực tế từng giây một).xu hướng chuyển động bọ ve mô phỏng, chiến lược sẽ hoạt động rất tốt (nhưng trong thực tế, giá có thể không có xu hướng này, mặc dù giá nằm trong khuôn khổ của thanh K-line này). K-đường được sử dụng để tạo ra các dữ liệu tick mô phỏng ở đây được gọi là K-đường dưới cùng, và giai đoạn của K-đường này được gọi làThời gian đường K dưới cùng, được thiết lập như trên trang thiết lập chiến lược:

    imgCài đặt 1 phút ở đây có nghĩa là dữ liệu đường K với khoảng thời gian 1 phút được sử dụng làm nguồn dữ liệu để tạo ra dấu hiệu mô phỏng.

    Một điểm khác là đối với các chiến lược tần số cao, rõ ràng không phù hợp để sử dụng backtesting ở cấp độ mô phỏng. Tuy nhiên, đối với các chiến lược xu hướng, việc sử dụng backtesting ở cấp độ mô phỏng vẫn có thể phản ánh hiệu suất của chiến lược ở một mức độ nhất định.

    1. Kiểm tra hậu quả ở cấp độ bot thực sự Sau khi nói về backtesting ở cấp độ mô phỏng, hãy nói về backtesting ở cấp độ bot thực tế. Nói đơn giản, backtesting ở cấp độ bot thực tế là việc phát hành dữ liệu giá thực tế mỗi giây trong quá trình backtesting. Nó cho phép chiến lược theo dõi lại giá mỗi giây của thị trường. Phương thức backtesting này cho phép bạn backtest các chiến lược với tần suất giao dịch cao và có được một mức độ tham chiếu nhất định. Nhược điểm là số lượng dữ liệu backtesting ở cấp độ bot thực sự là quá lớn để được backtest trong một khoảng thời gian lớn (thời gian thường ít hơn 1 ngày).dữ liệu phân chia(dữ liệu giao dịch tick-by-tick, và dữ liệu độ sâu thị trường cũng có ảnh chụp từng giây trong backtesting bot thực, vì vậy số lượng dữ liệu backtesting bot thực là rất lớn) để tăng phạm vi backtesting phù hợp, như thể hiện trong hình:

    img

Nguồn dữ liệu của hệ thống kiểm tra lại nền tảng giao dịch lượng tử FMZ ở đâu? Hệ thống kiểm tra lại sử dụng dữ liệu của trung tâm dữ liệu của nền tảng FMZ theo mặc định. Trung tâm dữ liệu của nền tảng FMZ tự động thu thập dữ liệu thị trường đặt của mỗi loại tiền tệ của mỗi sàn giao dịch và cung cấp nó cho hệ thống kiểm tra lại trên nền tảng.

    1. Sử dụng dữ liệu từ trung tâm dữ liệu FMZ theo mặc định Như đã đề cập trong các bài trước:https://www.fmz.com/bbs-topic/9536Dữ liệu backtesting được cung cấp bởi nền tảng chỉ hỗ trợ một số lượng giới hạn các cặp giao dịch (dữ liệu backtesting của toàn bộ thị trường và tất cả các loại tiền tệ là một con số thiên văn, và việc thu thập tất cả chúng là không thực tế.
    1. Sử dụng dữ liệu nguồn dữ liệu tùy chỉnh Bạn có thể sử dụng các tùy chọn trên trang backtesting để thiết lập nguồn dữ liệu tùy chỉnh. đơn giản, nếu bạn có dữ liệu từ một sàn giao dịch, bạn có thể cung cấp nó cho hệ thống backtesting của nền tảng FMZ để backtest theo yêu cầu định dạng trên nền tảng FMZ.

    img

    Ngoài ra còn có một số ghi chú về các nguồn dữ liệu tùy chỉnh trong tài liệu FMZ API:https://www.fmz.com/api#custom-data-source

Học hỏi, thử nghiệm, suy nghĩ

Bạn không thể thực hiện giao dịch theo chương trình và định lượng mà không cóhọc tập, thử nghiệm, vàsuy nghĩ. Suy nghĩ về các vấn đề không thể vô ích, đó là không hiệu quả.tìm thông tinVậy thìthử xem, suy nghĩ và phân tích, nếu vấn đề không được giải quyết, vui lòng lặp lại các hành động ở trên.

Nhưng khi một người mới bắt đầu gặp vấn đề, họ sẽ cảm thấy:

Oops~ nó quá khó để lập trình, định lượng, và viết các chiến lược . Sau khi xem nó trong một thời gian dài, tôi vẫn bị sốc! Tôi muốn từ bỏ trước khi bắt đầu! ...

Bắt đầu trên nền tảng FMZ thực sự rất đơn giản. Trước hết, bạn phải giỏi tìm kiếm thông tin. Có rất nhiều thông tin có sẵn trong quảng trường chiến lược, cộng đồng và thư viện của nền tảng FMZ Quant Trading.

img

Điều thứ hai là khả năng thực hành, có thể dễ dàng được kiểm tra bằng cách sử dụng hệ thống kiểm tra lại và các công cụ gỡ lỗi. Điều này không có nghĩa là kiểm tra một chiến lược hoàn chỉnh. Trên thực tế, bạn thậm chí có thể học những điều cơ bản của các chương trình JavaScript trên hệ thống kiểm tra lại FMZ Quant nếu bạn hoàn toàn cơ bản.

Đây là trang web hướng dẫn mà tôi thường học JS:https://www.runoob.com/js/js-loop-for.html, nó không giới hạn ở JS, tất cả các loại kiến thức CNTT có thể được truy vấn và học ở đây. Ví dụ, tôi không biết làm thế nào để sử dụng các biểu thức thông thường của JS, tôi nên làm gì? Tất nhiên, tìm kiếm thông tin đầu tiên, và sau đó cố gắng để làm điều đó ~

Tôi đã thấy một ví dụ về điều này:imgTôi muốn thử nghiệm nó, và tôi có thể sử dụng hệ thống backtesting của nền tảng FMZ để thử nghiệm và học hỏi.

Thiết lập một trao đổi ngẫu nhiên trên hệ thống backtestingimg

Kiểm tra mã sau:

function IsEmail(str) {
    var reg=/^\w+@[a-zA-Z0-9]{2,10}(?:\.[a-z]{2,4}){1,3}$/;
    return reg.test(str);
}

function main() {
    var strEmailAddress1 = "13512345678"
    Log(strEmailAddress1, " Is it an email address? ", " Answer: ", IsEmail(strEmailAddress1))
    
    var strEmailAddress2 = "123456789@qq.com"
    Log(strEmailAddress2, " Is it an email address? ", " Answer: ", IsEmail(strEmailAddress2))
}

img

Nhìn kìa! Ví dụ, tôi muốn học cách viết logic vòng lặp của ngôn ngữ JavaScript, và thử nó:

Loop qua các phần tử của một biến mảng theo thứ tự chúng xuất hiện trong mảng:

function main() {
    var arr = [{coinName: "BTC", price: 10000}, {coinName: "LTC", price: 100}, {coinName: "ETH", price: 2000}, {coinName: "ETC", price: 500}]
    for (var i = 0 ; i < arr.length ; i++) {
        Log(arr[i])
    }
}

img

Bạn có cảm thấy có động lực để học ngay lập tức không? Trên thực tế, trên FMZ, bạn có thể học các nguyên tắc cơ bản của JavaScript trên hệ thống backtesting trong khi xem hướng dẫn JavaScript. Ngữ pháp JavaScript gần như được nắm vững, và bước vào giai đoạn tiếp theo, bạn cần sử dụng giao diện trao đổi để có được kiểm tra dữ liệu. Bạn cũng có thể sử dụngcông cụ gỡ lỗicủa nền tảng FMZ để tiến hành thử nghiệm giao diện thực sự.

Sau đó là suy nghĩ nhiều hơn, rút ra kết luận từ một trường hợp, kiểm chứng thử nghiệm, phân tích so sánh, v.v. Điều này làm cho việc học bắt đầu rất nhanh.


Có liên quan

Thêm nữa