Módulo de visualización para construir estrategias comerciales - Primer conocimiento

El autor:- ¿ Por qué?, Creado: 2022-12-12 16:50:29, Actualizado: 2023-09-20 09:44:29

img

Módulo de visualización para construir estrategias comerciales - Primer conocimiento

La programación visual siempre ha sido un objetivo aspiracional de los desarrolladores de software, incluso en el campo del comercio cuantitativo. Porque el método de "lo que ves es lo que obtienes" en la visualización reduce el umbral técnico del desarrollo de programación en gran medida. Los usuarios ya no tienen que lidiar con una pila de códigos aburridos, sólo usan su imaginación y pensamiento lógico para centrarse en el negocio en sí. Puedes realizar cualquier programa que quieras. ¿No es increíble?

¡Vamos a entrar juntos en el campo de la programación visual de la estrategia comercial cuantitativa!

Programación visual del FMZ Quant inicial

Después de iniciar sesión enhttps://www.fmz.com, registre su cuenta (si ya está registrado, inicie sesión directamente) y haga clic en: Panel -> Estrategia -> Agregar estrategia.

img

Podemos ver una estrategia de visualización inicial. Solo se utiliza para emitir la información del activo de la cuenta del intercambio configurado por defecto (el primer objeto de intercambio agregado en el backtest o robot). (Véase el cuadro de abajo)

img

Antes de empezar a aprender a usar la visualización, podemos entender algunos conceptos de diseño de la visualización.

  1. El empalme Si se mira con atención, se puede ver que los módulos tienen tenón (cóncava) y mortice (convexa), es decir, los módulos pueden conectar y ser conectado. Si dos módulos representan códigos funcionales que se pueden conectar, entonces los tenones y los morteros de los dos módulos se unirán cuando los acerques.

img

  1. Configuración y ajuste del módulo Algunos módulos tienen algunas áreas ajustables especiales, por ejemplo:

img

Puede arrastrar el módulo Item de la izquierda al módulo Add, para que pueda agregar una posición de tenón (cóncava), agregando así una posición para empalmar texto. De esta manera, haga clic en el piñón para ajustar y establecer el módulo.

  1. Parámetros de entrada predeterminados del módulo Algunos módulos necesitan introducir algunos parámetros, que pueden ser valores numéricos o cadenas. Si no agrega variables como parámetros de entrada del módulo, el módulo se ejecutará de acuerdo con los parámetros de entrada predeterminados.

img

El módulo de cálculo de raíz cuadrada como este sale los resultados de cálculo de este módulo.

img

Como se puede ver, si la posición del parámetro de entrada es predeterminada, el valor predeterminado 9 se utilizará como parámetro de entrada para calcular la raíz cuadrada de 9.

img

Por supuesto, si desea utilizar un módulo variable como parámetro de entrada, puede empalmar el módulo variable en la posición tenón (cóncava) directamente.

img

  1. Operación El módulo se puede hacer clic y arrastrar con el botón izquierdo del ratón. Los módulos se pueden copiar con ctrl + c y pegar con ctrl + v, tan conveniente como copiar y pegar código o texto. El área de operación se puede escalar con la rueda del ratón, y todos los módulos se escalarán más o menos. Haga clic y arrastre la posición en blanco en el área de operación para mover el área de operación. La papelera de la derecha registra los módulos eliminados recientemente. Lo más importante es que después de empalmar la estrategia del módulo, no se olvide de hacer clic en Guardar.

Introducción al módulo de herramientas de visualización

Se puede ver que hay muchas clasificaciones de módulos en el lado izquierdo del área de edición visual, y hay muchos módulos visuales disponibles en cada proyecto de clasificación.

Hay 11 categorías.

img

Modulo de uso:

img img img

  1. Información de salida: Este módulo se utiliza generalmente junto con el módulo de clase de texto, como se muestra a continuación:

img

Se puede introducir una cadena en el módulo de texto, de modo que cuando se ejecuta el módulo de información de salida, el contenido de la cadena en el módulo de texto se imprimirá.

img

Pruebas de retroceso:

img img

Como el código del lenguaje JavaScript:

function main(){
    Log("Hello, Blockly!")
}
  1. Empuje a WeChat: Este módulo tiene el mismo aspecto que la información de salida, que es diferente de la que empuja información a WeChat vinculada a la cuenta corriente al mismo tiempo.

img

Como el código del lenguaje JavaScript:

function main () {
Log("WeChat Push!@")
}
  1. Arrojar excepción Lanzar el módulo de excepción hace que el programa emita un error, y luego el programa detiene la ejecución (sin escribir el código de manejo de excepciones).

img

Del mismo modo, en la estrategia JavaScript, la función principal ejecuta la función string to output directamente.

function main () {
    throw "The first sentence throws an exception to stop the program!"
}

Resultados de las pruebas de retroceso:

img img

Por lo general, se utiliza más en el depuración. Por ejemplo, si desea que el programa se detenga bajo ciertas condiciones e imprima algunos datos en ese momento para su observación. O puedes colocar un módulo de excepción en el flujo de código donde puedan ocurrir problemas, dejar que el programa informe errores y encuentre algunos errores.

  1. Dormir. Módulo de reposo

img

Como en la estrategia de JavaScript:

function main () {
    Sleep(1000 * 5)
}

Prueba el módulo de sueño:

img

Resultados de las pruebas de retroceso:

img

  1. Impresión de las devoluciones

img

Este módulo, al igual que la función API LogProfit en FMZ Quant Trading Platform, que imprime el registro de devoluciones y dibuja la curva de retorno según los parámetros de entrada automáticamente.

Por ejemplo:imgLa ejecución del backtesting se muestra en la figura siguiente:

img

El código de estrategia JavaScript correspondiente es el siguiente:

function main () {
    LogProfit(1)
    Sleep(1000 * 5)
    LogProfit(2)
    Sleep(1000 * 5)
    LogProfit(3)
    Sleep(1000 * 5)
    LogProfit(2)
    Sleep(1000 * 5)
    LogProfit(5)
}

Puede ser empalmado en cualquier posición donde quieras obtener información de retorno.

  1. El bucleimgEl módulo de bucle puede envolver una serie de combinaciones de módulos empalmados, lo que permite que las combinaciones de módulos ejecuten el bucle.

Prueba:imgResultados de las pruebas de retroceso:

img

Podemos ver que la combinación de módulos que consiste en print retorna y sleep se ejecutará continuamente después de que el módulo de bucle se envuelve.

  1. Ejecución del bucle cada N segundosimgEl uso de este módulo es básicamente el mismo que el del módulo de bucle. La única diferencia es que el módulo tiene su propio sueño.img

  2. Procesamiento de precisiónimgEste módulo se puede utilizar cuando el módulo variable o el valor numérico necesita controlar la precisión. El valor numérico de la parte del parámetro de entrada se emitirá como el valor numérico del lugar decimal especificado según los ajustes.

Por ejemplo, el procesamiento de precisión se realiza en el valor 3.1415926535897.

img

Display de pruebas de retroceso:

img

  1. Despeje el registroimg

Se utiliza para borrar registros, algunos registros pueden ser retenidos según los parámetros de entrada. Como en el documento de la API:

LogReset()
  1. Despejar el registro de retornoimg

Se utiliza para borrar el registro de retorno. Algunos registros se pueden conservar de acuerdo con los parámetros de entrada. Como en el documento de la API:

LogProfitReset()

Los siguientes son algunos módulos de herramientas utilizados con frecuencia

  1. Módulo funcional para obtener un determinado atributo del mercadoimgEste módulo de herramienta debe utilizarse junto con el módulo de cotización en el Tipo de módulo de transacción, como se muestra en la figura:imgUtilice el módulo de información de salida para obtener el último precio de transacción del último mercado de ticker:imgDisplay de pruebas de retroceso:img

Como el código de estrategia de JavaScript:

function main () {
    Log(exchange.GetTicker().Last)
}
  1. El módulo que obtiene el atributo de una barra de datos de línea KimgEste módulo también debe utilizarse junto con el módulo de adquisición de datos de línea K en el Tipo de módulo de transacción.

Primero, creamos un módulo variable llamado K-line.imgLuego obtenemos los datos de la línea K, usamos el módulo de datos de la línea K para obtenerlo y asignamos el valor al módulo variable: K-line.imgLuego usamos el módulo de longitud de lista en el Tipo de módulo de lista para obtener la longitud del módulo de variable de línea K, que se utiliza para especificar qué barra en la línea K para obtener los datos.imgEnlazarlos juntos, como se muestra en la figura:img

La marca de tiempo de la última barra de la línea K se imprime cuando se ejecuta la prueba de retroceso.img

  1. El módulo que obtiene los datos de una orden en el libro de pedidosimgTambién debe usarse junto con el módulo Get Depth Data en el Tipos de módulos de transacciones.imgEl índice se establece en 0 y la orden de venta se establece para obtener la información de una orden de venta.

img

Como el código de estrategia de JavaScript:

function main () {
    Log(exchange.GetDepth().Asks[0])
}
  1. Módulo para obtener un atributo en la información sobre activosimgEste módulo debe utilizarse junto con el módulo de obtención de información sobre activos.imgPor ejemplo: imprimir la moneda disponible de la cuenta corrienteimgDisplay de pruebas de retroceso:img

Como el código de estrategia de JavaScript:

function main () {
    Log(exchange.GetAccount().Stocks)
}
  1. Módulo para obtener un atributo en los datos de ordenimgEste módulo se utiliza para obtener el valor de un atributo en los datos de pedidos, como el precio o la cantidad de venta de uno en el libro de pedidos (ejemplo del no 13).img

Resultados de las pruebas de retroceso:img

Como el código de estrategia de JavaScript:

function main () {
    Log(exchange.GetDepth().Asks[0].Price)
}

También se puede utilizar para obtener un atributo en la información de orden devuelta por el módulo de detalles de pedido de consulta (que se explicará en el capítulo avanzado).

  1. El módulo para obtener los atributos de una posición en la información de posiciónimgDe manera similar, debe usarse junto con el Get Futures Position Module. Tenga en cuenta que los datos de posición devueltos por el Get Futures Position Module son una matriz (lista) que contiene posiciones en diferentes contratos y direcciones. Por lo tanto, el índice debe especificarse al usarlo.

Habiendo aprendido tanto, combinemos una operación de cobertura, es decir, la cobertura de contratos a corto plazo y a plazo.

Hacemos una cobertura de arbitraje positivo, es decir, abrir un contrato de posición corta para el contrato a plazo, y abrir un contrato de posición larga para el contrato reciente.

img

Resultados de las pruebas de retroceso:

img

Ejemplos de estrategias de visualización:

https://www.fmz.com/strategy/121404 https://www.fmz.com/strategy/129895 https://www.fmz.com/strategy/123904 https://www.fmz.com/strategy/122318Para más estrategias, consulte:https://www.fmz.com/square

Otros artículos de esta serie

-Módulo de visualización para la elaboración de estrategias comerciales - En profundidad (https://www.fmz.com/digest-topic/9509) y - Módulo de visualización para la construcción de estrategias comerciales - Comprensión avanzada (https://www.fmz.com/bbs-topic/9815)

La programación aburrida puede completarse fácilmente con bloques de construcción.


Relacionados

Más.