Librerías de plantillasson módulos de código reutilizables en la plataforma de negociación de FMZ Quant, una categoría de código de estrategia.JavaScript
, Python
, C++
, yBlockly
Si la categoría está configurada como Biblioteca de clases de plantilla al crear una estrategia, se creará una biblioteca de plantilla en la biblioteca de estrategias de la cuenta actualmente registrada en la plataforma de negociación de FMZ Quant, y no es posible cambiar la categoría a una estrategia normal después de la creación.
La función de exportación es una función de interfaz de la biblioteca de plantillas, y puede ser llamada por la estrategia que hace referencia a la biblioteca de plantillas.
/*
-- 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");
}
La biblioteca de plantillas está escrita en un formato diferente para diferentes lenguajes de programación.
ElBlockly Visualization
enfoque de la funcionalidad de la biblioteca de uso de la estrategia se puede implementar escribiendo una biblioteca de clase de plantilla en elJavaScript
lenguaje, escrito con el siguiente formato de escritura.
/*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
}
*/
La biblioteca de plantillas también puede establecer sus propios parámetros de interfaz, que se utilizan en forma de variables globales en el código de la biblioteca de plantillas. Por ejemplo, fijamos los parámetros de una biblioteca de clases de plantilla:
Nombre de la variable del parámetro en el código de estrategia | Nombre del parámetro que se muestra en la pantalla de estrategia | Tipo de producto | Valor predeterminado |
---|---|---|---|
Parámetro 1 | Parámetro 1 | Número | 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;
}
Código de la biblioteca de clases de plantilla para pruebasparam1
Parámetros:
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());
}
Referencia el código de estrategia de la biblioteca de clases de plantilla ejemplo anterior y utilizar la función de exportación de la biblioteca de clases de plantilla para obtener el parámetroparam1
y modificar el parámetroparam1
.
Cuando una estrategia hace referencia a una biblioteca de plantillas, requiere que la cuenta de la Plataforma de Comercio Quant FMZ actualmente conectada tenga una biblioteca de plantillas disponible en su biblioteca de estrategias.página de edición de estrategias, ahorrar la estrategia.
Marco estratégico y funciones de la API Parámetros de la estrategia