Sumber daya yang dimuat... Pemuatan...

Fungsi Masuk Strategi

Untuk strategi diJavaScript, Python, danC++bahasa, fungsi entri berikut telah didefinisikan untuk FMZ Quant Trading Platform.

Nama Fungsi Deskripsi
main() Fungsi entri, itu adalah fungsi utama dari strategi.
onexit() Ini adalah fungsi pembersihan ketika keluar secara normal, waktu eksekusi maksimumnya adalah 5 menit, yang dapat dibiarkan tidak dinyatakan; jika timeout terjadi,mengganggukesalahan akan dilaporkan.onerror()fungsi diaktifkan pertama kali selama perdagangan langsung,onexit()fungsi tidak akan dipicu lagi.
onerror() Ini adalah fungsi keluar yang abnormal, waktu eksekusi maksimumnya adalah 5 menit, yang dapat dibiarkan tidak dinyatakan.PythondanC++tidak mendukung fungsi ini, dan fungsi tidak didukung oleh sistem backtesting.
init() Ini adalah fungsi inisialisasi, program strategi akan dipanggil secara otomatis ketika mulai berjalan, yang dapat dibiarkan tidak dinyatakan.

satuxit ((()

onexit(), pengolahan pekerjaan pembersihan, dengan waktu pelaksanaan maksimum 5 menit, yang direalisasikan 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);
    }
}

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

Karena strategi dalam sistem backtesting biasanya dirancang sebagai loop tak berujung,onexit()fungsi yang diimplementasikan dalam strategi pelaksanaan tidak dapat dipicu dalam sistem backtesting.onexit()fungsi dapat diaktifkan dengan mendeteksi tanda akhir dari sistem backtesting (kecualian EOF).

Ini adalah

Pengguna mengimplementasikan fungsi inisialisasiinit(), yang akan secara otomatis menjalankan fungsiinit()Pada awal 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()Fungsi ini tidak mendukung strategi yang ditulis dalamPythondanC++.onerror()fungsi dapat mengambilmsgparameter, yang merupakan pesan kesalahan yang dilaporkan ketika pengecualian dipicu.

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 Backtest Kerangka Strategi dan Fungsi API