[TOC]

Что является самой большой трудностью для новичков в количественной торговле и программной торговле? Вообще говоря, их несколько.
С развитием технологий искусственного интеллекта в определенной степени можно найти решения вышеуказанных проблем. Недавно популярныйChat GPTЕго можно использовать как инструмент для обучения, исследования и создания количественной торговли. С новым обновлением редактора стратегии на платформе FMZ также был подключен Chat GPT, что значительно улучшило количественную производительность. Давайте рассмотрим это вместе.Новые возможности редактора стратегий FMZ!
Хотя функции Chat GPT уже очень мощные, а уровень понимания вопросов, поднимаемых людьми, уже очень высок. Но ответ, который он дает, все ещеПолнота описания проблемы、Точность описанияТакие факторы, как ввод и вывод пользователя, очень чувствительны. Если описанный сценарий или содержание вопроса неточны, Chat GPT все равно не сможет дать идеальный ответ. Поэтому, используя его для решения каких-то задач, нужно стараться выражать его правильно и полно.
Далее мы воспользуемся функцией Chat GPT редактора стратегии платформы FMZ для решения проблемы проектирования кода. Войдите в платформу FMZ и перейдите на страницу редактирования стратегии.

Используйте контекстное меню в пустом месте, выберите опцию ChatGPT и щелкните, чтобы вызватьChat GPT,илиИспользуйте ⌘K для вызова ChatGPT。
Если я новичок в количественной торговле, то у меня есть требование: «Использовать минутную K-линию для синтеза данных K-линии любого периода». Как новичок, я не силен в программировании и не могу написать такой алгоритм. Раньше я мог только искать информацию и обращаться за помощью к экспертам. Теперь с помощью Chat GPT я могу напрямую спросить его об ответе. Конечно, как уже упоминалось выше, прямо опишите это требование:«Используйте одноминутную 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”)`Рисование, поэтому стратегия должна ссылаться на библиотеку рисования линий для рисования. Рисование должно проверять, являются ли данные K-line, синтезированные кодом, предоставленным Chat GPT, правильными.
Что касается того, что такое библиотека шаблонов, я не буду вдаваться в подробности. Вы можете проверить документацию API FMZ.Адрес библиотеки рисования линий
Chat GPTПриведенный код может быть протестирован напрямую. Я установил период K-line по умолчанию для системы бэктестинга на 5 минут, чтобы сравнить график K-line, нарисованный по данным K-line, рассчитанным по алгоритму, заданному Chat GPT.


На первый взгляд алгоритм, предложенный ChatGPT для использования 1-минутной K-линии для синтеза 5-минутной K-линии, верен.
/*
合成任意分钟的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");
}
Интеграция ChatGPT в FMZ не только поможет вам писать код, но и поможет вам объяснить его. Выберите код, который ChatGPT только что написал.composeKLineDataФункция, щелкните правой кнопкой мыши, чтобы вызвать всплывающее меню:


ChatGPT может даже давать предложения по оптимизации и оптимизированный код.

Это обновление редактора FMZ добавляет функцию ChatGPT. Он дополнительно оптимизирует и улучшает пользовательский опыт написания онлайн-программ и добавляет множество удобных функций.
Щелкните правой кнопкой мыши в пустом месте или при выделении кода, чтобы открыть всплывающее меню.

Отображает комбинации клавиш для различных функций.

Переименовать символ, изменить имя локальной переменной.


Будет изменено только изображение выше.mainИмена переменных в функцияхrecords。
Изменить все вхождения, выбрать имя переменной или слово и одновременно отредактировать все одинаковое содержимое в тексте.


Выбор формата, форматирует выбранный код.
Форматировать документ, форматировать все коды.

Перейдите в раздел «Определение», перейдите к определению. Перейдите в раздел «Ссылки», перейдите к ссылкам. Перейти к символу…, перейти к имени переменной, имени функции и т. д.

Peek Definition, предварительный просмотр определения. Просмотрите определение выбранного кода, не покидая текущую строку кода. Peek References, предварительный просмотр ссылок, просмотр ссылок на текущую строку кода в других строках кода, не покидая текущую строку кода, и быстрый переход для лучшего понимания логики и структуры кода.
