Bibliotheken mit Vorlagensind wiederverwendbare Code-Module in der FMZ Quant Trading Platform, einer Kategorie von Strategie-Code.JavaScript
, Python
, C++
, undBlockly
Wenn die Kategorie bei der Erstellung einer Strategie auf Template Class Library gesetzt ist, wird eine Template-Bibliothek in der Strategie-Bibliothek des aktuell angemeldeten Kontos der FMZ Quant Trading Platform erstellt, und es ist nicht möglich, die Kategorie nach der Erstellung auf eine normale Strategie zu ändern.
Die Exportfunktion ist eine Schnittstellenfunktion der Template-Bibliothek und kann durch die Strategie aufgerufen werden, die sich auf die Template-Bibliothek bezieht.
/*
-- After the strategy references the template, call this method directly with $.Test()
-- The main function is not triggered in the strategy, it is only the entry point for template debugging
*/
$.Test = function() {
Log('Test')
}
function main() {
$.Test()
}
def Test():
Log("template call")
# Export the Test function, the main strategy can be called via ext.Test().
ext.Test = Test
// After the strategy references the template, call this method directly with ext::Test()
void Test() {
Log("template call");
}
Die Template-Bibliothek ist für verschiedene Programmiersprachen in einem anderen Format geschrieben. Ein Beispiel für den Export von Funktionen, die in der Template-Bibliothek deklariert und implementiert werden sollen, ist wie folgt:
DieBlockly Visualization
Die Funktionalität der Strategie-Nutzung Bibliothek kann durch Schreiben einer Vorlage-Klasse-Bibliothek in derJavaScript
Sprache, geschrieben mit dem folgenden Schreibformat.
/*blockly
{
"type": "ext_testA",
"message0": "testA|testA",
"template": "function(){return 99;}()",
"order": "ORDER_ATOMIC",
"output": "Number"
},{
"type": "ext_MA",
"message0": "MA 周期 %1| MA Period %1",
"args0": [{
"type": "input_value",
"check": "Number"
}],
"template": "(function(){var r = exchange.GetRecords(); return (!r || r.length < %1) ? false : TA.MA(r, %1); })()",
"order": "ORDER_ATOMIC",
"output": null,
"colour": 85
}
*/
Die Template-Bibliothek kann auch eigene Schnittstellenparameter festlegen, die in Form globaler Variablen im Code der Template-Bibliothek verwendet werden. Zum Beispiel setzen wir die Parameter einer Template-Klassenbibliothek:
Variablename des Parameters im Strategiecode | Name des auf dem Strategiebildschirm angezeigten Parameters | Typ | Standardwert |
---|---|---|---|
Parameter 1 | Parameter 1 | Zahl | 99 |
$.SetParam1 = function(p1) {
param1 = p1
}
$.GetParam1 = function() {
Log("param1:", param1)
return param1
}
def SetParam1(p1):
global param1
param1 = p1
def GetParam1():
Log("param1:", param1)
return param1
ext.SetParam1 = SetParam1
ext.GetParam1 = GetParam1
void SetParam1(float p1) {
param1 = p1;
}
float GetParam1() {
Log("param1:", param1);
return param1;
}
Code der Klassenbibliothek zur Prüfung der Vorlageparam1
Parameter:
function main () {
Log("Call $.GetParam1:", $.GetParam1())
Log("Call $.SetParam1:", "#FF0000")
$.SetParam1(20)
Log("Call $.GetParam1:", $.GetParam1())
}
def main():
Log("Call ext.GetParam1:", ext.GetParam1())
Log("Call ext.SetParam1:", "#FF0000")
ext.SetParam1(20)
Log("Call ext.GetParam1:", ext.GetParam1())
void main() {
Log("Call ext::GetParam1:", ext::GetParam1());
Log("Call ext::SetParam1:", "#FF0000");
ext::SetParam1(20);
Log("Call ext::GetParam1:", ext::GetParam1());
}
Verweisen Sie auf den Strategiekodex der Vorlage-Klassenbibliothek Beispiel oben und verwenden Sie die Exportfunktion der Vorlage-Klassenbibliothek, um den Parameter zu erhaltenparam1
und ändern Sie den Parameterparam1
.
Wenn eine Strategie auf eine Vorlagebibliothek verweist, muss das derzeit eingeloggte FMZ Quant Trading Platform-Konto eine verfügbare Vorlagebibliothek in seiner Strategiebibliothek haben.Strategiebearbeitungsseite, die Strategie retten.
Strategierahmen und API-Funktionen Strategieparameter