[TOC]
Was ist die größte Schwierigkeit für Anfänger im quantitativen Handel und im programmatischen Handel? Generell gibt es mehrere.
Mit der Entwicklung der KI-Technologie können bis zu einem gewissen Grad Lösungen für die oben genannten Probleme gefunden werden. Kürzlich beliebtChat GPTEs kann als Werkzeug zum Erlernen, Erforschen und Erstellen von quantitativem Handel verwendet werden. Mit dem neuen Upgrade des Strategieeditors auf der FMZ-Plattform wurde auch Chat GPT verbunden, was die quantitative Produktivität erheblich verbessert hat. Lassen Sie es uns gemeinsam erkunden.Neue Features im FMZ Strategie Editor!
Allerdings sind die Funktionen von Chat GPT bereits sehr leistungsstark und sein Verständnis für menschliche Fragen ist bereits sehr hoch. Aber die Antwort, die es gibt, ist immer nochVollständigkeit der Problembeschreibung、Genauigkeit der BeschreibungFaktoren wie die Eingabe und Ausgabe des Benutzers sind sehr empfindlich. Wenn das beschriebene Szenario oder der Frageninhalt ungenau ist, kann Chat GPT immer noch keine perfekte Antwort geben. Daher müssen Sie versuchen, es richtig und vollständig auszudrücken, wenn Sie es zur Lösung einiger Probleme verwenden.
Als Nächstes verwenden wir die Chat-GPT-Funktion des Strategieeditors der FMZ-Plattform, um ein Codedesignproblem zu lösen. Melden Sie sich bei der FMZ-Plattform an und rufen Sie eine Strategiebearbeitungsseite auf.
Klicken Sie mit der rechten Maustaste auf ein leeres Feld, wählen Sie die Option ChatGPT und klicken Sie aufChat GPT
,oderVerwenden Sie ⌘K, um ChatGPT aufzurufen。
Wenn ich jetzt ein Anfänger im quantitativen Handel bin, habe ich eine Anforderung: „Verwenden Sie eine einminütige K-Linie, um K-Liniendaten eines beliebigen Zeitraums zu synthetisieren.“ Als Anfänger sind meine Programmierkenntnisse schwach und ich kann einen solchen Algorithmus wirklich nicht schreiben. Früher konnte ich nur nach Informationen suchen und Experten um Hilfe bitten. Jetzt kann ich mit Chat GPT direkt nach der Antwort fragen. Beschreiben Sie diese Anforderung natürlich, wie oben erwähnt, direkt:„Verwenden Sie eine einminütige K-Linie, um K-Liniendaten eines beliebigen Zeitraums zu synthetisieren“. Es ist sehr wahrscheinlich, dass GPT Ihnen keine 100 % brauchbare Antwort gibt, und Sie müssen das Problem so vollständig wie möglich beschreiben. Am Beispiel dieser Anforderung habe ich meine Fragen immer wieder angepasst und viele Male nachgefragt, bevor ich die gewünschte brauchbare Antwort erhielt. Lassen Sie uns diese Anforderung dann etwas genauer beschreiben:
在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")画图。
Nachdem Sie ChatGPT aufgerufen haben, können Sie oben den optimierten Frageninhalt eingeben.
ChatGPT beginnt zu arbeiten.
Warten Sie, bis es fertig ist.
ManchmalChat GPT
Umschließen des Codes”Symbol, das in Markdown angibt, dass der eingeschlossene Inhalt Code ist. Also löschen wir einfach die erste und die letzte Zeile. Denn die Frage, die ich gestellt habe, war
$.PlotRecords(KLineData, “name”)`Zeichnen, daher muss die Strategie zum Zeichnen auf die Linienzeichnungsbibliothek verweisen. Beim Zeichnen wird überprüft, ob die mit dem von Chat GPT angegebenen Code synthetisierten K-Liniendaten korrekt sind.
Was die Vorlagenbibliothek ist, werde ich hier nicht näher erläutern. Sie können die API-Dokumentation von FMZ einsehen.Adresse der Strichzeichnungsbibliothek
Chat GPT
Der angegebene Code kann direkt einem Backtesting unterzogen werden. Ich habe die Standard-K-Line-Periode des Backtesting-Systems auf 5 Minuten eingestellt, um das K-Line-Diagramm zu vergleichen, das von den K-Line-Daten gezeichnet wird, die vom von Chat GPT bereitgestellten Algorithmus berechnet wurden.
Auf den ersten Blick ist der von ChatGPT bereitgestellte Algorithmus zur Verwendung einer 1-Minuten-K-Linie zur Synthese einer 5-Minuten-K-Linie korrekt.
/*
合成任意分钟的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");
}
Das in FMZ integrierte ChatGPT hilft Ihnen nicht nur beim Schreiben von Code, sondern auch dabei, den Code zu erklären. Wählen Sie den Code aus, den ChatGPT gerade geschrieben hat.composeKLineData
Funktion, Rechtsklick, um das Menü aufzurufen:
ChatGPT kann sogar Optimierungsvorschläge und optimierten Code liefern.
Dieses FMZ-Editor-Update fügt die ChatGPT-Funktion hinzu. Es optimiert und verbessert das Benutzererlebnis beim Online-Programmieren weiter und fügt viele praktische Funktionen hinzu.
Klicken Sie mit der rechten Maustaste in einen leeren Bereich oder wenn der Code ausgewählt ist, um ein Menü einzublenden.
Zeigt Tastenkombinationen für verschiedene Funktionen an.
Symbol umbenennen, den lokalen Variablennamen ändern.
Nur das obige Bild wird geändertmain
Variablennamen in Funktionenrecords
。
Alle Vorkommen ändern, einen Variablennamen oder ein Wort auswählen und alle gleichen Inhalte im Text gleichzeitig bearbeiten.
Formatauswahl, formatiert den ausgewählten Code.
Dokument formatieren, alle Codes formatieren.
Gehen Sie zu „Definition“, um zur Definition zu springen. Gehen Sie zu Referenzen, springen Sie zu Referenzen. Gehe zu Symbol…, springe zum Variablennamen, Funktionsnamen usw.
Peek Definition, Definitionsvorschau. Zeigen Sie die Definition des ausgewählten Codes an, ohne die aktuelle Codezeile zu verlassen. Peek References, Referenzvorschau, zeigen Sie die Verweise auf die aktuelle Codezeile in anderen Codezeilen an, ohne die aktuelle Codezeile zu verlassen, und springen Sie schnell, um die Codelogik und -struktur besser zu verstehen.