avatar of 发明者量化-小小梦 发明者量化-小小梦
Seguir Mensajes Privados
4
Seguir
1271
Seguidores

Módulo de visualización para construir estrategias comerciales - Avanzado

Creado el: 2019-07-17 10:22:20, Actualizado el: 2023-10-24 21:40:50
comments   3
hits   4351

Módulo de visualización para construir estrategias comerciales - Avanzado

Módulo de visualización para construir estrategias comerciales - Avanzado

Aprenda la estrategia comercial de construcción de módulos visuales (capítulo de introducción) y adquiera una comprensión conceptual de la construcción y unión de módulos visuales. Luego es fácil aprender a utilizar otros módulos. Se pueden combinar algunas funciones más complejas.

  • ## Módulo de categoría de transacción

En estudios y pruebas anteriores, hemos entrado en contacto con varios módulos de “categoría de transacción”. Por ejemplo: Módulo “Cotizaciones de Bolsa” Módulo “Intercambio de obtención de línea K” …

No entraré en detalles sobre los que ya se han utilizado.

  • 1. Obtenga el número de intercambios

    Módulo de visualización para construir estrategias comerciales - Avanzado

    Al escribir una estrategia para operar con un robot, puede agregar más de un objeto de intercambio, por ejemplo, una estrategia de cobertura. O bien es necesario recorrer (recorrer significa visitar uno por uno) los objetos de intercambio para acceder a las condiciones del mercado. En este momento es necesario utilizar un módulo para obtener el número de intercambios.

    Primero podemos utilizar una estructura simple para imprimir el número de intercambios configurados actualmente: Módulo de visualización para construir estrategias comerciales - Avanzado

    De hecho, es como llamar al siguiente código de política de JavaScript:

    function main () {
        Log(exchanges.length)
    }
    

    Veamos los resultados de ejecutar este módulo combinado: Módulo de visualización para construir estrategias comerciales - Avanzado

    Puede ver que hemos agregado 3 objetos de intercambio, que representan tres cuentas de intercambio diferentes, y el resultado de salida del registro de backtest es 3.

  • 2. Obtenga el nombre del intercambio

    Módulo de visualización para construir estrategias comerciales - Avanzado

    Al agregar tres objetos de intercambio, el cuadro desplegable mostrará tres opciones. Aprenda un módulo de bucle con antelación, en el tipo de bucle. Módulo de visualización para construir estrategias comerciales - Avanzado

    Aprendamos de antemano un módulo de juicio condicional: Módulo de visualización para construir estrategias comerciales - Avanzado La condición de juicio se puede escribir como: Módulo de visualización para construir estrategias comerciales - Avanzado

    Usamos el módulo de bucle para iterar sobre los nombres de intercambio agregados Utilice el módulo de juicio condicional para determinar si el recuento de bucle actual corresponde al nombre de intercambio que se va a imprimir.

    Módulo de visualización para construir estrategias comerciales - Avanzado

    Resultados de la ejecución de backtest: Módulo de visualización para construir estrategias comerciales - Avanzado

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

    function main () {
        for (var i = 1 ; i <= exchanges.length ; i++) {
            if (i == 1) {
                Log(exchanges[0].GetName())
            } else if (i == 2) {
                Log(exchanges[1].GetName())
            } else {
                Log(exchanges[2].GetName())
            }
        }
    }
    
  • 3. Obtenga el par de negociación actual del intercambio

    Módulo de visualización para construir estrategias comerciales - Avanzado

    Un ejemplo simple obtiene el par comercial del primer objeto de intercambio configurado actualmente y lo asigna a la variable de texto (creada en la categoría de variable de antemano).

    Módulo de visualización para construir estrategias comerciales - Avanzado Resultados del backtesting: Módulo de visualización para construir estrategias comerciales - Avanzado

    Si llama al código de política de JavaScript:

    function main () {
        var text = exchange.GetCurrency()
        Log(text)
    }
    
  • 4. Módulo de pedidos

    Módulo de visualización para construir estrategias comerciales - Avanzado Este módulo es muy importante y se utiliza para realizar pedidos. La variable de precio se inserta en la primera posición de la espiga (ranura) para especificar el precio del pedido. También se puede introducir directamente un valor fijo. La segunda posición de espiga (punto) incorpora la variable de cantidad de pedido, que se utiliza para especificar la cantidad de pedido.

    Por ejemplo, crearemos un ejemplo de colocación de una orden de compra basada en el último precio de los datos del mercado de ticks actual, con un deslizamiento de 10 yuanes, estableciendo la cantidad de la orden en 0,1 monedas e imprimiendo el ID de la orden. Módulo de visualización para construir estrategias comerciales - Avanzado

    Resultados de la ejecución de backtest: Módulo de visualización para construir estrategias comerciales - Avanzado

    Como el siguiente código de política de JavaScript:

    function main () {
        var id = exchange.Buy(_C(exchange.GetTicker).Last + 10, 0.1)
        Log(id)
    }
    
  • 5. Módulo para obtener la orden de encomienda del par de negociación actual

    Módulo de visualización para construir estrategias comerciales - Avanzado

    Este módulo devolverá todas las órdenes pendientes para el par de operaciones actual. La estructura devuelta es una lista (matriz), que puede procesarse mediante módulos de tipo lista (operaciones de recorrido, etc.). Por ejemplo: modificamos ligeramente el ejemplo del módulo de pedido [4] anterior y cambiamos el precio de 10 yuanes agregado al realizar un pedido a una resta de precio de 10 yuanes. La orden no se ejecutará inmediatamente, sino que quedará pendiente en la profundidad de compra y venta (es decir, en un nivel determinado entre Comprar 1, Comprar 2 y Comprar N), de modo que la orden se encuentra en una orden pendiente esperando su ejecución. Luego utilizamos el módulo “Obtener la orden de encomienda del par comercial actual” para obtener una lista de órdenes en estado PENDIENTE (esperando ejecución). Para evitar la ejecución de órdenes en condiciones de mercado posteriores y afectar la observación final del backtest, después de que se ejecuta el módulo “Obtener la orden de encomienda del par comercial actual” y se imprime la lista de órdenes, utilizamos inmediatamente la opción “Lanzar excepción”. “ módulo para detener el programa.

    Módulo de visualización para construir estrategias comerciales - Avanzado

    Las pruebas retrospectivas muestran: Módulo de visualización para construir estrategias comerciales - Avanzado

    El precio de la orden de compra es 10 yuanes más bajo que el último precio en ese momento, por lo que la transacción no se completará de inmediato. Luego obtenga las órdenes que están esperando ser ejecutadas e imprímalas. Finalmente, se lanza una excepción para detener el programa.

    Todo el módulo ensamblado es como llamar a una estrategia de JavaScript:

    function main () {
        var id = exchange.Buy(_C(exchange.GetTicker).Last - 10, 0.1)
        Log(id)
        Log(exchange.GetOrders())
        throw "stop"
    }
    
  • 6. Módulo de cancelación de pedidos

    Módulo de visualización para construir estrategias comerciales - Avanzado

    Este módulo se utiliza para cancelar un pedido.

    Hay muchos escenarios en los que esto es necesario al escribir políticas:

    Cancelar todos los pedidos actualmente pendientes.

    Sin duda, esto requerirá el uso del “módulo de cancelación de órdenes”. Mientras aprendemos el módulo de cancelación de órdenes, podemos usar [5] para obtener el módulo de la orden de encargo del par comercial actual y combinarlos para lograr esta función.

    Primero, para probar la cancelación de todos los pedidos, realizar un pedido no es muy obvio, comenzamos realizando dos pedidos con diferentes precios y cantidades para distinguir los dos pedidos.

    Módulo de visualización para construir estrategias comerciales - Avanzado

    Utilice el módulo “Recorrer cada elemento de la lista” en el módulo de tipo bucle para recorrer los pedidos en la lista de pedidos pendientes actual. Módulo de visualización para construir estrategias comerciales - Avanzado Durante el recorrido, cada orden recuperada se asigna al módulo variable orden (creado en el tipo de módulo variable, como se muestra a continuación:) Módulo de visualización para construir estrategias comerciales - Avanzado Utilice el módulo de tipo de herramienta: Módulo de visualización para construir estrategias comerciales - Avanzado Saque el ID del pedido y páselo a la posición de espiga (cóncava) del módulo de cancelación de pedido, y el módulo de cancelación de pedido ejecuta el pedido de cancelación.

    Ejecución de backtest: Módulo de visualización para construir estrategias comerciales - Avanzado

    Usando la descripción de la política de JavaScript:

    function main () {
        var id = exchange.Buy(_C(exchange.GetTicker).Last - 10, 0.1)
        Log(id)
        var id2 = exchange.Buy(_C(exchange.GetTicker).Last - 12, 0.2)
        Log(id2)
        var orders = exchange.GetOrders()
        Log(orders)
        for (var i in orders) {
            var order = orders[i]
            Log(exchange.CancelOrder(order.Id))
        }
    }
    
  • 7. Un módulo para obtener información detallada de un pedido en función del ID del pedido.

    Módulo de visualización para construir estrategias comerciales - Avanzado

    Este módulo puede devolver información detallada del pedido conectando un módulo de variable de identificación de pedido a la posición de mortaja y espiga.

    Módulo de visualización para construir estrategias comerciales - Avanzado

    Preste atención al pedido devuelto después de ejecutar: Módulo de visualización para construir estrategias comerciales - Avanzado

    En comparación con los resultados de ejecución en el ejemplo [5], se puede encontrar que el pedido impreso es una información de pedido separada.[] Envuelto entre corchetes. Dado que el ejemplo [5] devuelve una lista, este ejemplo devuelve una única información de orden (obtenida en función de la variable de ID del módulo en la posición de espiga pasada por el módulo).

    El ejemplo anterior es equivalente a ejecutar una política de JavaScript:

    function main () {
        var id = exchange.Buy(_C(exchange.GetTicker).Last - 10, 0.1)
        Log(exchange.GetOrder(id))
    }
    
  • 8. Módulo de negociación de futuros

    Estudiaremos los módulos anteriores uno por uno y configuraremos el intercambio de prueba para futuros de materias primas.

    Configuración de backtesting: Módulo de visualización para construir estrategias comerciales - Avanzado El siguiente ejemplo prueba retrospectivamente esta configuración.

    • Módulo para evaluar el estado de la conexión entre los futuros de materias primas de CTP y los servidores de las compañías de futuros

    Módulo de visualización para construir estrategias comerciales - Avanzado

    Los futuros de materias primas tienen horarios de apertura y cierre. Cuando el mercado está cerrado, no es posible conectarse.

    • Configurar el módulo de contrato

    Módulo de visualización para construir estrategias comerciales - Avanzado

    Cuando el objeto de intercambio está configurado como un intercambio de futuros, si no establece el contrato y obtiene directamente la información del mercado, se informará un error: Módulo de visualización para construir estrategias comerciales - Avanzado

    Fijamos el contrato en MA909, que es el contrato principal actual para el metanol. Módulo de visualización para construir estrategias comerciales - Avanzado De esta manera, se obtiene el último valor del precio en el mercado de ticks actual del contrato MA909.

    • Configurar el módulo de dirección de órdenes de negociación de futuros

    En el módulo de orden de ejecución Módulo de visualización para construir estrategias comerciales - Avanzado
    Es necesario especificar la dirección de la orden porque los futuros tienen: comprar: abrir una posición larga vender: abrir una posición corta closebuy: cerrar posición larga closesell: cerrar posición corta Cuatro direcciones (los futuros de materias primas tienen dos direcciones más: closebuy_today cierra posiciones largas hoy, closesell_today cierra posiciones cortas hoy).

    Por ejemplo, si el módulo de órdenes está configurado para comprar, entonces hay dos significados: abrir una posición larga y cerrar una posición corta, lo que crea ambigüedad. Por lo tanto, es necesario el módulo “Establecer dirección de orden de negociación de futuros” para establecer una dirección de orden clara.

    Módulo de visualización para construir estrategias comerciales - Avanzado

    Las pruebas retrospectivas muestran: Módulo de visualización para construir estrategias comerciales - Avanzado

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

      function main () {
          while (true) {
              if (exchange.IO("status")) {
                  exchange.SetContractType("MA909")
                  Log(exchange.GetTicker().Last)
                  exchange.SetDirection("buy")
                  Log(exchange.Buy(1000, 1))
                  throw "stop"
              } else {
                  Log("未连接商品期货前置机")
              }
              Sleep(1000)
          }
      }
    
  • 9. Módulo de negociación de futuros de criptomonedas

    El uso de futuros de moneda digital es básicamente el mismo que el uso de futuros de materias primas en [8] arriba.

    • Tomando OKEX como ejemplo, el código del contrato puede ser:

      • esta_semana : esta semana
      • next_week : la próxima semana
      • cuarto: cuarto
      • swap: perpetuo
    • BitMEX :

      • XBTUSD
      • ETHUSD
    • Configuración del módulo de apalancamiento

    Módulo de visualización para construir estrategias comerciales - Avanzado

    Se utiliza para establecer el apalancamiento para futuros de monedas digitales.

      # 注意 : 回测不支持。
    

    Como en la estrategia de JavaScript:

      function main () {
          exchange.SetMarginLevel(10)
      }
    

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!