定量取引とプログラム取引の初心者にとって,学習における最大の困難は何ですか? 一般的には,いくつかの理由があります.
AI技術の発展により,これらの問題に対する解決策は,ある程度見つけられる.チャットGPT量的な取引学習,研究,創造のためのツールとして使用できます. FMZプラットフォームの新しい戦略エディタのアップグレードとChatGPTとの統合により,量化生産性が大幅に向上します.FMZ戦略編集者の新しい機能一緒に!
ChatGPTの現在の機能は既に非常に強力で,人間の質問を非常によく理解できますが,その回答は,まだ非常に敏感です質問の説明の完全性と正確性. 記述されたシナリオまたは質問内容が正確でない場合,ChatGPTは完璧な答えを提供できない可能性があります. したがって,いくつかの問題を解決するためにそれを使用する場合は,それらを正しく完全に表現しようとする必要があります.
次に,FMZ プラットフォームの戦略エディタの ChatGPT 機能を使ってコードデザインの問題を解決します. FMZ プラットフォームにログインして戦略編集ページへ移動します.
フラットスペースに右クリックして ChatGPT オプションを選択し,呼び出すためにクリックしますChatGPT
,またはCtrl+K を使って ChatGPT を呼び出します.
量的な取引の初心者であれば,私は1つの要件があります:
1分間のK線を使って 周期K線データを合成します
プログラミング能力が低い初心者なので,そのようなアルゴリズムを書く方法も知りません.過去に,私は情報を探し,専門家から助けを求めることができました.今はChatGPTで,直接答えを求めることができます.もちろん,上記のように,要求を直接説明します:1分間のK線データを使用して,任意の周期K線データを合成します.
要求の説明を少し詳しくします.
> 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.
ChatGPT を呼び出す後,上記の最適化された質問内容を記入できます.
チャットGPTが起動します.
書き終わるまで待って
時々ChatGPT
追加する包装されたコンテンツがコードであることを示します. 最初の行と最後の行を除去する必要があります.$.PlotRecords(KLineData, "name")
図を描くには,図図書室に参照する必要がある.図を描く目的は,Chat GPT
提供されたコードChatGPT
バックテストシステムのデフォルトのK線期間を5分に設定し,Chat GPT
ChatGPTが5分間のK線を1分間のK線から合成するアルゴリズムが正しいようです
/*
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
右クリックするとメニューが表示されます.
ChatGPTでさえ最適化提案と最適化されたコードを提供できます
FMZエディタの更新は,ChatGPT機能を追加することに加えて,多くの便利な機能を追加し,オンラインプログラミング体験を最適化および強化します.
右クリックするとメニューが表示されます.
ショートカットキーの組み合わせが表示されます.
ローカル変数の名前を変更するためにシンボルを改名する.
変数の名前だけ変えましたrecords
についてmain
上記の図の機能です
変数名,ワードを選択し,テキスト内の同じコンテンツを同時に編集します.
選択したコードをフォーマットします
ドキュメントをフォーマットして すべてのコードをフォーマットして
定義へ 定義へ 参考文献へ:参考文献へ 変数名,関数名などへ
Peek Definition: 定義プレビューで,現在のコード行を離さずに選択したコードの定義を表示します. Peek References: 引用プレビュー,現在のコードラインへの参照を,現在のコードラインを離さずに他のコードラインで見ることができます. コードの論理と構造をよりよく理解するために,迅速に行えます.