Para los principiantes en el comercio cuantitativo y el comercio programático, cuáles son las mayores dificultades de aprendizaje?
Con el desarrollo de la tecnología de IA, se pueden encontrar soluciones a estos problemas hasta cierto punto.- ¿ Qué pasa?La nueva actualización de la plataforma FMZ para el editor de estrategias y la integración con ChatGPT mejoran enormemente la productividad de la cuantificación.Las nuevas funciones del editor de estrategias FMZ¡Todos juntos!
Aunque las capacidades actuales de ChatGPT ya son muy poderosas, y puede entender las preguntas humanas muy bien, las respuestas que proporciona son todavía muy sensibles a factores tales comola exhaustividad y exactitud de la descripción de la pregunta. Si el escenario descrito o el contenido de la pregunta no es preciso, ChatGPT puede no ser capaz de proporcionar una respuesta perfecta. Por lo tanto, al usarlo para resolver algunos problemas, es necesario tratar de expresarlos correctamente y completamente.
A continuación, utilizaremos la función ChatGPT del editor de estrategia de la plataforma FMZ para resolver un problema de diseño de código.
Haga clic derecho en el espacio en blanco, seleccione la opción ChatGPT y haga clic para llamarChatGPT
, oUse Ctrl+K para llamar a ChatGPT.
Si soy un principiante en el comercio cuantitativo ahora, tengo un requisito:
Utilice la línea K de un minuto para sintetizar cualquier dato de línea K de período.
Como principiante, mi capacidad de programación es pobre, y realmente no sé cómo escribir tal algoritmo. En el pasado, sólo podía buscar información y pedir ayuda a expertos. Ahora, con ChatGPT, puedo pedirle respuestas directamente. Por supuesto, como se mencionó anteriormente, describiendo el requisito directamente:
Así que hagamos esta descripción de requisitos un poco más completa:
> 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.
Después de llamar a ChatGPT, puede completar el contenido de la pregunta optimizada mencionada anteriormente.
ChatGPT comienza a trabajar.
Espera a que termine de escribir.
Algunas vecesChatGPT
añadesímbolos para envolver el código, que en marcado abajo indica que el contenido envuelto es código. así que sólo tenemos que eliminar la primera y última línea.$.PlotRecords(KLineData, "name")
El propósito del dibujo es verificar si los datos de la línea K sintetizados por el código Chat GPT
El código proporcionado porChatGPT
El período predeterminado de la línea K del sistema de backtesting es de 5 minutos, que se utiliza para comparar con los gráficos de la línea K extraídos de los datos de la línea K calculados por el algoritmo Chat GPT
Preliminarmente, parece que el algoritmo dado por ChatGPT para sintetizar K-line de 5 minutos de K-line de 1 minuto es correcto.
/*
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
función en el código escrito por ChatGPT, haga clic derecho para mostrar el menú:
Incluso ChatGPT puede proporcionar sugerencias de optimización y código optimizado.
La actualización del editor FMZ, además de agregar la función ChatGPT, también optimiza y mejora la experiencia de programación en línea, agregando muchas funciones convenientes.
Haga clic derecho en el espacio en blanco o al seleccionar el código para mostrar el menú.
Muestra varias combinaciones de teclas de acceso directo.
Renombrar símbolo para modificar el nombre de la variable local.
Sólo cambió el nombre de la variablerecords
En elmain
función de la imagen anterior.
Cambiar todas las ocurrencias, seleccionar un nombre de variable, palabra, y editar todo el mismo contenido en el texto simultáneamente.
Formato Selección, formato del código seleccionado.
Formate el documento, formate todo el código.
Vaya a la definición: vaya a la definición. Ir a las referencias: Ir a las referencias. Ir a Símbolo...: Ir a nombres de variables, nombres de funciones, etc.
Peek Definición: vista previa de la definición, ver la definición del código seleccionado sin salir de la línea actual de código. Peek References: Preview de citas, ver las referencias a la línea de código actual en otras líneas de código sin salir de la línea de código actual, puede ir rápidamente, con el fin de comprender mejor la lógica y la estructura del código.