Type/to search
8
Follow
1364
Followers
Módulo de visualización para crear una estrategia comercial: primer vistazo
Original
Created 2019-07-08 09:23:59  Updated 2024-12-23 17:57:33
 7
 8305

img

Módulo de visualización para crear una estrategia comercial: primer vistazo

La programación visual siempre ha sido un objetivo deseado para los desarrolladores de herramientas de software, incluso en el campo del comercio cuantitativo.
Porque el enfoque de visualización "lo que ves es lo que obtienes" reduce en gran medida el umbral técnico para el desarrollo de programación.
Los usuarios ya no tienen que lidiar con un montón de aburridos códigos. Solo necesitan usar su cerebro, su imaginación y su pensamiento lógico, y concentrarse en el negocio en sí.
Puedes realizar el programa que quieras, ¿no es increíble?

¡Entremos entonces juntos en el campo de la programación visual de estrategias comerciales cuantitativas!

  • Inventor inicial de la programación visual cuantificada

    Después de iniciar sesión en https://www.fmz.com, registre una cuenta (si ya se ha registrado, inicie sesión directamente) y haga clic en: Centro de control->Biblioteca de políticas->Nueva política.

    img

    Podemos ver una estrategia de visualización inicial.
    Solo muestra la información de los activos de la cuenta del intercambio configurado de forma predeterminada (el primer objeto de intercambio agregado en la prueba retrospectiva o el robot).
    (Como se muestra a continuación)

    img

    Antes de comenzar a aprender a utilizar la visualización, primero podemos comprender algunos conceptos de diseño de visualización.

    • 1. Empalme

      Una observación cuidadosa revela que todos los módulos tienen espigas (cóncavas) y mortajas (convexas), lo que significa que los módulos se pueden "conectar" y "conectar".
      Si los códigos funcionales representados por dos módulos se pueden conectar, entonces se unirán al acercar la mortaja y la espiga de los dos módulos.

      img

    • 2. Configuración y ajustes del módulo

      Algunos módulos tienen algunas configuraciones especiales, por ejemplo:

      img

      Puede arrastrar el módulo "Proyecto" de la izquierda al módulo "Unir", de modo que pueda agregar una posición de mortaja y espiga, agregando así una posición para unir texto.
      De esta manera podrás realizar algunos ajustes y configuraciones para el módulo haciendo clic en el pequeño engranaje.

    • 3. Parámetros de entrada predeterminados del módulo

      Algunos módulos requieren parámetros de entrada, que pueden ser valores, cadenas, etc.
      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
      Un módulo de cálculo como este para encontrar raíces cuadradas genera los resultados del cálculo de este módulo.
      img
      Como puede ver, si falta el parámetro de entrada, se utiliza el valor predeterminado 9 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 conectar directamente el módulo variable a la posición de mortaja y espiga (hueco).
      img

    • 4. Operación

      Se puede hacer clic en el módulo y arrastrarlo con el botón izquierdo del ratón.
      Los módulos se pueden copiar usando Ctrl + C y pegar usando Ctrl + V, tan convenientemente como copiar y pegar código o texto.
      El área de operación se puede ampliar o reducir usando la rueda del mouse, y todos los módulos se ampliarán o reducirán.
      Haga clic y mantenga presionada un área en blanco en el área de operación y arrastre para mover el área de operación.
      La papelera de la derecha registra los módulos que se eliminaron recientemente.
      Lo más importante, después de ensamblar la estrategia del módulo, no olvides hacer clic en “Guardar”.

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

    Puede ver que hay muchas categorías de módulos en el lado izquierdo del área de edición visual, y hay muchos módulos visuales disponibles en cada categoría.

    img Hay 11 categorías en total.

    • Módulo de herramientas:

      img


      • 1. Información de salida:

        Este módulo se suele utilizar en combinación con módulos de texto, como se muestra a continuación:
        img
        Puede ingresar una cadena en el módulo de clase de texto, de modo que cuando ejecute el módulo "información de salida", se imprimirá el contenido de la cadena en el módulo de texto.
        img
        Prueba retrospectiva:
        img

        Como el código del lenguaje JavaScript:

        function main(){ Log("你好,可视化编程!") }

      • 2. Notificación push de WeChat:

        Este módulo parece igual que "Información de salida", excepto que genera información y la envía a la cuenta de WeChat vinculada a la cuenta actual.
        img
        img

        Como el código del lenguaje JavaScript:

        function main () { Log("微信推送!@") }

      • 3. Lanzar una excepción

        El módulo de lanzamiento de excepción permite que el programa genere un error y luego detenga la ejecución del programa (sin escribir código de manejo de excepciones).
        img

        Esto es similar a la estrategia de JavaScript donde la función throw "string to be output" se ejecuta directamente en la función principal.

        function main () { throw "第一句就抛出异常,让程序停止!" }

        Resultados del backtesting:
        img
        Generalmente se utiliza con mayor frecuencia durante la depuración, por ejemplo, cuando se desea que el programa se detenga bajo una determinada condición e imprima algunos datos en ese momento para facilitar la observación.
        O puede colocar un módulo que lance excepciones en el flujo de código donde puedan ocurrir problemas, para que el programa pueda informar errores y descubrir algunos errores.


      • 4. Hibernación

        Módulo de hibernación
        img
        Como en la estrategia de JavaScript:

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

        Pruebe el módulo de hibernación:
        img
        Resultados del backtesting:
        img


      • 5. Ingresos por impresión

        img

        Este módulo es similar a la función LogProfit de la API de la plataforma de comercio cuantitativo de Inventor, que imprime el registro de ganancias y dibuja automáticamente la curva de ganancias en función de los parámetros de entrada.

        Por ejemplo:
        img
        La ejecución de la prueba retrospectiva se muestra a continuación:
        img
        El código de política de 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) }

        Se puede empalmar en cualquier ubicación donde desee generar información de ingresos.


      • 6. Bucle

        img
        El módulo de bucle puede envolver una serie de combinaciones de módulos empalmados y dejar que esta combinación de módulos se ejecute en un bucle.

        prueba:
        img
        Resultados del backtesting:
        img
        Se puede observar que después de que el módulo de bucle envuelve la combinación de módulos que consta de Print Profit y Sleep, la combinación de módulos se ejecutará de forma continua.


      • 7. Ejecución de bucle cada N segundos

        img
        El uso de este módulo es básicamente el mismo que el del módulo de bucle, la única diferencia es que este módulo tiene una función de suspensión incorporada.
        img


      • 8. Procesamiento de precisión

        img
        Este módulo se puede utilizar cuando se necesita controlar con precisión módulos variables o valores numéricos. El valor numérico de la parte del parámetro de entrada se emitirá como el valor numérico de los decimales especificados según la configuración.

        Por ejemplo, el número 3,1415926535897 se procesa con precisión.
        img

        Las pruebas retrospectivas muestran:
        img


      • 9. Limpiar el registro

        img

        Se utiliza para borrar registros. Según los parámetros de entrada, se puede conservar una parte de los registros.
        Como en la documentación de la API:

        LogReset()

      • 10. Limpiar el registro de ingresos

        img

        Se utiliza para borrar el registro de ingresos. Según los parámetros de entrada, se puede conservar una parte del registro.
        Como en la documentación de la API:

        LogProfitReset()

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

      • 11. Módulo funcional para la obtención de un determinado atributo del mercado

        img

        Este módulo de herramienta debe utilizarse junto con el módulo de mercado en el "Tipo de módulo de trading", como se muestra en la figura:
        img

        Utilice el módulo de información de salida para generar el último precio de transacción del último mercado de tickers:
        img

        Las pruebas retrospectivas muestran:
        img

        Al igual que el código de estrategia de JavaScript:

        function main () { Log(exchange.GetTicker().Last) }
      • 12. Módulo para obtener los atributos de una determinada barra de datos de K-line

        img

        Este 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 comercial".

        Primero crea un módulo variable y nómbralo: K-line.
        img
        Luego obtenga los datos de la línea K, utilice el módulo de datos de la línea K para obtenerlos y asígnelos al módulo variable: "Línea K".
        img
        Luego, utilice el módulo de longitud de lista en el "Tipo de módulo de lista" para obtener la longitud del módulo variable de la línea K, que se utiliza para especificar de qué barra de la línea K se obtendrán los datos.
        img
        Coser juntos, como se muestra:
        img
        Cuando se ejecuta la prueba retrospectiva, se imprime la marca de tiempo de la última barra de la línea K.
        img

      • 13. Módulo para la obtención de datos de pedidos en el libro de pedidos

        img

        También debe utilizarse junto con el módulo Obtener datos de profundidad en el "Tipo de módulo de transacción".

        img

        Establezca el índice en 0, establezca una orden de venta y obtenga la información de la orden de venta.

        img

        Al igual que el código de estrategia de JavaScript:

        function main () { Log(exchange.GetDepth().Asks[0]) }
      • 14. Módulo para obtener un determinado atributo en la información de activos

        img
        Este módulo debe utilizarse junto con el módulo Obtener información de activos.
        img

        Por ejemplo: imprimir el número de monedas disponibles en la cuenta corriente
        img

        Las pruebas retrospectivas muestran:
        img

        Como en la estrategia de JavaScript:

        function main () { Log(exchange.GetAccount().Stocks) }
      • 15. Módulo para obtener un determinado atributo en los datos del pedido

        img

        Este módulo se utiliza para obtener el valor de un determinado atributo en los datos de la orden, como el precio o la cantidad de la primera venta en el libro de órdenes (ejemplo número 13).
        img

        Resultados del backtesting:
        img
        Como en la estrategia de JavaScript:

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

        También se puede utilizar para obtener un determinado atributo en la información del pedido devuelta por el "Módulo de consulta de detalles del pedido" (que se explicará en la sección avanzada).

      • 16. Módulo para obtener los atributos de un determinado puesto en la información de puestos

        img

        De manera similar, se debe utilizar junto con el módulo "Obtener posición de futuros". Cabe señalar que los datos de posición que devuelve el módulo Obtener posición de futuros son una matriz (lista), que es una estructura de datos que contiene posiciones de diferentes contratos y direcciones. . Por lo tanto, debe especificar el índice al utilizarlo.

        Después de aprender tanto, combinemos una operación de cobertura, es decir, cubramos contratos a corto y largo plazo al mismo tiempo.
        Hacemos una cobertura de arbitraje positiva, es decir, abrimos un contrato forward corto, 1 contrato, y abrimos un contrato largo en el corto plazo.

        img

        Resultados del backtesting:
        img

Ejemplo de estrategia de visualización:

Hay más estrategias disponibles en: https://www.fmz.com/square

Otros artículos de esta serie

La programación aburrida se puede completar fácilmente utilizando bloques de construcción. ¡Pruébalo, es muy interesante!

Related Recommendations
Comment
All comments (7)

    指标里没有cci,我如果要用cci是不是就不能用这个可视化去创建

    4 years ago

    这个系列里的文章有讲如何实现自定义的模块。

    4 years ago

    除了深入,初识,进阶这三个还有本系列其他的文章吗,为什么我没找到自定义模块和指标模块用法呢

    4 years ago

    请问可视化中的指标模块是怎么使用的

    5 years ago

    这个系列文章可以看完,又讲。

    5 years ago

    好的,谢谢。找到了

    5 years ago
  • 1
iPhone Download
Forums
PINE Language
© 2015 - ∞ INVENTOR PTE LTD (SG)