Untuk pemula perdagangan kuantitatif dan programmatic, apa kesulitan terbesar dalam belajar?
Dengan perkembangan teknologi AI, solusi untuk masalah ini dapat ditemukan sampai batas tertentu.ChatGPTDengan platform FMZ
Meskipun kemampuan ChatGPT saat ini sudah sangat kuat, dan dapat memahami pertanyaan manusia dengan sangat baik, jawaban yang diberikan masih sangat sensitif terhadap faktor-faktor sepertikelengkapan dan keakuratan deskripsi pertanyaan. Jika skenario yang dijelaskan atau isi pertanyaan tidak akurat, ChatGPT mungkin tidak dapat memberikan jawaban yang sempurna. Oleh karena itu, ketika menggunakannya untuk memecahkan beberapa masalah, perlu untuk mencoba untuk mengekspresikannya dengan benar dan lengkap.
Selanjutnya, kita akan menggunakan fungsi ChatGPT dari editor strategi platform FMZ untuk memecahkan masalah desain kode.
Klik kanan pada ruang kosong, pilih opsi ChatGPT dan klik untuk memanggilChatGPT
, ataumenggunakan Ctrl+K untuk memanggil ChatGPT.
Jika saya seorang pemula perdagangan kuantitatif sekarang, saya memiliki persyaratan:
Gunakan satu menit K-line untuk mensintesis setiap periode K-line data.
Sebagai pemula, kemampuan pemrograman saya buruk, dan saya benar-benar tidak tahu cara menulis algoritma seperti itu. Di masa lalu, saya hanya bisa mencari informasi dan meminta bantuan para ahli. Sekarang, dengan ChatGPT, saya dapat meminta jawabannya secara langsung. Tentu saja, seperti yang disebutkan di atas, menggambarkan persyaratan secara langsung:
Jadi mari kita membuat deskripsi persyaratan ini sedikit lebih lengkap:
> 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.
Setelah memanggil ChatGPT, Anda dapat mengisi konten pertanyaan yang dioptimalkan yang disebutkan di atas.
ChatGPT mulai bekerja.
Tunggu sampai selesai menulis.
Kadang-kadangChatGPT
menambahkansimbol untuk membungkus kode, yang dalam markdown menunjukkan bahwa isi yang dibungkus adalah kode. jadi kita hanya perlu menghapus baris pertama dan terakhir. karena saya memintanya untuk menggunakan$.PlotRecords(KLineData, "name")
Untuk menggambar, strategi perlu merujuk perpustakaan gambar untuk menggambar. Tujuan menggambar adalah untuk memverifikasi apakah data K-line yang disintesis oleh kode Chat GPT
Kode yang diberikan olehChatGPT
Saya menetapkan periode K-line default dari sistem backtesting sebagai 5 menit, yang digunakan untuk membandingkan dengan grafik K-line yang diambil dari data K-line yang dihitung oleh algoritma Chat GPT
Secara awal, tampaknya algoritma yang diberikan oleh ChatGPT untuk mensintesis 5-menit K-line dari 1-menit K-line adalah benar.
/*
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
fungsi dalam kode yang baru saja ditulis oleh ChatGPT, klik kanan untuk menampilkan menu:
Bahkan ChatGPT dapat memberikan saran optimasi dan kode yang dioptimalkan.
Pembaruan editor FMZ, selain menambahkan fungsi ChatGPT. Ini juga mengoptimalkan dan meningkatkan pengalaman pemrograman online, menambahkan banyak fungsi yang nyaman.
Klik kanan pada ruang kosong atau saat memilih kode untuk menampilkan menu.
Ini menampilkan berbagai kombinasi tombol jalan pintas.
Mengganti nama Simbol untuk memodifikasi nama variabel lokal.
Itu hanya mengubah nama variabelrecords
dalammain
fungsi gambar di atas.
Ubah Semua Kejadian, pilih nama variabel, kata, dan mengedit semua konten yang sama dalam teks secara bersamaan.
Format Pilihan, format kode yang dipilih.
Format dokumen, format semua kode.
Pergi ke Definisi: Pergi ke Definisi Pergi ke Referensi: Pergi ke Referensi Pergi ke Simbol...: Pergi ke nama variabel, nama fungsi, dll.
Peek Definition: Definition preview, melihat definisi kode yang dipilih tanpa meninggalkan baris kode saat ini. Lihat Referensi: Pratinjau kutipan, melihat referensi untuk baris kode saat ini dalam baris kode lain tanpa meninggalkan baris kode saat ini, dapat pergi dengan cepat, untuk memahami logika kode dan struktur yang lebih baik.