
Introducción a la estrategia
Dirección para compartir estrategias:
https://www.fmz.com/strategy/1088
Esta estrategia ha sido mi estrategia principal desde que comencé a operar con monedas virtuales. Se ha vuelto mucho más complicada después de la mejora y modificación continuas, pero la idea principal no ha cambiado. La versión que comparto es la versión inicial sin errores obvios. Es la más simple. Y la versión más clara sin gestión de posiciones. Cada transacción se realiza con una posición completa, sin congelamiento ni reinicio, etc., pero es suficiente para ilustrar el problema.
La estrategia se desarrolló desde agosto de 2014 hasta que el exchange comenzó a cobrar tarifas a principios de este año. Funcionó bastante bien durante ese período, con muy pocas pérdidas. Los fondos aumentaron de los 200 yuanes iniciales a 80 bitcoins. El proceso específico se puede verEl blog de Sina de XiaocaoadentroEl camino hacia el comercio automatizado de criptomonedasSerie de artículos.
La siguiente figura es la curva de ganancias de la plataforma OKcoin que he contado específicamente. El capital inicial es de 1.000 yuanes. Puedes ver que el dinero inicial ha aumentado de manera constante. La línea recta en el medio es cuando mi estrategia se detuvo. Más tarde, debido a que el La estrategia se cambió a una estrategia de obtención de monedas, denominadas en RMB. Los rendimientos fluctúan drásticamente. El proceso específico esResumen de dos años de trading estratégicoHay una descripción en el artículo.
La siguiente figura es la curva de activos totales convertidos a moneda:

¿Por qué compartir esta estrategia?
Principios de la estrategia
El principio de esta estrategia es extremadamente simple y puede entenderse como una estrategia de creación de mercado de alta frecuencia. Después de leer esto, es posible que desee atacar a alguien, porque esto puede generar dinero y casi cualquier persona podría haberlo escrito en ese momento. tiempo. Al principio no esperaba que fuera tan efectivo. Demuestra que si tienes una idea en mente, debes ponerla en práctica rápidamente y puedes encontrarte con sorpresas inesperadas. En 2014, cuando surgieron los primeros robots de Bitcoin, era demasiado fácil escribir estrategias rentables.
Como todas las estrategias de alta frecuencia, esta estrategia también se basa en la cartera de órdenes. La siguiente figura muestra la distribución de órdenes de una bolsa de Bitcoin típica.
Puede ver que a la izquierda están las órdenes de compra, mostrando el número de órdenes pendientes a diferentes precios, y a la derecha están las órdenes de venta. Es concebible que si una persona quiere comprar Bitcoin, si no quiere hacer un pedido y esperar, solo puede optar por aceptar el pedido. Si tiene muchos pedidos, provocará una gran cantidad de pedidos de venta. que se ejecute, lo que provocará un impacto en el precio, pero este impacto generalmente no durará para siempre. Si continúa, y todavía hay personas que quieren tomar la orden y vender, el precio probablemente se recuperará en muy poco tiempo. Por el contrario, Es similar si alguien quiere vender la moneda.
Tomemos como ejemplo la orden pendiente de la figura. Si desea comprar 5 monedas directamente, el precio alcanzará 10377. En este momento, si alguien desea vender 5 monedas directamente, el precio alcanzará 10348. Este espacio es el de ganancias. Espacio. La estrategia será colocar una orden a un precio ligeramente inferior a 10377, como 10376,99, y comprar a un precio ligeramente superior a 10348, como 10348,01. Si se da la situación actual, obviamente ganarás la diferencia. Aunque no siempre será perfecto, debido al efecto de la probabilidad, las posibilidades de ganar dinero son en realidad sorprendentemente altas.
Vamos a explicar las operaciones específicas con los parámetros de la estrategia actual. Por supuesto, este parámetro ya no se puede utilizar, es solo una explicación. Buscará el precio con una orden de venta acumulada de 8 monedas, que aquí es 10377. El precio de venta en este momento es este precio menos 0,01 (la cantidad negativa puede ser aleatoria). De manera similar, buscará el precio con una orden de venta acumulada de 8 monedas, que aquí es 10377. orden de compra acumulada de 8 monedas, aquí es 10348, entonces el precio de venta en este momento es 10348.01, y la diferencia entre los precios de compra y venta es 10376.99-10348.01=28.98, que es mayor que la diferencia de 1.5 preestablecida por la estrategia. Luego, haga un pedido a estos dos precios y espere la transacción. Si la diferencia de precio es menor a 1,5, también buscaremos un precio para hacer un pedido, como el precio de mercado más o menos 10, esperando una fuga. (sería más apropiado seguir buscando más profundidad).
Tenga en cuenta también que esta estrategia solo está relacionada con la profundidad actual de las órdenes pendientes y no se preocupa por las condiciones históricas del mercado ni por sus propias transacciones históricas. La estrategia tampoco tiene el concepto de una sola pérdida. De hecho, la tasa de ganancia única es muy alto
Explicación adicional
Explicación del código
Para ver el código completo, puedes consultar mi estrategia compartida en www.fmz.com. Aquí solo explicaré las funciones lógicas básicas. Sin ningún cambio, el disco de simulación que viene con los botvs funciona con total normalidad. Esta es una estrategia de hace más de 3 años y la plataforma todavía la admite hasta ahora. Es muy conmovedor. Primero, necesitamos usar GetPrice() para obtener el precio de oferta y demanda. Necesitamos obtener la información de profundidad de la orden. Tenga en cuenta que las longitudes de la información de profundidad de la orden de las diferentes plataformas son diferentes, e incluso si se recorren todas las órdenes, aún hay no se requiere cantidad (en la etapa posterior, se generarán muchos pedidos de cuadrícula 0.01), lo que conduce a esta situación; la llamada es GetPrice(‘Buy’) para obtener el precio de compra.
function GetPrice(Type) {
//_C()是平台的容错函数
var depth=_C(exchange.GetDepth);
var amountBids=0;
var amountAsks=0;
//计算买价,获取累计深度达到预设的价格
if(Type=="Buy"){
for(var i=0;i<20;i++){
amountBids+=depth.Bids[i].Amount;
//参数floatamountbuy是预设的累计深度
if (amountBids>floatamountbuy){
//稍微加0.01,使得订单排在前面
return depth.Bids[i].Price+0.01;}
}
}
//同理计算卖价
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;}
}
}
//遍历了全部深度仍未满足需求,就返回一个价格,以免出现bug
return depth.Asks[0].Price
}
La función principal de cada bucle es onTick(). El tiempo del bucle se establece en 3,5 s. Cada bucle cancelará el pedido original y realizará un nuevo pedido. Cuanto más simple sea, menos probabilidades habrá de que se produzcan errores.
function onTick() {
var buyPrice = GetPrice("Buy");
var sellPrice= GetPrice("Sell");
//diffprice是预设差价,买卖价差如果小于预设差价,就会挂一个相对更深的价格
if ((sellPrice - buyPrice) <= diffprice){
buyPrice-=10;
sellPrice+=10;}
//把原有的单子全部撤销,实际上经常出现新的价格和已挂单价格相同的情况,此时不需要撤销
CancelPendingOrders()
//获取账户信息,确定目前账户存在多少钱和多少币
var account=_C(exchange.GetAccount);
//可买的比特币量,_N()是平台的精度函数
var amountBuy = _N((account.Balance / buyPrice-0.1),2);
//可卖的比特币量,注意到没有仓位的限制,有多少就买卖多少,因为我当时的钱很少
var amountSell = _N((account.Stocks),2);
if (amountSell > 0.02) {
exchange.Sell(sellPrice,amountSell);}
if (amountBuy > 0.02) {
exchange.Buy(buyPrice, amountBuy);}
//休眠,进入下一轮循环
Sleep(sleeptime);
}
Cola
El programa completo tiene solo unas 40 líneas y parece muy simple, pero me llevó más de una semana completarlo, y eso fue en la plataforma botvs. La mayor ventaja es que empecé pronto. En 2014, el mercado estaba dominado por el arbitraje y no había muchas redes de alta frecuencia ni posiciones de captura, lo que hizo que la estrategia fuera como un pato en el agua. Más tarde, la competencia inevitablemente se hizo cada vez mayor. Cada vez hay más desafíos por delante y tenemos que hacer cambios importantes de vez en cuando para afrontarlos, pero en general todo va bien. Cuando la plataforma de negociación no cobra comisiones de gestión, es un paraíso para el comercio programático. Los inversores minoristas se inclinan a operar porque no cobran comisiones de gestión, lo que proporciona espacio para la alta frecuencia y el arbitraje. Todo esto se consigue básicamente con el 0,1 -0,2% Las comisiones por transacciones bidireccionales han llegado a su fin. No se trata solo de una cuestión de cobro, sino también de una disminución de la actividad general del mercado. Sin embargo, todavía hay mucho espacio para estrategias cuantitativas que no requieren altas frecuencias.