[TOC]

Qual é a maior dificuldade para iniciantes em negociação quantitativa e negociação programática? Em termos gerais, existem vários.
Com o desenvolvimento da tecnologia de IA, soluções para os problemas acima podem ser encontradas até certo ponto. Popular recentementeChat GPTEle pode ser usado como uma ferramenta para aprender, pesquisar e criar negociações quantitativas. Com a nova atualização do editor de estratégia na plataforma FMZ, o Chat GPT também foi conectado, o que melhorou muito a produtividade quantitativa. Vamos explorar isso juntos.Novos recursos do FMZ Strategy Editor!
Embora as funções do Chat GPT já sejam muito poderosas e seu nível de compreensão de questões levantadas por humanos já seja muito alto. Mas a resposta que ele dá ainda éCompletude da descrição do problema、Precisão da descriçãoFatores como a entrada e saída do usuário são muito sensíveis. Se o cenário descrito ou o conteúdo da pergunta for impreciso, o Chat GPT ainda não pode dar uma resposta perfeita. Portanto, ao usá-lo para resolver alguns problemas, você precisa tentar expressá-lo correta e completamente.
Em seguida, usaremos a função Chat GPT do editor de estratégia da plataforma FMZ para resolver um problema de design de código. Faça login na plataforma FMZ e vá para uma página de edição de estratégia.

Use o menu do botão direito em um espaço em branco, selecione a opção ChatGPT e clique para chamarChat GPT,ouUse ⌘K para invocar ChatGPT。
Se eu for iniciante em negociação quantitativa agora, tenho um requisito: “Use a linha K de um minuto para sintetizar dados da linha K de qualquer período”. Como iniciante, minhas habilidades de programação são fracas e eu realmente não consigo escrever um algoritmo desses. No passado, eu só conseguia procurar informações e buscar ajuda de especialistas. Agora, com o Chat GPT, posso perguntar diretamente a ele a resposta. Claro, como mencionado acima, descreva diretamente esse requisito:“Use a linha K de um minuto para sintetizar dados da linha K de qualquer período”. É muito provável que o GPT não lhe dê uma resposta 100% utilizável, e você precisa descrever o problema da forma mais completa possível. Tomando esse requisito como exemplo, continuei ajustando minhas perguntas e perguntei muitas vezes antes de obter a resposta útil que eu queria. Então vamos descrever esse requisito um pouco mais completamente:
在FMZ平台上调用exchange.GetRecords(60)函数可以获取一分钟K线数据,数据结构是:
[{
Time : 毫秒时间戳, // 周期的起始时间
Open : 1000,
High : 1500,
Low : 900,
Close : 1200,
Volume : 1000000
}, ...]
请设计一个算法,使用一分钟K线数据合成任意分钟的K线数据,对于可以整除60分钟的周期,需要从整点的0分开始统计,使用Javascript语言实现,
这个算法单独写成一个函数,测试在function main()函数中测试,使用$.PlotRecords(KLineData, "name")画图。
Depois de chamar o ChatGPT, você pode preencher o conteúdo da pergunta otimizada acima.

O ChatGPT começa a funcionar.

Espere até terminar.

às vezesChat GPTEnrole o código”Símbolo que indica em markdown que o conteúdo incluso é código. Então, apenas excluímos a primeira e a última linha. Porque a pergunta que fiz foi para usar$.PlotRecords(KLineData, “name”)`Desenho, então a estratégia deve referenciar a biblioteca de desenho de linha para desenhar. O desenho é para verificar se os dados da K-line sintetizados pelo código dado pelo Chat GPT estão corretos.
Quanto ao que é a biblioteca de modelos, não entrarei em detalhes aqui. Você pode verificar a documentação da API do FMZ.Endereço da biblioteca de desenho de linha
Chat GPTO código fornecido pode ser backtestado diretamente. Eu configurei o período K-line padrão do sistema de backtesting para 5 minutos para comparar o gráfico K-line desenhado pelos dados K-line calculados pelo algoritmo fornecido pelo Chat GPT.


À primeira vista, o algoritmo fornecido pelo ChatGPT para usar a linha K de 1 minuto para sintetizar a linha K de 5 minutos está correto.
/*
合成任意分钟的K线数据
@param {Array} records - 一分钟K线数据
@param {Number} period - 合成的周期,单位为分钟
@return {Array} - 合成后的K线数据
*/
function composeKLineData(records, period) {
var result = [];
var index = 0;
var open = records[0].Open;
var high = records[0].High;
var low = records[0].Low;
var close = records[0].Close;
var volume = records[0].Volume;
var time = records[0].Time - records[0].Time % (period * 60 * 1000);
for (var i = 1; i < records.length; i++) {
var record = records[i];
if (record.Time < time + period * 60 * 1000) {
high = Math.max(high, record.High);
low = Math.min(low, record.Low);
close = record.Close;
volume += record.Volume;
} else {
result[index] = {
Time: time,
Open: open,
High: high,
Low: low,
Close: close,
Volume: volume
};
index++;
open = record.Open;
high = record.High;
low = record.Low;
close = record.Close;
volume = record.Volume;
time = record.Time - record.Time % (period * 60 * 1000);
}
}
result[index] = {
Time: time,
Open: open,
High: high,
Low: low,
Close: close,
Volume: volume
};
return result;
}
function main() {
var records = exchange.GetRecords(60);
var kLineData = composeKLineData(records, 5); // 合成5分钟K线数据
$.PlotRecords(kLineData, "KLineData");
}
O ChatGPT integrado ao FMZ não só ajudará você a escrever código, mas também a explicar o código. Selecione o código que o ChatGPT acabou de escrever.composeKLineDataFunção, clique com o botão direito para abrir o menu:


O ChatGPT pode até dar sugestões de otimização e código otimizado.

Esta atualização do editor FMZ adiciona o recurso ChatGPT. Ele otimiza e melhora ainda mais a experiência do usuário na escrita de programas online e adiciona muitas funções convenientes.
Clique com o botão direito em um espaço em branco ou quando o código for selecionado para abrir um menu.

Exibe combinações de teclas de atalho para várias funções.

Renomear símbolo, modificar o nome da variável local.


Somente a imagem acima será modificadamainNomes de variáveis em funçõesrecords。
Alterar todas as ocorrências, selecionar um nome de variável ou palavra e editar todos os mesmos conteúdos no texto ao mesmo tempo.


Seleção de formato, formata o código selecionado.
Formatar documento, formatar todos os códigos.

Vá para Definição, pule para a definição. Vá para Referências, pule para referências. Vá para Símbolo…, pule para o nome da variável, nome da função, etc.

Definição de Peek, prévia da definição. Visualize a definição do código selecionado sem sair da linha de código atual. Dê uma olhada nas referências, visualize a referência, visualize as referências à linha de código atual em outras linhas de código sem sair da linha de código atual e avance rapidamente para entender melhor a lógica e a estrutura do código.
