Hemos hecho una retrospección de transacciones en la red con FMZ.

El autor:Y ahora, ¿qué es lo que quieres?, Creado: 2020-10-18 23:56:01, Actualizado:

De vuelta a sus orígenes

Antes había estado buscando herramientas que pudieran analizarlo en tiempo real, y después de investigar un tiempo, vnpy se sintió demasiado molesto para cambiar la interfaz. Por último, volvemos a los documentos de las nuevas guías de FMZ. En la actualidad, la mayoría de los usuarios de Facebook están usando el software de Google para crear sus propias páginas web, y en la actualidad, la mayoría de los usuarios de Twitter están usando el software de Google para crear sus propias páginas web. Por cierto, los artículos de fmz son muy pocos, pero son útiles en una guía para principiantes, y en ese momento solo se les preguntó por correo electrónico para entenderlo.

La primera es que el usuario puede elegir el tiempo de inicio y el tiempo de finalización.img

Para esto hay que hacer parámetros:

imgLa forma en que se siente es muy estúpida, no sé si hay alguna función que se puede iniciar.

self.grid_setting = {
          "min_price": min_price,
          "max_price": max_price,
          "grid_diff": grid_diff,
          "re_diff": grid_diff,
          "total_amount_B": total_amount_B
      }

Los parámetros de configuración de la rejilla: mínimo, precio máximo, intervalo de distribución de la rejilla y intervalo de reajuste de la lista.

Todos estos parámetros son enviados por el usuario.

La función principal del bus es

    def bus(self):
      params = gen_params(self.begin, self.end, self.currency, self.balance, self.stocks)
      task = VCtx(params)
      done = self.train()
      ret = task.Join(True)
      benefit_cal = self.cal_benefit(ret,done)
      result = {}
      result['done'] = done
      result['ret'] = benefit_cal
      return result
  • Obtener la configuración de repetición de fmz con la función gen_params que acabo de obtener
  • Función de entrenamiento para correr
  • Calcula el rendimiento y muestra los registros de transacciones según la estructura de datos devuelta por fmz

La llamada de task.Join ((() terminará la tarea de retrospección y devolverá datos de valor neto. El parámetro Join no transmite True, que devuelve los resultados originales de la retrospección sin analizar, y no puede volver a llamar funciones relacionadas con transacciones o mercados después de finalizar.

A través de la documentación, estoy adivinando lo que significa el resultado de la estrategia.

Se calcula el código de ganancia de datos de FMZ de regreso

  def cal_benefit(self,ret,done):
      #计算相隔多少天
      day_begin =  datetime.datetime.strptime(self.begin, '%Y-%m-%d %H:%M:%S')
      day_end =  datetime.datetime.strptime(self.end, '%Y-%m-%d %H:%M:%S')
      days = (day_end - day_begin).days
      begin = ret.iloc[0].net
      end = ret.iloc[-1].net
      fee = ret.iloc[-1].fee
      #计算一共多少次套利
      df = pd.DataFrame(done)
      #如果没有成交记录
      if len(done) == 0:
          benefit_cal = {}
          benefit_cal['benefit'] = 0
          benefit_cal['count'] = 0
          benefit_cal['fee'] = 0
          benefit_cal['benefit_p'] = 0
          return benefit_cal

      buy_count = len(df[df['type'] == 'buy'])
      sell_count = len(df[df['type'] == 'sell'])
      count = min(buy_count , sell_count)
      benefit = count * self.grid_diff * float(done[0]['amount'])
      benefit_cal = {}
      benefit_cal['benefit']= benefit
      benefit_cal['count']= count
      benefit_cal['fee']= fee
      print(benefit_cal)
      per = benefit / self.total_amount_B * 360 / days
      print(per)
      benefit_cal['benefit_p']= round( per , 4)
      return benefit_cal

Siento un poco de confusión, pero antes voy a hablar de lo que pensamos de nuestra red:

La idea de la inspección de carpetas es la siguiente:

  • Primero inicializamos la rejilla según los parámetros del usuario.
  • La primera lista
  • Verificar el estado de transacción de los pedidos de compra y venta de forma periódica y volver a hacerlos según el pedido de compra y venta.
          while True:
              Sleep(1000 * 60 * 5)
              if 'refreash_data_finish!' != mid.refreash_data():
                  continue
              # 初始化网格
              if not init_flag:
                  cur_price = mid.ticker['Last']
                  grid_list = grid.cal_grid_list(cur_price)
                  init_flag = True

              # 开始挂单
              if not place_flag:
                  grid.place_orders()
                  place_flag = True

              # 开始检查订单状态及时挂单
              grid.check_order_update()
              done = grid.done

Es más o menos así, puede parecer un poco raro al principio.

Esta vez quiero compartir sobre todo para expresar que la velocidad de repetición de fmz en 14 días básicamente puede satisfacer el tiempo de espera del usuario en el frontend, más largo es un poco más lento, es una buena herramienta de repetición cuantitativa como interfaz, ¡Gran!

Sí, esta vez volvemos a promocionar una ola de competencia de transacciones, nuestro equipo de cuantificación de EverWin organizó una competencia de transacciones, para participar gratis. Siempre que todos proporcionen una API de consulta, pueden inscribirse con éxito, como una competencia de dos semanas, nuestro premio también es bueno. Deja un contacto fengye607.


Más.

Las hierbasLo que necesitas es obtener los resultados de las transacciones en tiempo real y luego simularlos. Esto puede ser un poco complicado si solo es un par de transacciones. Puedes intentar escribir tu propio motor de retrospección.