Bibliotecas de modelossão módulos de código reutilizáveis na plataforma de negociação FMZ Quant, uma categoria de código de estratégia.JavaScript
, Python
, C++
, eBlockly
Se a categoria for definida como Biblioteca de Classes de Modelo ao criar uma estratégia, uma biblioteca de modelos será criada na biblioteca de estratégias da conta atualmente conectada à Plataforma de Negociação Quant FMZ, e não é possível alterar a categoria para uma estratégia normal após a criação.
A função de exportação é uma função de interface da biblioteca de modelos, e pode ser chamada pela estratégia que se refere à biblioteca de modelos.
/*
-- 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");
}
A biblioteca de modelos é escrita em um formato diferente para diferentes linguagens de programação. Um exemplo de código para exportar funções a serem declaradas na biblioteca de modelos e implementadas é o seguinte:
OBlockly Visualization
A função da biblioteca de uso de estratégia pode ser implementada escrevendo uma biblioteca de classe modelo noJavaScript
linguagem, escrita utilizando o seguinte formato de escrita.
/*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
}
*/
A biblioteca de modelos também pode definir seus próprios parâmetros de interface, que são usados na forma de variáveis globais no código da biblioteca de modelos. Por exemplo, definimos os parâmetros de uma biblioteca de classes modelo:
Nome da variável do parâmetro no código de estratégia | Nome do parâmetro exibido no ecrã de estratégia | Tipo | Valor padrão |
---|---|---|---|
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 da biblioteca de classes modelo para testeparam1
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());
}
Referir o código de estratégia do exemplo de biblioteca de classe modelo acima e usar a função de exportação da biblioteca de classe modelo para obter o parâmetroparam1
e modificar o parâmetroparam1
.
Quando uma estratégia faz referência a uma biblioteca de modelos, ela requer que a conta atualmente conectada da FMZ Quant Trading Platform tenha uma biblioteca de modelos disponível em sua biblioteca de estratégias.página de edição de estratégiaSalve a estratégia.
Quadro de estratégia e funções de API Parâmetros da estratégia