Compartición tardía: Robot de alta frecuencia Bitcoin con 5% de rendimientos diarios en 2014

El autor:- ¿ Por qué?, Creado: 2023-01-17 16:12:15, Actualizado: 2023-09-20 09:27:14

img

Compartición tardía: Robot de alta frecuencia Bitcoin con 5% de rendimientos diarios en 2014

Introducción de la estrategia

La estrategia fue compartida en:https://www.fmz.com/strategy/1088La estrategia es mi estrategia principal desde que comencé con la moneda digital. Después de la mejora y modificación continua, se ha vuelto más complicada, pero la idea principal no ha cambiado. La versión compartida es la versión original sin errores obvios. Es la más simple y clara. No hay gestión de posición. Cada transacción está llena, y no hay reinicio, pero es suficiente para explicar el problema. La estrategia se ejecutó desde agosto de 2014 hasta principios de este año, cuando los cargos de intercambio. Durante el período, la operación fue bastante buena, y el tiempo de pérdida fue muy pequeño. El capital ha aumentado de 200 yuanes a 80 Bitcoin. El proceso específico se puede ver enLa forma de transacción automatizada de la moneda virtualserie de artículos enEl blog de Sina de Xiaocao¿ Qué pasa? La siguiente figura es la curva de retorno de la plataforma OKcoin que he contado específicamente. El capital inicial es de 1000 yuanes. Se puede ver que el capital inicial ha aumentado constantemente. La línea media es que mi estrategia se ha detenido. Más tarde, debido a que la estrategia se ha cambiado a una estrategia de ganancia de moneda, los retornos en RMB fluctúan bruscamente. El proceso específico se describe en el artículo del resumen de dos años de la estrategia de negociación.

img

El siguiente gráfico muestra la curva de los activos totales convertidos en moneda:

img

¿Por qué compartir esta estrategia?

  1. Después de que el intercambio se cargó, casi todas las estrategias de alta frecuencia fueron eliminadas, y la mía no es una excepción.
  2. No he compartido nada desde hace mucho tiempo. Hace mucho que quería escribir este artículo.
  3. Comunicarse y aprender con todos ustedes.

Principio de la estrategia

El principio de esta estrategia es muy simple. Se puede entender como una estrategia de creación de mercado de cuasi alta frecuencia. Es posible que quieras golpear a la gente después de leerlo, ¿puede ganar dinero?! En ese momento, casi todos podían escribirlo. No esperaba que fuera tan efectivo al principio. Se puede ver que debemos prestar atención a la práctica tan pronto como tengamos ideas en mente. En 2014, cuando surgieron los robots Bitcoin, era demasiado fácil escribir estrategias de creación de dinero. Como todas las estrategias de alta frecuencia, esta estrategia también se basa en el libro de pedidos.

img

Podemos ver la orden de compra a la izquierda, mostrando el número de pedidos a diferentes precios, y en el lado derecho está la orden de venta. Se puede imaginar que si alguien quiere comprar Bitcoin, si no quiere esperar y esperar, puede elegir solo tomar la orden. Si tiene un gran número de pedidos, causará un gran número de transacciones para vender la orden y la lista, lo que afectará al precio. Sin embargo, este impacto no continuará. Algunas personas quieren tomar la orden y vender, y el precio probablemente se recuperará en un tiempo muy corto. Por el contrario, es similar a entender que alguien quiere vender monedas. Tomemos como ejemplo la orden pendiente de la figura. Si quieres comprar 5 monedas directamente, el precio alcanzará 10377. En este momento, si alguien quiere vender 5 monedas directamente, el precio alcanzará 10348. La diferencia de precio es el margen de ganancia. La estrategia pendiente de una orden a un precio ligeramente inferior a 10377, como 10376.99, y comprar a un precio ligeramente superior a 10348, como 10348.01. Esto se debe a que si la situación acaba de suceder, obviamente ganará la diferencia. Aunque no será tan perfecto cada vez, las posibilidades de ganar dinero son increíblemente altas, dadas las probabilidades. Explica la operación específica con los parámetros de la estrategia actual. Este parámetro, por supuesto, no está disponible, solo para ilustrar. Buscará un precio con una cantidad acumulada de 8 monedas, aquí es 10377, entonces el precio de venta en este momento es el precio menos 0.01 (la cantidad puede ser aleatoria). Del mismo modo, buscará una cantidad acumulada de 8 monedas, aquí es 10348, entonces el precio de venta en este momento es 10348.01, y la diferencia entre el precio de compra y venta en este momento es 10376.99-10348.01 = 28.98, que es mayor que la diferencia de precio predeterminado de 1.5, por lo que encontrará una orden para esperar la transacción con estos dos precios, si la diferencia de precio es menor que 1.5, también encontrará un precio para buscar una orden, como el precio de apertura más o menos 10, y esperar más (es apropiado seguir la pendiente a través de la profundidad). Además, se observa que esta estrategia solo está relacionada con las órdenes pendientes profundas actuales y no se preocupa por el mercado histórico y su propia transacción histórica.

Explicación adicional

    1. ¿Qué debo hacer si se me acaban el dinero o la moneda? Esta situación es muy común cuando tengo menos dinero. La mayoría de las veces, solo espero un lado del pedido, pero no es un gran problema. De hecho, podemos agregar la lógica de equilibrar moneda y dinero, pero es inevitable perder en el proceso de equilibrio. Después de todo, cada transacción es una cuestión de probabilidad. Elijo esperar a la transacción en un lado. Por supuesto, esto también desperdicia la oportunidad de transacción en el otro lado.
    1. ¿Cómo se gestionan las posiciones? Al principio, todos estaban en plena posición para comprar y vender. Más tarde, se dividieron en diferentes grupos de acuerdo con diferentes parámetros, y no se cerrarían por completo a la vez.
    1. ¿Hay un stop-loss? La estrategia tiene una lógica completa de órdenes de compra y venta. Creo que no hay necesidad de detener la pérdida (que se puede discutir), y también hay la preferencia de la probabilidad. La transacción es una oportunidad, y la pérdida de parada es una lástima.
    1. ¿Cómo adaptarse a la estrategia de ganar dinero? En este momento, los parámetros son simétricos, es decir, las órdenes de venta acumuladas de 8 monedas hacia arriba y las órdenes de compra acumuladas de 8 monedas hacia abajo están ligeramente desequilibradas.
    1. ¿Cómo hacer frente a las pérdidas flotantes? Por supuesto, habrá pérdidas en una sola transacción, como el aumento del precio de la moneda después de la venta y la caída del precio de la moneda después de la compra. Tales pérdidas flotantes no necesitan ser tratadas, porque las transacciones son frecuentes, y es normal para miles de veces cada día. Las pérdidas flotantes son normales, siempre que la probabilidad de ganancia sea mayor.
    1. ¿Cómo prevenir los cisnes negros? Bitcoin tiene mucho tiempo de Cisne Negro, a veces simplemente baja todo el camino, y no hay posibilidad de venderlo. Esta situación no debe ser demasiado preocupante, porque el tiempo de Cisne Negro a menudo trae alta volatilidad, y la estrategia hace exactamente esta parte del dinero, y la pérdida también se puede recuperar rápidamente.

Explicación del código

El código completo se puede ver en mi estrategia compartiendo enwww.fmz.comAquí, sólo se explican las funciones lógicas básicas. Sin ningún cambio, el bot de simulación que viene con botvs en realidad funciona perfectamente. Esta es una estrategia de hace más de tres años, y la plataforma todavía la admite ahora. Es muy emocionante. En primer lugar, para obtener la función de precio de oferta y demanda GetPrice(), debe obtener la información de profundidad de orden. Tenga en cuenta que la longitud de la información de profundidad de orden de diferentes plataformas es diferente, e incluso si se atraviesan todos los pedidos, todavía no hay la cantidad requerida (esta situación será causada por muchos pedidos de red 0.01 en la etapa posterior). La llamada es GetPrice (Buy), que es obtener el precio de compra.

function GetPrice(Type) {
   //_C() is the fault-tolerant function of the platform
    var depth=_C(exchange.GetDepth);
    var amountBids=0;
    var amountAsks=0;
    //Calculate the buy price and get the cumulative depth to a preset price
    if(Type=="Buy"){
       for(var i=0;i<20;i++){
           amountBids+=depth.Bids[i].Amount;
           //The parameter floatamountbuy is the preset accumulated depth
           if (amountBids>floatamountbuy){
               //Add 0.01 to make the order in the front
              return depth.Bids[i].Price+0.01;}
        }
    }
    //Calculate the selling price similarly
    if(Type=="Sell"){
       for(var j=0; j<20; j++){
    	   amountAsks+=depth.Asks[j].Amount;
            if (amountAsks>floatamountsell){
            return depth.Asks[j].Price-0.01;}
        }
    }
    //After traversing the full depth but still not meeting the demand, a price is returned to avoid bugs
    return depth.Asks[0].Price
}

La función principal de cada bucle es onTick(). El tiempo de bucle establecido aquí es de 3.5 segundos. Cada bucle cancelará el pedido original y volverá a suspender el pedido. Cuanto más simple sea, menos encontrará un error.

function onTick() {
    var buyPrice = GetPrice("Buy");
    var sellPrice= GetPrice("Sell");
    //diffprice is the preset spread, if the bid/ask spread is less than the preset spread, it will pend a relatively deeper price.
    if ((sellPrice - buyPrice) <= diffprice){
            buyPrice-=10;
            sellPrice+=10;}
    //Cancel all the original orders. In fact, the new price is often the same as the price of the order. At this time, it is not necessary to cancel.
    CancelPendingOrders() 
    //Get account information to determine how much money and how many currencies are currently in the account.
    var account=_C(exchange.GetAccount);
    //The amount of Bitcoins that can be bought, _N() is the precision function of the platform.
    var amountBuy = _N((account.Balance / buyPrice-0.1),2); 
    //The amount of Bitcoin that can be sold, note that there is no position limit, buy and sell as much as you can, as I had very little money at the time.
    var amountSell = _N((account.Stocks),2); 
    if (amountSell > 0.02) {
        exchange.Sell(sellPrice,amountSell);}
    if (amountBuy > 0.02) {
        exchange.Buy(buyPrice, amountBuy);}
    //Sleep and enter the next loop
    Sleep(sleeptime);
}

El final

El programa entero es de solo más de 40 líneas, lo que parece muy simple, pero también me tomó más de una semana en ese momento, que estaba en la plataforma botvs. La mayor ventaja es que comenzó temprano. En 2014, el mercado estaba dominado por los ladrillos en movimiento, y la estrategia de alta frecuencia de red y captura de inventario no era demasiada, lo que hizo que la estrategia fuera como un pez en el agua. Más tarde, la competencia se hizo cada vez más feroz, y tenía más dinero y enfrenté muchos desafíos. Tuve que hacer cambios importantes cada dos veces para lidiar con ella, pero en general fue sin problemas. Bajo la condición de que la plataforma de negociación no cobraba, es un paraíso para el comercio programado. Porque los inversores minoristas tienden a operar si no hay cargo, proporciona oportunidad para tarifas de alta frecuencia y arbitraje. Todo esto básicamente termina con las tarifas frecuentes de dos vías de 0.1-0.2%. No es solo el problema de la disminución de la actividad del mercado, sino también el problema de que también se les cobra. Sin embargo, todavía hay mucho espacio para estrategias cuantitativas de alta frecuencia.


Relacionados

Más.