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")