[TOC]

양적 거래와 프로그래밍 거래에서 초보자가 겪는 가장 큰 어려움은 무엇입니까? 일반적으로 여러 가지가 있습니다.
AI 기술의 발달로 위와 같은 문제에 대한 해결책을 어느 정도 찾을 수 있게 되었습니다. 최근 인기Chat GPT이는 양적 거래를 배우고, 조사하고, 만드는 도구로 사용할 수 있습니다. FMZ 플랫폼의 전략 편집기가 새롭게 업그레이드되면서 Chat GPT도 연결되어 양적 생산성이 크게 향상되었습니다. 함께 살펴보겠습니다.FMZ 전략 편집기의 새로운 기능!
Chat GPT의 기능은 이미 매우 강력하고 인간이 제기하는 질문에 대한 이해 수준도 이미 매우 높습니다. 하지만 그 대답은 여전히 다음과 같다.문제 설명의 완전성、설명의 정확성사용자의 입력 및 출력과 같은 요소는 매우 민감합니다. 설명된 시나리오 또는 질문 내용이 부정확한 경우 Chat GPT는 여전히 완벽한 답변을 제공할 수 없습니다. 따라서 이를 사용하여 어떤 문제를 해결할 때에는 정확하고 완전하게 표현하도록 노력해야 합니다.
다음으로 FMZ 플랫폼 전략 편집기의 Chat GPT 기능을 사용하여 코드 설계 문제를 해결합니다. FMZ 플랫폼에 로그인하여 전략 편집 페이지로 이동합니다.

빈 공간에서 마우스 오른쪽 버튼을 클릭하여 ChatGPT 옵션을 선택하고 클릭하여 호출합니다.Chat GPT,또는⌘K를 사용하여 ChatGPT를 호출합니다.。
만약 제가 지금 양적 거래 초보자라면, 제게는 하나의 요구 사항이 있습니다: “1분 K-라인을 사용해 모든 기간의 K-라인 데이터를 합성하세요.” 초보자로서, 저는 프로그래밍 기술이 약하고 그런 알고리즘을 쓸 수 없습니다. 과거에는 정보를 찾고 전문가에게 도움을 구할 수밖에 없었습니다. 이제 Chat GPT를 사용하면 직접 답변을 요청할 수 있습니다. 물론, 위에서 언급했듯이 이 요구 사항을 직접 설명하세요.“1분 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”)`그리기, 그래서 전략은 그리기 위해 선 그리기 라이브러리를 참조해야 합니다. 그리기는 Chat GPT가 제공한 코드에 의해 합성된 K-라인 데이터가 올바른지 확인하는 것입니다.
템플릿 라이브러리가 무엇인지에 대해서는 여기서 자세히 설명하지 않겠습니다. FMZ의 API 문서를 확인하시면 됩니다.선화도서관 주소
Chat GPT주어진 코드는 직접 백테스트할 수 있습니다. 백테스트 시스템의 기본 K-라인 기간을 5분으로 설정하여 Chat GPT에서 제공한 알고리즘으로 계산된 K-라인 데이터로 그린 K-라인 차트를 비교했습니다.


언뜻 보기에 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");
}
FMZ에 통합된 ChatGPT는 코드 작성에 도움이 될 뿐만 아니라, 코드를 설명하는 데도 도움이 됩니다. ChatGPT가 방금 작성한 코드를 선택하세요.composeKLineData기능, 마우스 오른쪽 버튼을 클릭하면 메뉴가 나타납니다.


ChatGPT는 최적화 제안과 최적화된 코드도 제공할 수 있습니다.

이 FMZ 편집기 업데이트에는 ChatGPT 기능이 추가되었습니다. 이를 통해 온라인 프로그램 작성 시 사용자 경험이 더욱 최적화되고 개선되며, 여러 가지 편리한 기능이 추가되었습니다.
빈 공간이나 코드를 선택할 때 마우스 오른쪽 버튼을 클릭하면 메뉴가 나타납니다.

다양한 기능에 대한 단축키 조합을 표시합니다.

심볼 이름을 바꾸고 로컬 변수 이름을 수정합니다.


위의 사진만 수정됩니다main함수의 변수 이름records。
모든 발생 항목을 변경하고 변수 이름이나 단어를 선택한 뒤, 텍스트에 있는 모든 동일한 내용을 동시에 편집합니다.


서식 선택, 선택된 코드의 서식을 지정합니다.
문서 서식을 지정하고 모든 코드를 서식으로 지정합니다.

정의로 이동, 정의로 바로 이동. 참고문헌으로 가서 참고문헌으로 바로 넘어가세요. 심볼로 이동, 변수 이름, 함수 이름 등으로 점프합니다.

정의 살펴보기, 정의 미리보기. 현재 코드 줄을 벗어나지 않고도 선택한 코드의 정의를 봅니다. 참조 살펴보기, 참조 미리보기, 현재 코드 줄을 벗어나지 않고도 다른 코드 줄에서 현재 코드 줄에 대한 참조를 보고, 빠르게 이동하여 코드 논리와 구조를 더 잘 이해할 수 있습니다.
