전략의 경우JavaScript
, Python
, 그리고C++
다음 입력 기능은 FMZ 양자 거래 플랫폼에 정의되었습니다.
함수 이름 | 설명 |
---|---|
main() |
진입 기능은 전략의 주요 기능입니다. |
onexit() |
정상적으로 종료될 때 정화 기능입니다. 최대 실행 시간은 5분입니다.끊어오류가 보고됩니다.onerror() 이 함수는 실시간 거래 중에 먼저 트리거됩니다.onexit() 이 기능은 다시 작동되지 않습니다. |
onerror() |
그것은 비정상적인 출력 함수입니다. 그것의 최대 실행 시간은 5 분입니다.Python 그리고C++ 이 기능을 지원하지 않습니다. 그리고 이 기능은 백테스팅 시스템에서 지원되지 않습니다. |
init() |
초기화 함수입니다. 실행을 시작할 때 전략 프로그램이 자동으로 호출됩니다. |
onexit()
, 처리 청소 작업, 최대 실행 시간 5 분, 사용자가 실현.
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);
}
}
테스트onexit()
기능:
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");
}
백테스팅 시스템의 전략은 일반적으로 끝없는 루프로 설계되기 때문에onexit()
실행 전략에 구현된 기능이 백테스팅 시스템에서 활성화 될 수 없습니다.onexit()
기능은 백트테스팅 시스템의 최종 표시를 감지하여 작동할 수 있습니다 (EOF 예외).
사용자가 초기화 함수를 구현init()
, 자동으로 기능을 실행합니다init()
초기화 작업을 완료하기 위한 전략의 시작.
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!");
}
직무 수행onerror()
이 함수는 예외가 발생하면 트리거 됩니다. 이 함수는Python
그리고C++
.onerror()
함수는msg
매개 변수, 예외가 트리거될 때 보고되는 오류 메시지.
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++
백테스트 시스템
전략 프레임워크 및 API 기능