Đối với các chiến lược trongJavaScript
, Python
, vàC++
các ngôn ngữ, các chức năng nhập nhập sau đây đã được xác định cho nền tảng giao dịch lượng tử FMZ.
Tên chức năng | Mô tả |
---|---|
main() |
Chức năng đầu vào, đó là chức năng chính của chiến lược. |
onexit() |
Nó là một chức năng dọn dẹp khi ra khỏi bình thường, thời gian thực hiện tối đa của nó là 5 phút, có thể được để lại không được khai báo; nếu thời gian ra, mộtngắtsẽ được báo cáo.onerror() chức năng được kích hoạt đầu tiên trong giao dịch trực tiếp,onexit() chức năng sẽ không được kích hoạt lại. |
onerror() |
Nó là một chức năng thoát bất thường, thời gian thực thi tối đa của nó là 5 phút, mà có thể được để lại không được tuyên bố.Python vàC++ không hỗ trợ chức năng này, và chức năng không được hỗ trợ bởi hệ thống backtesting. |
init() |
Nó là một chức năng khởi tạo, chương trình chiến lược của nó sẽ được gọi tự động khi nó bắt đầu chạy, có thể được để lại không được tuyên bố. |
onexit()
, xử lý công việc dọn dẹp, với thời gian thực hiện tối đa 5 phút, được thực hiện bởi người dùng.
function main(){
Log("Start running, stop after 5 seconds, and execute onexit function!")
Sleep(1000 * 5)
}
// onexit function implementation
function onexit(){
var beginTime = new Date().getTime()
while(true){
var nowTime = new Date().getTime()
Log("The program stops counting down..The cleaning starts and has passed:", (nowTime - beginTime) / 1000, "Seconds!")
Sleep(1000)
}
}
import time
def main():
Log("Start running, stop after 5 seconds, and execute onexit function!")
Sleep(1000 * 5)
def onexit():
beginTime = time.time() * 1000
while True:
ts = time.time() * 1000
Log("The program stops counting down.The cleaning starts and has passed:", (nowTime - beginTime) / 1000, "Seconds!")
Sleep(1000)
void main() {
Log("Start running, stop after 5 seconds, and execute onexit function!");
Sleep(1000 * 5);
}
void onexit() {
auto beginTime = Unix() * 1000;
while(true) {
auto ts = Unix() * 1000;
Log("The program stops counting down.The cleaning starts and has passed:", (nowTime - beginTime) / 1000, "Seconds!");
Sleep(1000);
}
}
Kiểm traonexit()
chức năng:
function main() {
if (exchange.GetName().startsWith("Futures_")) {
Log("The exchange is futures")
exchange.SetContractType("swap")
} else {
Log("The exchange is spot")
}
if (IsVirtual()) {
try {
onTick()
} catch (e) {
Log("error:", e)
}
} else {
onTick()
}
}
function onTick() {
while (true) {
var ticker = exchange.GetTicker()
LogStatus(_D(), ticker ? ticker.Last : "--")
Sleep(500)
}
}
function onexit() {
Log("Execute the sweep function")
}
def main():
if exchange.GetName().startswith("Futures_"):
Log("The exchange is futures")
else:
Log("The exchange is spot")
if IsVirtual():
try:
onTick()
except Exception as e:
Log(e)
else:
onTick()
def onTick():
while True:
ticker = exchange.GetTicker()
LogStatus(_D(), ticker["Last"] if ticker else "--")
Sleep(500)
def onexit():
Log("Execute the sweep function")
#include <iostream>
#include <exception>
#include <string>
void onTick() {
while (true) {
auto ticker = exchange.GetTicker();
LogStatus(_D(), ticker);
Sleep(500);
}
}
void main() {
std::string prefix = "Futures_";
bool startsWith = exchange.GetName().substr(0, prefix.length()) == prefix;
if (startsWith) {
Log("The exchange is futures");
exchange.SetContractType("swap");
} else {
Log("The exchange is spot");
}
if (IsVirtual()) {
try {
onTick();
} catch (...) {
std::cerr << "Caught unknown exception" << std::endl;
}
} else {
onTick();
}
}
void onexit() {
Log("Execute the sweep function");
}
Vì chiến lược trong hệ thống backtesting thường được thiết kế như một vòng lặp vô tận,onexit()
không thể được kích hoạt trong hệ thống backtesting.onexit()
chức năng có thể được kích hoạt bằng cách phát hiện dấu cuối của hệ thống backtesting (ngoại trừ EOF).
Người dùng thực hiện chức năng khởi tạoinit()
, mà sẽ tự động thực hiện chức nănginit()
ở đầu của chiến lược để hoàn thành nhiệm vụ khởi tạo.
function main(){
Log("The first line of the code executed in the program!", "#FF0000")
Log("Exit!")
}
// Initialization the function
function init(){
Log("Initialization!")
}
def main():
Log("The first line of the code executed in the program!", "#FF0000")
Log("Exit!")
def init():
Log("Initialization!")
void main() {
Log("The first line of the code executed in the program!", "#FF0000");
Log("Exit!");
}
void init() {
Log("Initialization!");
}
Việc thực hiện chức năngonerror()
sẽ được kích hoạt khi một ngoại lệ xảy ra. chức năng này không hỗ trợ các chiến lược được viết trongPython
vàC++
.onerror()
chức năng có thể có mộtmsg
tham số, đó là thông báo lỗi được báo cáo khi ngoại lệ được kích hoạt.
function main() {
var arr = []
Log(arr[6].Close) // A program exception is intentionally raised here.
}
function onerror(msg) {
Log("error:", msg)
}
# not supported by python
// not supported by C++
Hệ thống kiểm tra ngược
Khung chiến lược và chức năng API