O recurso está a ser carregado... Carregamento...

Funções de entrada de estratégia

Para as estratégias deJavaScript, Python, eC++As seguintes funções de entrada foram definidas para a plataforma de negociação quântica FMZ.

Nome da função Descrição
main() A função de entrada é a função principal da estratégia.
onexit() É uma função de limpeza quando se desliga normalmente, o seu tempo máximo de execução é de 5 minutos, que pode ser deixado não declarado; se o timeout ocorrer, uminterromperSe oonerror()A função é acionada primeiro durante a negociação ao vivo, oonexit()A função não será acionada novamente.
onerror() É uma função de saída anormal, seu tempo máximo de execução é de 5 minutos, que pode ser deixado não declarado.PythoneC++não suportam esta função, e a função não é suportada pelo sistema de backtesting.
init() É uma função de inicialização, seu programa de estratégia será chamado automaticamente quando começar a ser executado, o que pode ser deixado não declarado.

- Não, não.

onexit(), processamento de trabalhos de limpeza, com um tempo máximo de execução de 5 minutos, que é realizado pelo utilizador.

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);
    }
}

Teste oonexit()Função:

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

Uma vez que a estratégia no sistema de backtesting é geralmente concebida como um ciclo interminável, oonexit()A função implementada na estratégia de execução não pode ser activada no sistema de backtesting.onexit()A função pode ser activada pela detecção da marca final do sistema de backtesting (exceção EOF).

Iniciação

O usuário implementa a função de inicializaçãoinit(), que executará automaticamente a funçãoinit()no início da estratégia para completar a tarefa de inicializaçã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!");
}

Erro (a)

Execução da funçãoonerror()Esta função não suporta estratégias escritas emPythoneC++. Oonerror()A função pode assumir ummsgParâmetro, que é a mensagem de erro que é comunicada quando a exceção é acionada.

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++
Sistema de ensaio de retrocesso Quadro de estratégia e funções de API