양적 거래 및 프로그래밍 거래 초보자에게는 학습에 가장 큰 어려움은 무엇입니까? 일반적으로는 몇 가지 이유가 있습니다.
인공지능 기술의 발전으로 이러한 문제에 대한 해결책은 어느 정도 찾을 수 있습니다.ChatGPT수량적 거래 학습, 연구 및 창조를 위한 도구로 사용될 수 있습니다. FMZ 플랫폼의 새로운 전략 편집기 업그레이드와 ChatGPT와의 통합으로 수량화의 생산성을 크게 향상시킵니다.FMZ 전략 편집기의 새로운 기능함께!
현재 ChatGPT의 기능이 이미 매우 강력하고, 인간의 질문을 매우 잘 이해할 수 있지만, 제공되는 답변은 여전히 다음과 같은 요소에 매우 민감합니다.질문 설명의 완전성과 정확성. 설명 된 시나리오 또는 질문 내용이 정확하지 않은 경우, ChatGPT는 완벽한 답을 제공할 수 없을 수 있습니다. 따라서, 어떤 문제를 해결하기 위해 사용 할 때, 올바르고 완전히 표현하려고 노력해야합니다.
다음으로, 우리는 FMZ 플랫폼 전략 편집기의 ChatGPT 기능을 사용하여 코드 디자인 문제를 해결합니다. FMZ 플랫폼에 로그인하여 전략 편집 페이지로 이동합니다.
빈 공간에 오른쪽 버튼을 눌러 ChatGPT 옵션을 선택 하 고 호출 하 고 클릭 합니다ChatGPT
, 또는Ctrl+K를 사용하여 ChatGPT를 호출합니다..
만약 제가 지금 양적 거래의 초보자라면, 저는 한 가지 요구사항을 가지고 있습니다.
1분 K선을 사용하여 모든 기간 K선을 합성합니다.
초보자로서, 제 프로그래밍 능력은 약하고, 저는 실제로 그러한 알고리즘을 작성하는 방법을 모릅니다. 과거에는 정보를 검색하고 전문가에게 도움을 요청할 수 밖에 없었습니다. 지금은 ChatGPT로 직접 답변을 요청할 수 있습니다. 물론, 위에서 언급했듯이, 요구 사항을 직접 설명합니다:
그래서 이 요구사항 설명이 좀 더 완전해지도록 합시다.
> 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")
도면을 그리기 위해 전략은 도면 라이브러리를 참조해야 합니다. 도면의 목적은 채팅 GPT
코드는ChatGPT
저는 백테스팅 시스템의 기본 K-라인 기간을 5분으로 설정했습니다. 이는 채팅 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가 작성한 코드에서 함수, 오른쪽 클릭하면 메뉴가 표시됩니다:
심지어 ChatGPT도 최적화 제안과 최적화된 코드를 제공할 수 있습니다.
FMZ 에디터 업데이트는 ChatGPT 기능을 추가하는 것 외에도 많은 편리한 기능을 추가하여 온라인 프로그래밍 경험을 최적화하고 향상시킵니다.
빈 공간에 오른쪽 클릭하거나 코드를 선택하면 메뉴가 표시됩니다.
다양한 단축키 조합을 표시합니다.
로컬 변수 이름을 변경하기 위해 기호의 이름을 변경합니다.
변수 이름만 바꿨어요records
에main
위 그림의 기능입니다.
모든 발생을 변경하고 변수 이름, 단어를 선택하고 텍스트의 모든 동일한 내용을 동시에 편집합니다.
포맷 선택, 선택된 코드를 포맷합니다.
문서 형식, 모든 코드 형식
정의로 이동하세요: 정의로 이동하세요. 참고문헌으로 가세요: 참고문헌으로 가세요. Symbol...: 변수 이름, 함수 이름 등으로 이동합니다.
피크 정의: 정의 미리보기, 현재 코드 라인을 떠나지 않고 선택한 코드 정의를 참조하십시오. 피크 레퍼런스 (Peek References): 코드의 논리와 구조를 더 잘 이해하기 위해 빠르게 이동할 수 있습니다.