For quantitative trading and programmatic trading beginners, what are the biggest difficulties in learning? Generally speaking, there are several reasons:

  • Basic knowledge deficiency: including basic concepts, market rules, trading knowledge, strategic thinking, etc.
  • Poor programming foundation: including logical expression, program design and writing, program debugging and error correction.
  • Weak logical thinking: the process of thinking can cause confusion easily, and the more you think, the more confused you become.
  • Self-study difficulties: When encountering problems, it is difficult to know where to start solving them, and the direction of problem searching may not even be clear.

With the development of AI technology, solutions to these problems can be found to some extent. The recently popular ChatGPT can be used as a tool for quantitative trading learning, research, and creation. With FMZ platform's new upgrade for strategy editor and integration with ChatGPT, it improves the productivity of quantification greatly. Let's explore the new functions of FMZ strategy editor together!

Use ChatGPT to assist in code design

Although the current capabilities of ChatGPT are already very powerful, and it can understand human questions very well, the answers it provides are still highly sensitive to factors such as the completeness and accuracy of the question description. If the described scenario or question content is not accurate, ChatGPT may be unable to provide a perfect answer. Therefore, when using it to solve some problems, it is necessary to try to express them correctly and completely.

Next, we will use the ChatGPT function of the FMZ platform strategy editor to solve a code design problem. Log in to the FMZ platform and go to the strategy editing page.

Summon ChatGPT

Right-click on the blank space, select ChatGPT option and click to call out ChatGPT, or use Ctrl+K to call out ChatGPT.

The technique of asking questions

If I am a quantitative trading beginner now, I have a requirement:

Use one-minute K-line to synthesize any period K-line data.

As a beginner, my programming ability is poor, and I really don't know how to write such an algorithm. In the past, I could only search for information and ask experts for help. Now, with ChatGPT, I can ask it for answers directly. Of course, as mentioned above, describing the requirement directly: "Use one-minute K-line data to synthesize any period K-line data". GPT is unlikely to give you a 100% usable answer, so you still need to try your best to describe the problem thoroughly. Taking the requirement as an example, I kept adjusting my questions and asked many times before getting a usable answer that met my needs.

So let's make this requirement description a little more complete:

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.

After calling out ChatGPT, fill in the question.

ChatGPT starts working.

Wait for it to finish writing.

Sometimes ChatGPT will play a joke, and wrap the code with 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")``` for drawing, the strategy needs to reference a drawing library in order to draw. The purpose of drawing is to verify whether the K-line data synthesized by ChatGPT's code is correct.

The "Plot Library" (a JavaScript template library) is public and can be copied to your own strategy library on the Strategy Square. After copying it to your own strategy library, your JavaScript strategy can reference it. The address of the Plot Library

OK, back to the topic, the code given by ChatGPT can be backtested directly. I set the default K-line period of the backtesting system to 5 minutes for comparison with the K-line chart drawn from the K-line data calculated by ChatGPT's algorithm.

Backtest shows:

Preliminarily, it seems that the algorithm given by ChatGPT to synthesize 5-minute K-line from 1-minute K-line is correct.

Complete code written by 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
*/
functioncomposeKLineData(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;
}

functionmain() {
  var records = exchange.GetRecords(60);
  var kLineData = composeKLineData(records, 5); // Synthesize 5-minute K-line data
  $.PlotRecords(kLineData, "KLineData");
}

Explain the code

FMZ's integrated ChatGPT not only helps you write code, but also helps you explain the code. Select the composeKLineData function in the code just written by ChatGPT, right-click to show the menu:

Give suggestions, optimize code

Even ChatGPT can provide optimization suggestions and optimized code.

Other functions added to the editor

The FMZ editor update, in addition to adding the ChatGPT function. It also optimizes and enhances the online programming experience, adding many convenient functions.

View shortcut combinations

Right-click in the blank space or when selecting code to show the menu.

It displays various shortcut key combinations.

Modify variable name

Rename Symbol to modify the local variable name.

It only changed the variable name records in the main function of the above picture.

Modify all the same content

Change All Occurrences, select a variable name, word, and edit all the same content in the text simultaneously.

Formatting (code optimization, automatic alignment format)

Format Selection, format the selected code.

Format Document, format all code.

Go to Definition, Reference

Go to Definition: Go to Definition.
Go to References: Go to References.
Go to Symbol...: Go to variable names, function names, etc.

Peek Definition, Peek References

Peek Definition: Definition preview, view the definition of the selected code without leaving the current line of code.
Peek References: Quote preview, view the references to the current code line in other code lines without leaving the current code line, it can go quickly, in order to understand the code logic and structure better.

Leave a Reply

Your email address will not be published. Required fields are marked *