Pour les débutants du trading quantitatif et du trading programmatique, quelles sont les plus grandes difficultés d'apprentissage?
Avec le développement de la technologie IA, des solutions à ces problèmes peuvent être trouvées dans une certaine mesure.ChatGPTLa plateforme FMZ, avec sa nouvelle mise à niveau pour l'éditeur de stratégie et son intégration avec ChatGPT, améliore considérablement la productivité de la quantification.les nouvelles fonctions de l'éditeur de stratégie FMZensemble!
Bien que les capacités actuelles de ChatGPT soient déjà très puissantes, et qu'il puisse très bien comprendre les questions humaines, les réponses qu'il fournit sont encore très sensibles à des facteurs tels quel'exhaustivité et l'exactitude de la description de la question. Si le scénario décrit ou le contenu de la question n'est pas précis, ChatGPT peut ne pas être en mesure de fournir une réponse parfaite. Par conséquent, lors de son utilisation pour résoudre certains problèmes, il est nécessaire d'essayer de les exprimer correctement et complètement.
Ensuite, nous utiliserons la fonction ChatGPT de l'éditeur de stratégie de la plateforme FMZ pour résoudre un problème de conception de code.
Cliquez avec le bouton droit sur l'espace vide, sélectionnez l'option ChatGPT et cliquez pour appelerChatGPT
, ouUtilisez Ctrl+K pour appeler ChatGPT.
Si je suis un débutant en négociation quantitative, j'ai une exigence:
Utilisez la ligne K d'une minute pour synthétiser toutes les données de la ligne K de la période.
En tant que débutant, mes capacités de programmation sont médiocres, et je ne sais vraiment pas comment écrire un tel algorithme. Dans le passé, je ne pouvais que chercher des informations et demander de l'aide aux experts. Maintenant, avec ChatGPT, je peux lui demander des réponses directement. Bien sûr, comme mentionné ci-dessus, en décrivant l'exigence directement:
Alors, faisons cette description des exigences un peu plus complète:
> 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.
Après avoir appelé ChatGPT, vous pouvez remplir le contenu de la question optimisé mentionné ci-dessus.
ChatGPT commence à fonctionner.
Attends qu'il ait fini d'écrire.
Parfois.ChatGPT
ajouteles symboles pour envelopper le code, ce qui indique que le contenu enveloppé est du code. nous devons donc supprimer la première et la dernière ligne.$.PlotRecords(KLineData, "name")
pour le dessin, la stratégie doit faire référence à une bibliothèque de dessins afin de dessiner.
En ce qui concerne ce qu'est une bibliothèque de modèles, je ne vais pas en débattre ici; vous pouvez consulter la documentation de l'API de FMZ
Le code fourni parChatGPT
J'ai défini la période par défaut de la ligne K du système de backtesting comme 5 minutes, qui est utilisée pour comparer avec les graphiques de ligne K tirés des données de ligne K calculées par l'algorithme Chat GPT
Préliminairement, il semble que l'algorithme donné par ChatGPT pour synthétiser une K-line de 5 minutes à partir d'une K-line de 1 minute est correct.
/*
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
fonction dans le code écrit par ChatGPT, cliquez avec le bouton droit pour afficher le menu:
Même ChatGPT peut fournir des suggestions d'optimisation et du code optimisé.
La mise à jour de l'éditeur FMZ, en plus d'ajouter la fonction ChatGPT, optimise et améliore également l'expérience de programmation en ligne, en ajoutant de nombreuses fonctions pratiques.
Cliquez avec le bouton droit dans l'espace vide ou lors de la sélection du code pour afficher le menu.
Il affiche différentes combinaisons de touches de raccourci.
Renommer le symbole pour modifier le nom de la variable locale.
Il a seulement changé le nom de la variablerecords
dans lemain
fonction de l'image ci-dessus.
Modifier toutes les occurrences, sélectionner un nom de variable, un mot et modifier simultanément le même contenu dans le texte.
Format Sélection, formater le code sélectionné.
Format document, format tout le code.
Allez à la définition: allez à la définition. Allez aux références: allez aux références. Allez à Symbole...: allez aux noms de variables, noms de fonctions, etc.
Peek Definition: Aperçu de la définition, afficher la définition du code sélectionné sans quitter la ligne de code en cours. Peek References: Aperçu des citations, voir les références à la ligne de code actuelle dans d'autres lignes de code sans quitter la ligne de code actuelle, cela peut aller rapidement, afin de mieux comprendre la logique et la structure du code.