Каковы самые большие трудности в обучении новичков в количественном и программном трейдинге? В общем, причин несколько:

  • Дефицит базовых знаний: в том числе основных концепций, рыночных правил, торговых знаний, стратегического мышления и т. д.
  • Плохая основа программирования: включая логическое выражение, разработку и написание программы, отладку программы и исправление ошибок.
  • Слабое логическое мышление: процесс мышления может легко привести к путанице, и чем больше вы думаете, тем больше вы запутываетесь.
  • Трудности самообучения: при столкновении с проблемами трудно понять, с чего начать их решение, и направление поиска проблемы может быть даже неясным.

С развитием технологии ИИ можно найти решения этих проблем в некоторой степени. Популярный в последнее время ChatGPT можно использовать в качестве инструмента для обучения, исследований и творчества в области количественного трейдинга. Благодаря новому обновлению платформы FMZ для редактора стратегий и интеграции с ChatGPT значительно повышается производительность количественного анализа. Давайте вместе изучим новые функции редактора стратегий FMZ!

Используйте ChatGPT для помощи в разработке кода

Хотя текущие возможности ChatGPT уже очень сильны, и он может очень хорошо понимать человеческие вопросы, ответы, которые он предоставляет, по-прежнему очень чувствительны к таким факторам, как полнота и точность описания вопроса. Если описанный сценарий или содержание вопроса неточны, ChatGPT может не дать точного ответа. Поэтому при использовании его для решения некоторых задач необходимо стараться правильно и полно их излагать.

Далее мы будем использовать функцию ChatGPT редактора стратегии платформы FMZ для решения проблемы разработки кода. Авторизуйтесь на платформе FMZ и перейдите на страницу редактирования стратегии.

Вызов ChatGPT

Щелкните правой кнопкой мыши пустое место, выберите параметр ChatGPT и нажмите, чтобы вызвать ChatGPT, или используйте Ctrl+K, чтобы вызвать ChatGPT.

Техника постановки вопросов

Если я сейчас новичок в количественной торговле, у меня есть требование:

Используйте одноминутную K-линию для синтеза данных K-линии за любой период.

Как новичок, мои способности программирования плохи, и я действительно не знаю, как написать такой алгоритм. Раньше я мог только искать информацию и обращаться за помощью к специалистам. Теперь, с помощью ChatGPT, я могу запросить ответы напрямую. Конечно, как упоминалось выше, прямое описание требования: «Использовать данные K-линии за одну минуту для синтеза данных K-линии за любой период». GPT вряд ли даст вам 100% полезный ответ, поэтому вам все равно нужно постараться, чтобы подробно описать проблему. Взяв требование в качестве примера, я постоянно корректировал свои вопросы и задавал много раз, прежде чем получил полезный ответ, который соответствовал моим потребностям.

Итак, давайте сделаем это описание требования немного более полным:

На платформе FMZ вызов функции exchange.GetRecords(60) может получить данные K-линии за одну минуту. Структура данных следующая: [{
Time : Метка времени в миллисекундах, // Время начала период
Открытие: 1000,
Максимум: 1500,
Минимум: 900,
Закрытие: 1200,
Объем: 1000000
}, …]
Пожалуйста, разработайте алгоритм, который использует данные K-линии за одну минуту для синтеза данных K-линии за любую минуту. Для периодов, которые можно разделить на 60 минут, начните отсчет с полной точки 0 минут. Реализуйте его на языке Javascript, напишите этот алгоритм в виде отдельной функции, протестируйте его в функции main() и используйте $.PlotRecords(KLineData, «имя») для рисования.

После вызова ChatGPT заполните вопрос.

ChatGPT начинает работать.

Подождите, пока он закончит писать.

Иногда ChatGPT сыграет шутку и обернет код symbols, which means that the wrapped content is code in markdown. So we just need to delete the first and last lines. Because I asked it to use$.PlotRecords(KLineData, 'name')``` для рисования, стратегия должна ссылаться на библиотеку рисования для рисования. Целью рисования является проверка правильности данных K-линии, синтезированных кодом ChatGPT.

Библиотека сюжетов (библиотека шаблонов JavaScript) общедоступна и может быть скопирована в вашу собственную библиотеку стратегий на Strategy Square. После копирования в собственную библиотеку стратегий ваша стратегия JavaScript может ссылаться на нее. Адрес Сюжетной Библиотеки

Хорошо, вернемся к теме, код, предоставленный ChatGPT, можно протестировать напрямую. Я установил период K-линии по умолчанию для системы тестирования на исторических данных на 5 минут для сравнения с диаграммой K-линии, построенной на основе данных K-линии, рассчитанных с помощью алгоритма ChatGPT.

Бэктест показывает:

Предварительно кажется, что алгоритм, предоставленный ChatGPT для синтеза 5-минутной K-линии из 1-минутной K-линии, верен.

Полный код, написанный ChatGPT:

/*
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");
}

Объясните код

Интегрированный ChatGPT FMZ не только помогает вам писать код, но и помогает вам объяснять код. Выберите функцию composeKLineData в коде, только что написанном ChatGPT, щелкните правой кнопкой мыши, чтобы открыть меню:

Дайте предложения, оптимизируйте код

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

Другие функции, добавленные в редактор

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

Просмотр комбинаций клавиш

Щелкните правой кнопкой мыши в пустом месте или при выборе кода, чтобы отобразить меню.

Он отображает различные сочетания клавиш.

Изменить имя переменной

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

Он изменил только имя переменной records в функции main на картинке выше.

Изменить весь тот же контент

Изменить все вхождения, выбрать имя переменной, слово и одновременно редактировать все одинаковое содержимое в тексте.

Форматирование (оптимизация кода, автоматическое выравнивание формата)

Format Selection, отформатируйте выбранный код.

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

Перейти к определению, ссылке

Перейти к определению: перейти к определению.
Перейти к ссылкам: перейти к ссылкам.
Перейти к символу…: перейти к именам переменных, именам функций и т. д.