Robô de estratégia de alta frequência Bitcoin em 2014

Autora:Ervas daninhas, Data: 21-10-2014 22:58:44
Tags:Alta frequência

Introdução à estratégia

A estratégia de compartilhamento de endereços:https://www.fmz.com/strategy/1088Esta estratégia é a minha principal estratégia desde que fiz a moeda virtual, depois de ser constantemente aperfeiçoada e modificada, completou-se muito, mas a ideia principal não mudou. Esta versão compartilhada é a versão inicial sem erros óbvios, é simples e clara, sem gerenciamento de posições, está cheia a cada transação, não há reinicialização após a morte do cartão, etc., mas também é suficiente para explicar o problema. A estratégia foi executada a partir de agosto de 2014 até o início deste ano, quando as taxas de transação foram cobradas pela bolsa. Durante esse período, a operação foi boa e os prejuízos foram raros. Os fundos correram de US $ 200 iniciais para US $ 80 Bitcoins.O blogue do SinaíNão.O caminho para transações automatizadas de moedas virtuaisA série de artigos.

Por que compartilhar essa estratégia?

A primeira é que, depois de cobrarem as taxas, quase todas as estratégias de alta frequência foram eliminadas, a minha não é uma exceção. 2. Não compartilho nada há muito tempo, queria escrever este artigo há muito tempo. 3. Compartilhe e aprenda com todos.

Princípios da estratégia

O princípio da estratégia é extremamente simples e pode ser entendido como uma estratégia de mercado de quase alta frequência, você pode querer bater alguém depois de ver, isso pode ganhar dinheiro, então quase qualquer um pode escrever. Eu não esperava que fosse tão eficaz, e parece que há uma idéia de apressar a prática, dizendo que não há necessariamente surpresas. Como todas as estratégias de alta frequência, esta estratégia é baseada em um livro de pedidos.imgPode-se ver no lado esquerdo o pagamento, mostrando o número de pedidos pendurados de diferentes preços, no lado direito o pedido de venda. Pode-se imaginar que se uma pessoa quiser comprar Bitcoin, se não quiser pendurar o pedido de espera, só pode optar por comer o pedido, se ele tiver um número maior de pedidos de venda, isso fará com que o pedido de venda transacione um grande número de transações, causando um choque no preço, mas esse choque geralmente continua, e alguém não quer comer o pedido de venda, o preço provavelmente irá se recuperar em um curto período de tempo, e, por sua vez, alguém entenderá que vender o dinheiro é semelhante. A estratégia é a de comprar um preço um pouco abaixo de 10377, como 10376.99, e comprar um pouco acima de 10348, como 10348.01, o que, se o que acabamos de ver acontecer, obviamente fará a diferença. Embora nem sempre seja tão perfeito, as chances de ganhar dinheiro são realmente surpreendentes sob a ação da probabilidade. Para explicar a operação específica com os parâmetros da estratégia agora, este parâmetro, é claro, não pode ser usado, apenas para uma explicação. Ele vai procurar para cima o preço de um pedido de venda acumulado de 8 centavos, aqui é 10377, então o preço de venda neste momento é este preço menos 0.01 (menos quanto pode ser aleatório), o mesmo para baixo para encontrar um pedido de compra acumulado pendurado para 8 centavos, aqui é 10348, então o preço de venda neste momento é 10348.01, então o diferencial do preço de venda é 10376.99-10348.01 = 28.98, maior do que o diferencial previsto pela estratégia, 1,5, para que se os dois preços forem entregues, o preço é menor que 1,5, também vai encontrar um preço para fazer o pedido de venda, como o preço de venda, 10, mais o preço de espera, adicionando o buraco.

Mais informações

  1. O que fazer sem dinheiro ou moedas? Essa situação é muito comum quando eu tenho menos dinheiro, a maioria das vezes apenas uma folha pendurada de um lado, mas não é um grande problema. Na verdade, pode-se adicionar a lógica do equilíbrio monetário, mas no processo de equilíbrio, inevitavelmente há perdas, afinal, cada transação é uma especulação de probabilidade.
  2. Como é gerenciado o cargo? No começo, as compras e vendas eram lotadas, mas depois foram divididas em diferentes grupos de acordo com diferentes parâmetros, não sendo feitas de uma só vez.
  3. Não há parada? A estratégia tem a lógica completa de uma lista de compras e vendas, eu acho que não há necessidade de um stop loss (que pode ser discutido), e também há a especulação de probabilidade, a transação é uma oportunidade, o stop loss é lamentável.
  4. Como adaptar a estratégia para o Bitcoin? O parâmetro é simétrico, ou seja, o pedido de venda acumulado de 8 moedas para cima e o pagamento acumulado de 8 moedas para baixo, um pouco desequilibrado, por exemplo, o pedido de venda acumulado de 15 moedas para cima torna a oportunidade de venda de moedas mais difícil, há uma maior probabilidade de voltar a um preço mais baixo, o que significa que a moeda será trocada e, por sua vez, ganhar dinheiro. Na verdade, a estratégia anterior funciona assim, moedas e dinheiro aumentam.

Descrição do código

O código completo pode ser visto no site www.fmz.com, onde só explico as funções lógicas do núcleo. O primeiro é obter a função GetPrice, que precisa obter informações sobre a profundidade do pedido, observe que o comprimento da informação sobre a profundidade do pedido de diferentes plataformas é diferente e que, mesmo depois de percorrer todos os pedidos, ainda não há a quantidade necessária.

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
}

A função principal de cada ciclo é onTick (), onde o tempo de ciclo é de 3,5 s, e cada ciclo revogará o único original e o reencaminhará.

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);
}

Cauda

Em 2014, o mercado era dominado por movimentos, grades e frequências elevadas de roubos, o que tornava as estratégias como peixe com água, depois a competição inevitavelmente se tornava mais intensa, meu dinheiro também crescia, os desafios eram mais e mais, muitas mudanças maiores a serem feitas a cada intervalo de tempo, mas no geral tudo corria bem. Mas há muito espaço para uma estratégia de quantificação que não precise de alta frequência.


/*
就是我刚开始编写机器人的源代码,几乎没有改动,参数也是原来的参数。这个版本的程序有许多
需要改进的地方,但即使如此,它也当时表现除了惊人的盈利能力,在我本金不多时,不加杠杆平
均每天盈利在5%左右。当然无论从哪一方面,它都不适应今天的市场。
我同时也发了一篇文章在社区,大家可以看看。
by 小草
*/

//稍微改了一下,用了平台的容错函数_C(),和精度函数_N().
//取消全部订单
function CancelPendingOrders() {
    var orders = _C(exchange.GetOrders);
    for (var j = 0; j < orders.length; j++) {
          exchange.CancelOrder(orders[j].Id, orders[j]);}
}

//计算将要下单的价格
function GetPrice(Type,depth) {
    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
}
 
function onTick() {
    var depth=_C(exchange.GetDepth);
    var buyPrice = GetPrice("Buy",depth);
    var sellPrice= GetPrice("Sell",depth);
    //买卖价差如果小于预设值diffprice,就会挂一个相对更深的价格
    if ((sellPrice - buyPrice) <= diffprice){
            buyPrice-=10;
            sellPrice+=10;}
    //把原有的单子全部撤销,实际上经常出现新的价格和已挂单价格相同的情况,此时不需要撤销
    CancelPendingOrders() 
    //获取账户信息,确定目前账户存在多少钱和多少币
    var account=_C(exchange.GetAccount);
    //可买的比特币量
    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);
}
    
function main() {
    while (true) {
        onTick();
    }
}

Relacionados

Mais.

GuohwaAgora, algumas casas de câmbio parecem ter algumas moedas gratuitas, é possível fazer isso?

a624587332O Bitcoin é uma transação de BTC em tempo real que não tem taxas de processamento e pode ser feita novamente.

AbcdsfasdfhzwEu vi no programa que não vendeu o código depois de ter comprado, não vendeu e não comprou.

tempoPergunte-me por que não funciona agora?

BijiasuoFaça um sinal e espere por uma versão melhorada.

QuinergMuito obrigada por compartilhar, muito útil. Esperamos mais intercâmbios de pensamentos tão profundos. Obrigado, obrigado!

LogaA sério.