리소스 로딩... 로딩...

전략 입력 기능

전략의 경우JavaScript, Python, 그리고C++다음 입력 기능은 FMZ 양자 거래 플랫폼에 정의되었습니다.

함수 이름 설명
main() 진입 기능은 전략의 주요 기능입니다.
onexit() 정상적으로 종료될 때 정화 기능입니다. 최대 실행 시간은 5분입니다.끊어오류가 보고됩니다.onerror()이 함수는 실시간 거래 중에 먼저 트리거됩니다.onexit()이 기능은 다시 작동되지 않습니다.
onerror() 그것은 비정상적인 출력 함수입니다. 그것의 최대 실행 시간은 5 분입니다.Python그리고C++이 기능을 지원하지 않습니다. 그리고 이 기능은 백테스팅 시스템에서 지원되지 않습니다.
init() 초기화 함수입니다. 실행을 시작할 때 전략 프로그램이 자동으로 호출됩니다.

1번 출력 (()

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(), 자동으로 기능을 실행합니다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 기능