संसाधन लोड हो रहा है... लोड करना...

रणनीति प्रविष्टि कार्य

में रणनीतियों के लिएJavaScript, Python, औरC++भाषाओं, निम्नलिखित प्रविष्टि कार्य एफएमजेड क्वांट ट्रेडिंग प्लेटफॉर्म के लिए परिभाषित किए गए हैं।

फ़ंक्शन का नाम विवरण
main() प्रवेश समारोह, यह रणनीति का मुख्य कार्य है।
onexit() यह सामान्य रूप से बाहर निकलने पर एक सफाई समारोह है, इसका अधिकतम निष्पादन समय 5 मिनट है, जिसे अघोषित छोड़ दिया जा सकता है; यदि टाइमआउट होता है, तो एकबाधित करनात्रुटि की सूचना दी जाएगी।onerror()फंक्शन लाइव ट्रेडिंग के दौरान सबसे पहले ट्रिगर किया जाता है,onexit()फ़ंक्शन फिर से ट्रिगर नहीं किया जाएगा.
onerror() यह एक असामान्य निकास फंक्शन है, इसका अधिकतम निष्पादन समय 5 मिनट है, जिसे अघोषित छोड़ दिया जा सकता है।PythonऔरC++इस फ़ंक्शन का समर्थन नहीं करते हैं, और फ़ंक्शन बैकटेस्टिंग सिस्टम द्वारा समर्थित नहीं है।
init() यह एक आरंभिकरण कार्य है, इसका रणनीति कार्यक्रम स्वचालित रूप से बुलाया जाएगा जब यह चलना शुरू होता है, जिसे अघोषित छोड़ दिया जा सकता है।

onexit ((()

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()कार्य backtesting प्रणाली के अंत चिह्न का पता लगाकर ट्रिगर किया जा सकता है (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++
बैकटेस्ट प्रणाली रणनीति ढांचा और एपीआई कार्य