Những ngôn ngữ lập trình có sẵn để thực hiện chiến lược của tôi trên FMZ Quant Trading Platform?FMZ Quant Trading Platform hỗ trợ
JavaScript
,TypeScript
,Python
,C++
,PINE
,My Language
,Blockly
hình dung để viết và thiết kế các chiến lược.
Nó hỗ trợ ngôn ngữ JavaScript và tích hợp các thư viện JavaScript sau:
JavaScript
chiến lược ngôn ngữ, khi một lỗi ngoại lệ chương trình hoặc lỗi kinh doanh giao diện xảy ra, nhật ký lỗi sẽ hiển thị số dòng cụ thể nơi lỗi xảy ra trong mã chiến lược, thuận tiện cho việc gỡ lỗi chiến lược và khắc phục sự cố lỗi.Nó hỗ trợTypeScript
ngôn ngữ, vẫn đặt nó vàoJavaScript
chiến lược khi chúng ta tạo ra các chiến lược, sau đó chúng ta viết// @ts-check
ở đầu mã chiến lược hoặc nhấp vào nútTypeScript
ở góc trên bên phải của khu vực chỉnh sửa chiến lược để chuyển sangTypeScript
Nền tảng sẽ nhận ra mã nhưTypeScript
tự động và cung cấp cho bạn hỗ trợ biên soạn và kiểm tra kiểu tương ứng cho:
Thiết lập trình diễn Python được sử dụng bởi chương trình chiến lược Python
Các chiến lược được viết bằng Python, khi backtesting hoặc giao dịch trực tiếp, nếu môi trường hệ thống docker có cả Python2 và Python3 được cài đặt, bạn có thể đặt phiên bản Python được khởi chạy tại thời gian chạy trên dòng đầu tiên của chiến lược, chẳng hạn như#!python3
và#!python2
Và bạn cũng có thể chỉ định một đường dẫn tuyệt đối, chẳng hạn như:#!/usr/bin/python3
.
Bảo mật chiến lược dựa trên Python
Khi các chiến lược giao dịch được phát triển trên nền tảng giao dịch FMZ Quant, nội dung chiến lược chỉ hiển thị cho chủ tài khoản FMZ. Và trên nền tảng giao dịch FMZ Quant, bạn có thể đạt được bản địa hóa hoàn toàn mã chiến lược. Ví dụ, một logic chiến lược có thể được đóng gói thành mộtPythongói, được tải trong mã chiến lược, để nội dung chiến lược nội dung có thể được thực hiện.
An ninh của mã Python:
Vì Python là một ngôn ngữ mã nguồn mở cực kỳ dễ giải mã, nếu chiến lược không phải để sử dụng cá nhân mà để thuê, bạn có thể chạy chiến lược trên docker được triển khai của riêng bạn và thuê nó dưới dạng tài khoản phụ hoặc quản lý docker đầy đủ nếu bạn lo lắng về rò rỉ chiến lược.
Mã hóa mã chiến lược Python:
Theo mặc định, mã chiến lược Python không được mã hóa khi sử dụng bởi tác giả và được mã hóa khi cho thuê cho người khác. Bằng cách chỉnh sửa mã sau đây ở đầu chiến lược Python, bạn có thể chỉ định xem có nên mã hóa mã chiến lược cho sử dụng cá nhân hay cho thuê. Các phiên bản Python hỗ trợ mã hóa mã chiến lược là như sau: Python 2.7, Python 3.5 và Python 3.6.
Khi tác giả chiến lược tự chạy nó hoặc sử dụng nó cho người khác thông qua mã đăng ký, mã chiến lược được mã hóa:
Xác định#!python
như phiên bản của trình diễn Python, và sau đó sử dụng,
để giữ riêng biệt; nhập lệnh mã hóaencrypt
Nếu bạn không chỉ định phiên bản của Python, bạn có thể thêm#!,encrypt
directly.
#!python,encrypt
Hoặc
#!encrypt
Nó sẽ không mã hóa các mã chiến lược khi nhà viết chiến lược chạy cho riêng mình và chia sẻ với những người khác thông qua mã đăng ký:
#!python,not encrypted
Hoặc
#!not encrypted
Sử dụng mãos.getenv('__FMZ_ENV__')
để xác định xem mã mã hóa có hợp lệ hay không; trả lại chuỗi"encrypt"
Nó chỉ có giá trị trong giao dịch trực tiếp, và backtest sẽ không mã hóaPython
mã chiến lược.
#!encrypt
def main():
ret = os.getenv('__FMZ_ENV__')
# If the print variable ret is the string "encrypt" or ret == "encrypt" is true, that means the encryption is valid.
Log(ret, ret == "encrypt")
Nền tảng của chúng tôi hỗ trợ ngôn ngữ lập trình C ++ vàC++ 11
Các chiến lược trong C++ được biên dịch trước và sau đó được thực thi. Các chiến lược trong C++ trong hệ thống backtesting được chạy trên máy chủ backtesting C++ của hệ thống backtesting; Các chiến lược trong C++ trong môi trường bot được chạy dựa trên docker sau khi chúng được biên dịch.
Sử dụng ngôn ngữ lập trình C++ vàC++ 11
Sử dụng các tính năng hiện đại của C ++, bạn có thể xây dựng các thuật toán giao dịch linh hoạt và có thể mở rộng cho giao dịch tự động.
Các thư viện C ++ sau đây được tích hợp:
Nền tảng hỗ trợ viết và thiết kế chiến lược trong MyLanguage, tương thích với hầu hết các ngữ pháp, lệnh và chức năng của Wenhua MyLanguage. MyLanguage khuyến khích lập trình khối xây dựng, phá vỡ các thuật toán phức tạp thành các chức năng. Nó hỗ trợ các ứng dụng logic tài chính phức tạp thông qua ngữ pháp ngắn gọn, cấu trúc dữ liệu chuyên môn và thư viện chức năng tài chính mạnh mẽ. Xây dựng các ứng dụng theo cách mô-đun để cải thiện hiệu quả và khả năng duy trì.
Ví dụ về chiến lược MyLanguage: Hệ thống dựa trên kênh Bollinger chuyển dịch
M := 12; // Parameter range 1, 20
N := 3; // Parameter range 1, 10
SDEV := 2; // Parameter range 1, 10
P := 16; // Parameter range 1, 20
//The strategy is a trend-following trading strategy for larger periods, such as daily.
//This model is only used as a case study for model development, and entering the market accordingly will be at your own risk.
////////////////////////////////////////////////////////
//Panning BOLL Channel Calculation
MID:=MA(C,N);//Calculate the middle track
TMP:=STD(C,M)*SDEV;//Calculate the standard deviation
DISPTOP:=REF(MID,P)+TMP;//Translate BOLL channel upper track
DISPBOTTOM:=REF(MID,P)-TMP;//Translate BOLL channel down track
//System admission
H>=DISPTOP,BPK;
L<=DISPBOTTOM,SPK;
AUTOFILTER;
Nền tảng hỗ trợ và tương thích với các kịch bản bằng ngôn ngữ PINE củaTrading View
. Ngôn ngữ PINE là một ngôn ngữ lập trình thiết kế chiến lược nhẹ nhưng mạnh mẽ để tạo ra các chỉ số và chiến lược giao dịch trực tiếp đã được kiểm tra, với một diễn đàn phát triển mạnh đã tạo ra hơn 100.000 kịch bản PINE.
Người dùng có thể dễ dàng truy cập và áp dụng một loạt các phân tích kỹ thuật và chiến lược giao dịch; người dùng có thể nhanh chóng thực hiện ý tưởng giao dịch của họ với sự giúp đỡ của các kịch bản cộng đồng, loại bỏ sự cần thiết phải viết mã từ đầu và do đó giảm đáng kể thời gian phát triển; nó giúp cả thương nhân mới và có kinh nghiệm để tìm hiểu và hiểu các chỉ số kỹ thuật, chiến lược và khái niệm lập trình khác nhau.
Ví dụ về chiến lược ngôn ngữ PINE: Chiến lược siêu xu hướng
strategy("supertrend", overlay=true)
[supertrend, direction] = ta.supertrend(input(5, "factor"), input.int(10, "atrPeriod"))
plot(direction < 0 ? supertrend : na, "Up direction", color = color.green, style=plot.style_linebr)
plot(direction > 0 ? supertrend : na, "Down direction", color = color.red, style=plot.style_linebr)
if direction < 0
if supertrend > supertrend[2]
strategy.entry("entry long", strategy.long)
else if strategy.position_size < 0
strategy.close_all()
else if direction > 0
if supertrend < supertrend[3]
strategy.entry("entry short", strategy.short)
else if strategy.position_size > 0
strategy.close_all()
Nền tảng của chúng tôi hỗ trợ cách tiếp cận trực quan Blockly cho lập trình. Với trình soạn Blockly, người dùng có thể thể hiện các khái niệm mã bằng cách ghép lại các khối đồ họa (tương tự như các khối xây dựng), chẳng hạn như biến, biểu thức logic, vòng lặp, vv. Bằng cách này, quá trình lập trình không còn cần phải chú ý quá nhiều đến các chi tiết ngữ pháp tẻ nhạt, và có thể trực tiếp tuân theo các nguyên tắc lập trình. Bằng cách sắp xếp và kết hợp các khối đồ họa, người dùng có thể dễ dàng hiểu logic lập trình và thực hiện các ý tưởng sáng tạo. Lý tưởng để phát triển sự quan tâm đến thiết kế chiến lược để nhanh chóng bắt đầu với giao dịch định lượng, lập trình.