Mô-đun trực quan để xây dựng chiến lược giao dịch - Lần đầu tiên quen biết

Tác giả:Lydia., Tạo: 2022-12-12 16:50:29, Cập nhật: 2023-09-20 09:44:29

img

Mô-đun trực quan để xây dựng chiến lược giao dịch - Lần đầu tiên quen biết

Lập trình trực quan luôn là một mục tiêu tham vọng của các nhà phát triển phần mềm, ngay cả trong lĩnh vực giao dịch định lượng. Bởi vì phương pháp "những gì bạn thấy là những gì bạn nhận được" trong hình ảnh hóa làm giảm ngưỡng kỹ thuật của việc phát triển lập trình rất nhiều. Người dùng không còn phải đối phó với một đống mã nhàm chán, họ chỉ sử dụng trí tưởng tượng và suy nghĩ hợp lý để tập trung vào chính doanh nghiệp. Bạn có thể thực hiện bất cứ chương trình nào bạn muốn.

Hãy cùng nhau tham gia vào lĩnh vực lập trình hình ảnh của chiến lược giao dịch định lượng!

Chương trình hình ảnh của FMZ Quant ban đầu

Sau khi đăng nhập vàohttps://www.fmz.com, đăng ký tài khoản của bạn (nếu bạn đã đăng ký, đăng nhập trực tiếp) và nhấp vào: Bảng điều khiển -> Chiến lược -> Thêm chiến lược.

img

Chúng ta có thể thấy một chiến lược hình dung ban đầu. Nó chỉ được sử dụng để xuất thông tin tài sản tài khoản của sàn giao dịch được cấu hình mặc định (đối tượng giao dịch đầu tiên được thêm vào backtest hoặc robot). (Xem hình bên dưới)

img

Trước khi chúng ta bắt đầu học cách sử dụng hình ảnh, chúng ta có thể hiểu một số khái niệm thiết kế của hình ảnh.

  1. Xích nối Nếu bạn nhìn cẩn thận, bạn có thể thấy rằng các mô-đun có tenon (côncave) và mortise (đôn), tức là các mô-đun có thể kết nối được kết nối . Nếu hai mô-đun đại diện cho các mã chức năng có thể được kết nối, sau đó các tenons và mortises của hai mô-đun sẽ được thu hút với nhau khi bạn đưa chúng gần nhau.

img

  1. Thiết lập và điều chỉnh mô-đun Một số mô-đun có một số khu vực điều chỉnh đặc biệt, ví dụ:

img

Bạn có thể kéo mô-đun Item ở bên trái đến mô-đun Add, để bạn có thể thêm vị trí tenon (đôn), do đó thêm vị trí để ghép văn bản. Bằng cách này, nhấp vào bánh xe để điều chỉnh và thiết lập mô-đun.

  1. Các thông số đầu vào mặc định của mô-đun Một số mô-đun cần nhập một số tham số, có thể là các giá trị số hoặc chuỗi. Nếu bạn không thêm các biến như các tham số đầu vào của mô-đun, mô-đun sẽ thực hiện theo các tham số đầu vào mặc định.

img

Các mô-đun tính toán gốc vuông như thế này đầu ra kết quả tính toán của mô-đun này.

img

Như bạn có thể thấy, nếu vị trí tham số đầu vào mặc định, giá trị mặc định 9 sẽ được sử dụng như là tham số đầu vào để tính căn vuông của 9.

img

Tất nhiên, nếu bạn muốn sử dụng mô-đun biến như là tham số đầu vào, bạn có thể ghép mô-đun biến vào vị trí tenon trực tiếp.

img

  1. Hoạt động Mô-đun có thể được nhấp và kéo bằng nút chuột trái. Các mô-đun có thể được sao chép bằng ctrl + c và dán bằng ctrl + v, cũng thuận tiện như sao chép và dán mã hoặc văn bản. Khu vực hoạt động có thể được quy mô bằng bánh xe chuột, và tất cả các mô-đun sẽ được quy mô lớn hơn hoặc nhỏ hơn. Nhấp và kéo vị trí trống trong khu vực hoạt động để di chuyển khu vực hoạt động. Thùng rác ở bên phải ghi lại các mô-đun mới xóa. Điều quan trọng nhất là sau khi ghép chiến lược mô-đun, đừng quên nhấp vào Save.

Giới thiệu về mô-đun công cụ trực quan hóa

Bạn có thể thấy rằng có nhiều phân loại mô-đun ở phía bên trái của khu vực chỉnh sửa trực quan, và có nhiều mô-đun trực quan có sẵn trong mỗi dự án phân loại.

Có 11 loại.

img

Mô-đun sử dụng:

img img img

  1. Thông tin đầu ra: Mô-đun này thường được sử dụng cùng với mô-đun của lớp văn bản, như được hiển thị dưới đây:

img

Bạn có thể nhập một chuỗi trong mô-đun văn bản, để khi bạn chạy mô-đun thông tin đầu ra, nội dung chuỗi trong mô-đun văn bản sẽ được in.

img

Kiểm tra hậu quả:

img img

Giống như mã ngôn ngữ JavaScript:

function main(){
    Log("Hello, Blockly!")
}
  1. WeChat push: Mô-đun này trông giống như output information, khác với mô-đun đẩy thông tin đến WeChat liên kết với tài khoản hiện tại cùng một lúc.

img

Giống như mã ngôn ngữ JavaScript:

function main () {
Log("WeChat Push!@")
}
  1. Throw exception Việc ném mô-đun ngoại lệ làm cho chương trình phát hành lỗi, và sau đó chương trình ngừng thực thi (mà không viết mã xử lý ngoại lệ).

img

Tương tự như vậy, trong chiến lược JavaScript, hàm chính thực hiện hàm throw string to output trực tiếp.

function main () {
    throw "The first sentence throws an exception to stop the program!"
}

Kết quả kiểm tra hậu quả:

img img

Nói chung, nó được sử dụng nhiều hơn khi gỡ lỗi. Ví dụ, nếu bạn muốn chương trình dừng lại trong một số điều kiện nhất định và in một số dữ liệu vào thời điểm đó để quan sát. Hoặc bạn có thể đặt một mô-đun ngoại lệ trong luồng mã nơi có thể xảy ra vấn đề, để chương trình báo cáo lỗi, và tìm một số lỗi.

  1. Ngủ đi. Mô-đun ngủ

img

Như trong chiến lược JavaScript:

function main () {
    Sleep(1000 * 5)
}

Kiểm tra mô-đun ngủ:

img

Kết quả kiểm tra hậu quả:

img

  1. Bức in trả lại

img

Mô-đun này, giống như chức năng API LogProfit trên FMZ Quant Trading Platform, in nhật ký trả về và vẽ đường cong trả về theo các thông số đầu vào tự động.

Ví dụ:imgViệc thực hiện backtesting được hiển thị trong hình dưới đây:

img

Mã chiến lược JavaScript tương ứng là như sau:

function main () {
    LogProfit(1)
    Sleep(1000 * 5)
    LogProfit(2)
    Sleep(1000 * 5)
    LogProfit(3)
    Sleep(1000 * 5)
    LogProfit(2)
    Sleep(1000 * 5)
    LogProfit(5)
}

Nó có thể được ghép ở bất kỳ vị trí nào mà bạn muốn xuất thông tin trả về.

  1. ChuỗiimgLoop module có thể bọc một loạt các kết hợp module được ghép lại, cho phép các kết hợp module thực hiện vòng lặp.

Kiểm tra:imgKết quả kiểm tra hậu quả:

img

Chúng ta có thể thấy rằng sự kết hợp mô-đun bao gồm print returnssleep sẽ được thực hiện liên tục sau khi mô-đun vòng lặp được bọc.

  1. Thực hiện vòng lặp mỗi N giâyimgViệc sử dụng của mô-đun này về cơ bản giống như mô-đun vòng lặp.img

  2. Xử lý chính xácimgMô-đun này có thể được sử dụng khi mô-đun biến hoặc giá trị số cần kiểm soát độ chính xác. Giá trị số của phần tham số đầu vào sẽ được xuất ra như giá trị số của vị trí thập phân được chỉ định theo cài đặt.

Ví dụ, xử lý chính xác được thực hiện trên giá trị 3.1415926535897.

img

Hiển thị kiểm tra ngược:

img

  1. Xóa sổ đăng kýimg

Nó được sử dụng để xóa nhật ký. Một số nhật ký có thể được giữ lại theo các thông số đầu vào. Như trong tài liệu API:

LogReset()
  1. Xóa nhật ký trả vềimg

Nó được sử dụng để xóa nhật ký trả về. Một số nhật ký có thể được giữ lại theo các thông số đầu vào. Như trong tài liệu API:

LogProfitReset()

Sau đây là một số mô-đun công cụ được sử dụng thường xuyên

  1. Mô-đun chức năng để có được một thuộc tính nhất định của thị trườngimgMô-đun công cụ này cần được sử dụng cùng với mô-đun báo giá trong Typ Mô-đun Giao dịch, như được hiển thị trong hình:imgSử dụng mô-đun thông tin đầu ra để đầu ra giá giao dịch mới nhất của thị trường ticker mới nhất:imgHiển thị kiểm tra ngược:img

Giống như mã chiến lược JavaScript:

function main () {
    Log(exchange.GetTicker().Last)
}
  1. Mô-đun lấy thuộc tính của một thanh dữ liệu đường KimgMô-đun này cũng cần phải được sử dụng cùng với mô-đun thu thập dữ liệu đường K trong Loại mô-đun giao dịch.

Đầu tiên, chúng ta tạo ra một module biến có tên là K-line.imgSau đó chúng ta lấy dữ liệu đường K, sử dụng mô-đun dữ liệu đường K để lấy nó, và gán giá trị cho mô-đun biến: K-line.imgSau đó, chúng ta sử dụng mô-đun chiều dài danh sách trong List Module Type để lấy chiều dài của mô-đun biến K-line, được sử dụng để chỉ định thanh nào trên K-line để lấy dữ liệu.imgKết hợp chúng với nhau, như trong hình:img

Mẫu thời gian của thanh K cuối cùng được in khi chạy backtest.img

  1. Mô-đun lấy dữ liệu của đơn đặt hàng trong sổ đơn đặt hàngimgNó cũng cần được sử dụng cùng với Get Depth Data module trong Transaction Module Type.imgChỉ số được thiết lập là 0 và lệnh bán được thiết lập để lấy thông tin của một lệnh bán.

img

Giống như mã chiến lược JavaScript:

function main () {
    Log(exchange.GetDepth().Asks[0])
}
  1. Mô-đun để có được một thuộc tính trong thông tin tài sảnimgMô-đun này cần được sử dụng cùng với mô-đun thu thập thông tin tài sản.imgVí dụ: in tiền tệ có sẵn của tài khoản vãng laiimgHiển thị kiểm tra ngược:img

Giống như mã chiến lược JavaScript:

function main () {
    Log(exchange.GetAccount().Stocks)
}
  1. Mô-đun để lấy thuộc tính trong dữ liệu thứ tựimgMô-đun này được sử dụng để lấy giá trị của một thuộc tính trong dữ liệu đơn đặt hàng, chẳng hạn như giá hoặc số lượng bán một trong sổ đơn đặt hàng (ví dụ số 13).img

Kết quả kiểm tra hậu quả:img

Giống như mã chiến lược JavaScript:

function main () {
    Log(exchange.GetDepth().Asks[0].Price)
}

Nó cũng có thể được sử dụng để lấy một thuộc tính trong thông tin đơn đặt hàng được trả về bởi Query Order Details Module (được giải thích trong chương nâng cao).

  1. Mô-đun để lấy các thuộc tính của vị trí trong thông tin vị tríimgTương tự, nó nên được sử dụng cùng với Get Futures Position Module. Lưu ý rằng dữ liệu vị trí được trả về bởi Get Futures Position Module là một mảng (danh sách) chứa các vị trí trong các hợp đồng và hướng khác nhau. Do đó, chỉ số nên được chỉ định khi sử dụng.

Sau khi học được rất nhiều, hãy kết hợp một hoạt động bảo hiểm, nghĩa là bảo hiểm cả hợp đồng ngắn hạn và tương lai.

Chúng tôi làm cho một rủi ro rủi ro arbitrage tích cực, đó là, mở một hợp đồng vị trí ngắn cho hợp đồng tương lai, và mở một hợp đồng vị trí dài cho hợp đồng gần đây.

img

Kết quả kiểm tra hậu quả:

img

Ví dụ về các chiến lược trực quan hóa:

https://www.fmz.com/strategy/121404 https://www.fmz.com/strategy/129895 https://www.fmz.com/strategy/123904 https://www.fmz.com/strategy/122318Để biết thêm các chiến lược, vui lòng tham khảo:https://www.fmz.com/square

Các bài viết khác trong loạt bài này

- Mô-đun trực quan hóa để xây dựng chiến lược giao dịchhttps://www.fmz.com/digest-topic/9509) - Mô-đun hiển thị để xây dựng chiến lược giao dịch - Hiểu cao hơn (https://www.fmz.com/bbs-topic/9815)

Việc lập trình nhàm chán có thể dễ dàng được hoàn thành bằng các khối xây dựng.


Có liên quan

Thêm nữa