Para os iniciantes em negociação quantitativa e programática, quais são as maiores dificuldades de aprendizagem?
Com o desenvolvimento da tecnologia de IA, podem ser encontradas soluções para estes problemas até certo ponto.ChatGPTA plataforma FMZ é uma ferramenta de aprendizagem, pesquisa e criação quantitativa. Com a nova atualização para o editor de estratégia e integração com o ChatGPT, melhora a produtividade da quantificação.As novas funções do editor de estratégia FMZJuntos!
Embora as capacidades atuais do ChatGPT já sejam muito poderosas, e possa compreender muito bem as perguntas humanas, as respostas que fornece ainda são altamente sensíveis a fatores comoa exatidão e a exatidão da descrição da pergunta. Se o cenário descrito ou o conteúdo da pergunta não for preciso, o ChatGPT pode não ser capaz de fornecer uma resposta perfeita. Portanto, ao usá-lo para resolver alguns problemas, é necessário tentar expressá-los corretamente e completamente.
Em seguida, usaremos a função ChatGPT do editor de estratégia da plataforma FMZ para resolver um problema de design de código.
Clique com o botão direito no espaço em branco, selecione a opção ChatGPT e clique para chamarChatGPT
, ouUse Ctrl+K para chamar o ChatGPT.
Se eu sou um iniciante de negociação quantitativa agora, eu tenho um requisito:
Use a linha K de um minuto para sintetizar qualquer data da linha K de período.
Como iniciante, minha habilidade de programação é pobre, e eu realmente não sei como escrever um algoritmo assim. No passado, eu só podia procurar informações e pedir ajuda a especialistas. Agora, com o ChatGPT, posso pedir respostas diretamente.Usar dados de linha K de um minuto para sintetizar quaisquer dados de linha K de período
Então vamos tornar esta descrição de requisitos um pouco mais completa:
> On the FMZ platform, calling the exchange.GetRecords(60) function can obtain one-minute K-line data, and the data structure is: [{
> Time : Millisecond timestamp, // Start time of the period
> Open : 1000,
> High : 1500,
> Low : 900,
> Close : 1200,
> Volume : 1000000
> }, ...]
> Please design an algorithm that uses one-minute K-line data to synthesize any minute's K-line data. For periods that can be divided by 60 minutes, start counting from the whole point of 0 minutes. Implement it in Javascript language, write this algorithm as a separate function, test it in the function main() and use $.PlotRecords(KLineData, "name") for drawing.
Depois de chamar o ChatGPT, você pode preencher o conteúdo da pergunta otimizada mencionada acima.
ChatGPT começa a funcionar.
Espera que termine de escrever.
Às vezes...ChatGPT
adicionaEntão nós só precisamos remover a primeira e a última linha. já que eu pedi para usar$.PlotRecords(KLineData, "name")
Para desenhar, a estratégia precisa fazer referência a uma biblioteca de desenhos para desenhar.
Em relação ao que é uma biblioteca de modelos, não vou elaborar aqui; você pode consultar a documentação da API do FMZ
O código fornecido porChatGPT
Eu defino o período de linha K padrão do sistema de backtesting como 5 minutos, que é usado para comparação com gráficos de linha K extraídos de dados de linha K calculados pelo algoritmo Chat GPT
Preliminarmente, parece que o algoritmo dado pelo ChatGPT para sintetizar K-line de 5 minutos de K-line de 1 minuto é correto.
/*
Synthesize arbitrary minute K-line data
@param {Array} records - One-minute K-line data
@param {Number} period - Synthetic period, unit in minutes
@return {Array} - Synthesized K-line data
*/
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); // Synthesize 5-minute K-line data
$.PlotRecords(kLineData, "KLineData");
}
FMZcomposeKLineData
função no código apenas escrito por ChatGPT, clique com o botão direito para mostrar o menu:
Mesmo o ChatGPT pode fornecer sugestões de otimização e código otimizado.
A atualização do editor FMZ, além de adicionar a função ChatGPT, também otimiza e melhora a experiência de programação online, adicionando muitas funções convenientes.
Clique com o botão direito no espaço em branco ou ao selecionar código para mostrar o menu.
Mostra várias combinações de teclas de atalho.
Renomear símbolo para modificar o nome da variável local.
Só mudou o nome da variável.records
emmain
função da imagem acima.
Altere Todas as ocorrências, selecione um nome de variável, palavra e edite todo o mesmo conteúdo no texto simultaneamente.
Formatar Seleção, formatar o código selecionado.
Formatar documento, formatar todo o código.
Vá para Definição: vá para Definição. Ir para Referências: Ir para Referências. Ir para Symbol...: Ir para nomes de variáveis, nomes de funções, etc.
Peek Definition: Definition preview, ver a definição do código selecionado sem sair da linha atual de código. Peek References: Preview de citação, ver as referências à linha de código atual em outras linhas de código sem sair da linha de código atual, pode ir rapidamente, a fim de entender melhor a lógica e a estrutura do código.