[TOC]
定量取引とプログラム取引の初心者にとって最大の難しさは何ですか?一般的に言えば、いくつかあります。
AI技術の発展により、上記の問題に対する解決策はある程度見つかるでしょう。最近人気Chat GPT定量的な取引を学習、調査、作成するためのツールとして使用できます。 FMZプラットフォームの戦略エディターの新しいアップグレードにより、Chat GPTも接続され、定量的な生産性が大幅に向上しました。一緒に探索してみましょう。FMZ戦略エディターの新機能!
Chat GPT の機能はすでに非常に強力であり、人間が提起する質問に対する理解レベルもすでに非常に高くなっています。しかし、その答えは依然として問題の説明の完全性、説明の正確さユーザーの入力や出力などの要素は非常に敏感です。記述されたシナリオや質問の内容が不正確な場合、Chat GPT は依然として完璧な回答を出すことができません。したがって、何らかの問題を解決するためにそれを使用する場合は、それを正確かつ完全に表現するように努める必要があります。
次に、FMZ プラットフォーム戦略エディターのチャット GPT 機能を使用して、コード設計の問題を解決します。FMZ プラットフォームにログインし、戦略編集ページに移動します。
空白スペースで右クリックメニューを使用して、ChatGPTオプションを選択し、クリックして呼び出します。Chat GPT
、または⌘Kを使用してChatGPTを起動します。
私が現在定量取引の初心者である場合、次のような要件があります。「1 分間の K ラインを使用して、任意の期間の K ライン データを合成する」。初心者なのでプログラミングスキルが弱く、このようなアルゴリズムの書き方が全く分かりません。以前は情報を探したり専門家に助けを求めたりすることしかできませんでした。チャットGPTを使えば、直接質問することができます。答え。もちろん、前述のように、この要件を直接説明します。「1分間のKラインを使用して任意の期間のKラインデータを合成する」。 GPT は 100% 使用可能な回答を提供しない可能性が高いため、問題を可能な限り完全に説明する必要があります。この要件を例にとると、私は質問を調整し続け、必要な有用な回答が得られるまで何度も質問しました。それでは、この要件をもう少し詳しく説明しましょう。
在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")画图。
ChatGPTを呼び出した後、上記の最適化された質問内容を入力できます。
ChatGPTが動作を開始します。
終わるまでお待ちください。
時々Chat GPT
コードをラップする”マークダウン内で囲まれたコンテンツがコードであることを示すシンボル。したがって、最初の行と最後の行を削除するだけです。私が質問したのは
$.PlotRecords(KLineData, “name”)`描画なので、戦略は線描画ライブラリを参照して絵を描画する必要があります。描画は、Chat GPT によって与えられたコードによって合成された K 線データが正しいかどうかを確認することです。
テンプレートライブラリが何であるかについては、ここでは詳しく説明しません。FMZ の API ドキュメントを確認してください。線画ライブラリアドレス
Chat GPT
提供されたコードは直接バックテストできます。Chat GPT によって提供されたアルゴリズムによって計算された K ライン データによって描画された K ライン チャートを比較するために、バックテスト システムのデフォルトの K ライン期間を 5 分に設定しました。
一見すると、1 分間の K ラインを使用して 5 分間の K ラインを合成するという ChatGPT によって示されたアルゴリズムは正しいです。
/*
合成任意分钟的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");
}
FMZ に統合された ChatGPT は、コードの作成だけでなく、コードの説明にも役立ちます。 ChatGPT が書き込んだコードを選択します。composeKLineData
機能、右クリックするとメニューがポップアップします:
ChatGPT は最適化の提案や最適化されたコードも提供できます。
この FMZ エディターのアップデートでは、ChatGPT 機能が追加されます。オンライン プログラム作成のユーザー エクスペリエンスをさらに最適化および改善し、多くの便利な機能を追加します。
空白スペースまたはコードが選択されているときに右クリックすると、メニューがポップアップ表示されます。
さまざまな機能のショートカット キーの組み合わせを表示します。
シンボルの名前を変更し、ローカル変数名を変更します。
上記の画像のみ変更されますmain
関数内の変数名records
。
すべての出現箇所を変更し、変数名または単語を選択して、テキスト内の同じ内容をすべて同時に編集します。
選択内容をフォーマットし、選択したコードをフォーマットします。
ドキュメントをフォーマットし、すべてのコードをフォーマットします。
定義に移動、定義にジャンプします。 「参考文献」に移動し、参考文献にジャンプします。 シンボルへ移動…、変数名、関数名などにジャンプします。
Peek Definition、定義のプレビュー。現在のコード行を離れずに、選択したコードの定義を表示します。 Peek References(参照のピーク)では、参照のプレビューにより、現在のコード行を離れることなく他のコード行内の現在のコード行への参照を表示し、すばやくジャンプしてコードのロジックと構造をより深く理解できます。