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

Explicación detallada de la configuración de la estrategia de negociación cuantitativa de moneda digital

Creado el: 2019-09-02 09:39:59, Actualizado el: 2024-12-17 20:42:42
comments   2
hits   4296

Explicación detallada de la configuración de la estrategia de negociación cuantitativa de moneda digital

Explicación detallada de la configuración de la estrategia de negociación cuantitativa de moneda digital

Cuando recién comienza a diseñar estrategias de negociación cuantitativa de monedas digitales, a menudo tiene varios requisitos de estrategia. Sin importar el lenguaje o la plataforma que use, encontrará requisitos de diseño de estrategia para diversas situaciones. Por ejemplo, a veces es necesario rotar múltiples variedades, a veces es necesario cubrir múltiples plataformas y, a veces, es necesario comercializar diferentes variedades simultáneamente, etc. Compartamos algunas experiencias de diseño a la hora de implementar requisitos estratégicos. La plataforma de aprendizaje todavía utiliza la plataforma de comercio cuantitativo Inventor (https://www.fmz.com), y el mercado seleccionado es el mercado de divisas digitales.

  • ### Diseño de estrategia “multidivisa”

Este tipo de demanda a menudo requiere escribir una estrategia de tendencia de múltiples variedades, una estrategia de cuadrícula de múltiples variedades, etc., lo que requiere la ejecución iterativa de la lógica de la estrategia utilizando diferentes pares comerciales. Generalmente diseñado así:

  function Process (symbol) {
      exchange.IO("currency", symbol)
      var ticker = _C(exchange.GetTicker)
      Log("已经切换交易对,按照策略逻辑处理交易对 :", symbol, "行情:", ticker)
      // ...
      // ..
      // .
  }  

  function main(){
      var symbols = ["BTC_USDT", "LTC_USDT", "ETH_USDT"]
      while (true) {
          for (var i = 0 ; i < symbols.length; i++) {
              Process(symbols[i])
              Sleep(500)
          }
      }
  }

Configuramos el robot: Explicación detallada de la configuración de la estrategia de negociación cuantitativa de moneda digital

Explicación detallada de la configuración de la estrategia de negociación cuantitativa de moneda digital

Como puede ver, esto permite configurar un objeto de intercambio en el robot, cambiar pares comerciales, obtener condiciones de mercado de diferentes pares comerciales, realizar condiciones de mercado de múltiples variedades y ejecutar bajo una lógica de estrategia. Se puede ver que los tres pares comerciales que definimos: BTC_USDT, LTC_USDT, ETH_USDT, se iteran a su vez en el bucle para obtener la información del mercado. Después de obtener la información del mercado, podemos detectar específicamente la información del mercado y activar la lógica comercial diseñada por la estrategia.

Algunos estudiantes pueden decir: “No me gusta cambiar de pares de operaciones. Me resulta un poco problemático y el diseño de la estrategia no es claro”. De hecho, existen otros métodos de diseño, otro de los cuales presentamos a continuación.

  • ### Configurar múltiples objetos de intercambio para el robot con la misma cuenta de intercambio

Obtenga datos de mercado para diferentes pares comerciales a través de múltiples objetos de intercambio y ejecútelos en la lógica de estrategia iterativa. Por ejemplo, configure el robot de esta manera: configure tres objetos de intercambio para el robot y establezca los pares comerciales en BTC_USDT, LTC_USDT y ETH_USDT respectivamente. Explicación detallada de la configuración de la estrategia de negociación cuantitativa de moneda digital

El objeto de intercambio denominado “OKEX Spot V3 Test” se encuentra en el centro de control, página de configuración de intercambio: Explicación detallada de la configuración de la estrategia de negociación cuantitativa de moneda digital Ya configurado.

Modifique el código porque esta vez agregamos múltiples objetos de intercambio al robot, es decir, los objetos de intercambio con pares comerciales de BTC_USDT, LTC_USDT y ETH_USDT.

  function Process (e) {
      var ticker = _C(e.GetTicker)
      Log("交易所", e.GetName(), "按照策略逻辑处理交易对 :", e.GetCurrency(), "行情:", ticker)
      // ...
      // ..
      // .
  }  

  function main(){
      while (true) {
          for (var i = 0 ; i < exchanges.length; i++) {
              Process(exchanges[i])
              Sleep(500)
          }
      }
  }

Ejecutar el robot: Explicación detallada de la configuración de la estrategia de negociación cuantitativa de moneda digital

Los ejemplos descritos anteriormente tratan sobre cómo cambiar pares comerciales o agregar un objeto de intercambio con múltiples pares comerciales diferentes a una cuenta configurada. Todos se configuran utilizando solo una cuenta de intercambio (usando un intercambio configurado). Entonces, ¿cómo utilizar varias cuentas de intercambio en una estrategia?

  • ### Estrategias para utilizar múltiples cuentas de cambio

Algunas estrategias incluyen, por ejemplo, cobertura entre mercados en múltiples bolsas, estrategias de múltiples cuentas dentro de una sola bolsa, etc.

  • Se configuran varios intercambios, pero son intercambios diferentes. Explicación detallada de la configuración de la estrategia de negociación cuantitativa de moneda digital Por ejemplo, configuré 2 intercambios en la página Centro de control->Intercambio->Agregar intercambio. Puedo acceder a la información de los activos de las cuentas configuradas en estos dos intercambios en la estrategia.

    Explicación detallada de la configuración de la estrategia de negociación cuantitativa de moneda digital

    function main(){
        Log(exchanges[0].GetAccount())    // 打印第一个 交易所对象的账户资产信息,即火币期货 这个交易所的资产信息。
        Log(exchanges[1].GetAccount())    // ... 打印Bit-Z这个交易所的资产信息
    }
    

    Por supuesto, también puedo agregar la configuración de intercambio de la segunda y tercera cuenta a un intercambio.

  • Varias configuraciones de intercambio son el mismo intercambio.

    Por ejemplo, agreguemos otra cuenta de Huobi Futures. Explicación detallada de la configuración de la estrategia de negociación cuantitativa de moneda digital

    Como puede ver, se han configurado dos cuentas del intercambio “Huobi Futures”.

    Explicación detallada de la configuración de la estrategia de negociación cuantitativa de moneda digital

    Al crear una estrategia, aparece un objeto Huobi Futures Exchange en la opción “Modificar configuración” del robot para su selección.

    Explicación detallada de la configuración de la estrategia de negociación cuantitativa de moneda digital

    Por ejemplo, puede tener dos cuentas, una que utilice una estrategia de cuadrícula de vender primero, comprar después (hacia arriba) y la otra que utilice una estrategia de cuadrícula de comprar primero, vender después (hacia abajo).

    A través de los dos ejemplos anteriores

    Aquí está la diferencia entre configurar múltiples objetos de intercambio en el robot y configurar múltiples objetos de intercambio para el robot con la misma cuenta de intercambio:

    A primera vista, esto es algo similar al ejemplo de “Configurar múltiples objetos de intercambio para el robot con la misma cuenta de intercambio” explicado anteriormente, pero hay diferencias. La diferencia es que el ejemplo anterior es una configuración de intercambio, es decir:

    Explicación detallada de la configuración de la estrategia de negociación cuantitativa de moneda digital

    Al configurar el objeto de intercambio en el robot, utilice siempre: Explicación detallada de la configuración de la estrategia de negociación cuantitativa de moneda digital Esta configuración.

    Es solo que las configuraciones del par comercial son diferentes cuando se agrega un objeto de intercambio. Si llama a la función GetAccount, siempre accederá a la información de los activos de la misma cuenta.

    Sin embargo: Explicación detallada de la configuración de la estrategia de negociación cuantitativa de moneda digital Los dos objetos de intercambio de futuros de Huobi configurados de esta manera, aunque ambos son futuros de Huobi, representan cuentas de intercambio diferentes.

  • Haga un buen uso de la configuración de intercambio para facilitar el diseño de estrategias de futuros de monedas digitales.

A veces, al implementar una estrategia de cobertura de contratos de moneda digital, para aprovechar oportunidades comerciales fugaces, muchos escenarios requieren órdenes simultáneas. Sin embargo, debido a que los contratos son diferentes, es necesario cambiar al contrato correspondiente al obtener información del mercado y realizar pedidos. Al utilizar la función exchange.Go para ejecutar simultáneamente funciones de órdenes u obtener información del mercado, no es muy rápido debido a problemas de sincronización. Y el diseño de los contratos de conmutación hace que la lógica no parezca tan simple. Entonces, ¿existe una manera mejor?

¡Por supuesto que hay una manera! Podemos agregar dos objetos de intercambio al robot de acuerdo con la descripción anterior de “Configurar múltiples objetos de intercambio para el robot con la misma cuenta de intercambio”. Explicación detallada de la configuración de la estrategia de negociación cuantitativa de moneda digital Luego, siguiendo con esta configuración de intercambio, agregue otro objeto de intercambio. ¡En ese momento aparecerá un cuadro de aviso! Explicación detallada de la configuración de la estrategia de negociación cuantitativa de moneda digital Una configuración de cuenta de intercambio no puede agregar objetos de intercambio con la misma moneda y par comercial.

¿Qué debo hacer en este caso? ¿Parece que no es posible dejar que el robot de estrategia utilice dos objetos de intercambio y vincule el objeto de intercambio a un código de cuenta de intercambio? ¡Aún hay un camino!

Vamos a “Centro de Control” -> “Intercambio” y agregamos una configuración de intercambio de futuros OKEX.

Explicación detallada de la configuración de la estrategia de negociación cuantitativa de moneda digital

Después de la configuración, haga clic en Guardar.

Explicación detallada de la configuración de la estrategia de negociación cuantitativa de moneda digital

### 「Resaltar」Ahora tenemos dos configuraciones de intercambio, pero se utiliza la misma información de configuración de API KEY.

Explicación detallada de la configuración de la estrategia de negociación cuantitativa de moneda digital

¿Cuales son los beneficios de esto? ¡Por supuesto, al escribir una estrategia, el diseño es muy simple!

  function main(){
      exchanges[0].SetContractType("quarter")        // 设置第一个添加的交易所对象 当前的合约为季度合约
      exchanges[1].SetContractType("this_week")      // 设置第二个添加的交易所对象,当前的合约为当周合约

      while (true) {
          var beginTime = new Date().getTime()       // 记录这次获取行情时起始的时间戳。
          var rA = exchanges[0].Go("GetTicker")      // 创建并发 线程去获取 第一个交易所对象,也就是季度合约的行情数据。
          var rB = exchanges[1].Go("GetTicker")      // 创建并发 线程去获取 第二个交易所对象,也就是当周合约的行情数据。

          var tickerA = rA.wait()                    // 并发的两个线程各自执行自己的任务,这里等待获取数据,A 等待时,B任务也在执行。
          var tickerB = rB.wait()                    // 所以这里看似是顺序执行,实际在底层是并发的。只不过获取的时候是顺序先获取A,在获取B。
          var endTime = new Date().getTime()         // 记录并发获取两个合约行情结束时的时间戳。

          if (tickerA && tickerB) {                  // 如果获取的数据没有问题,执行以下逻辑。
              var diff = tickerA.Last - tickerB.Last // 计算差价
              $.PlotLine("diff", diff)               // 使用画线类库把差价画在图表上。
              if (diff > 500) {                      // 如果差价大于500, 对冲套利(当然设置500 的差价是比较大的,很少见。)
                  // 对冲
                  rA = exchanges[0].Go("Sell", tickerA.Buy, 1)     // 并发线程创建 季度合约下卖单
                  rB = exchanges[1].Go("Buy", tickerB.Sell, 1)     // 并发线程创建 当周合约下买单

                  var idA = rA.wait()           // 等待 返回下单结果,返回的是订单ID
                  var idB = rB.wait()           // ...
              }

              // ...
          }

          LogStatus(_D(), "并发获取两个合约行情耗时:", endTime - beginTime, "毫秒。")    // 显示在状态栏上时间,以便知道程序在执行。
          Sleep(500)
      }
  }

¿Esta estrategia de diseño parece mucho más simple y las ideas mucho más claras?

Operación del disco real: Explicación detallada de la configuración de la estrategia de negociación cuantitativa de moneda digital

Se puede observar que solo se necesitan unos 50 milisegundos para obtener la información del mercado de dos contratos simultáneamente cada vez.