Sumber dimuat naik... memuat...

Fungsi Masuk Strategi

Untuk strategi dalamJavaScript, Python, danC++bahasa, fungsi kemasukan berikut telah ditakrifkan untuk Platform Dagangan Kuantum FMZ.

Nama Fungsi Penerangan
main() Fungsi kemasukan, ia adalah fungsi utama strategi.
onexit() Ia adalah fungsi pembersihan apabila keluar secara normal, masa pelaksanaannya maksimum adalah 5 minit, yang boleh dibiarkan tidak dideklarasikan;menggangguKesalahan akan dilaporkan.onerror()Fungsi ini dicetuskan pertama semasa perdagangan langsung,onexit()fungsi tidak akan dicetuskan lagi.
onerror() Ia adalah fungsi keluar yang tidak normal, masa pelaksanaannya maksimum adalah 5 minit, yang boleh dibiarkan tidak dideklarasikan.PythondanC++tidak menyokong fungsi ini, dan fungsi ini tidak disokong oleh sistem backtesting.
init() Ia adalah fungsi inisialisasi, program strategi akan dipanggil secara automatik apabila ia mula berjalan, yang boleh dibiarkan tidak dinyatakan.

satuxit ((()

onexit(), memproses kerja pembersihan, dengan masa pelaksanaan maksimum 5 minit, yang diwujudkan oleh pengguna.

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

Ujionexit()fungsi:

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

Oleh kerana strategi dalam sistem backtesting biasanya direka sebagai gelung tanpa akhir,onexit()fungsi yang dilaksanakan dalam strategi pelaksanaan tidak boleh dicetuskan dalam sistem backtesting.onexit()Fungsi boleh diaktifkan dengan mengesan tanda akhir sistem backtesting (kecualian EOF).

mulakan

Pengguna melaksanakan fungsi inisialisasiinit(), yang akan secara automatik melaksanakan fungsiinit()pada permulaan strategi untuk menyelesaikan tugas inisialisasi.

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

Kesalahan

Pelaksanaan fungsionerror()akan dicetuskan apabila pengecualian berlaku.PythondanC++.onerror()fungsi boleh mengambilmsgparameter, yang merupakan mesej ralat yang dilaporkan apabila pengecualian dicetuskan.

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++
Sistem Ujian Belakang Rangka Kerja Strategi dan Fungsi API