В процессе загрузки ресурсов... загрузка...

Простой биткоин 2014 года, высокочастотный стратегический робот

Автор:Трава, Дата: 21-10-2014 22:58:44
Тэги:Высокочастотные

Введение стратегии

Поделиться стратегией:https://www.fmz.com/strategy/1088Эта стратегия была моей основной стратегией с тех пор, как я сделал виртуальную валюту. После постоянных усовершенствований и модификаций, многое усложнилось, но основная идея не изменилась. Эта версия, которую я поделился, была первоначальной версией без очевидных ошибок, наиболее простой и ясный, без управления позициями, полный баланс каждой сделки, без перезагрузки после смерти карты и т. Д., но также достаточно, чтобы объяснить проблему. Стратегия действовала с августа 2014 года до начала этого года, когда биржа взимала с нее платежи.Сина-Блог маленькой травыСредиПуть к автоматизированной валютеСерия статей.

Почему мы должны делиться этой стратегией?

1. после того, как биржа взимает с нее платеж, она убивает практически все высокочастотные стратегии, не исключая мою. 2. Я давно ничего не делился, я хотел написать эту статью. 3. Обмениваться знаниями и учиться вместе.

Принципы стратегии

Эта стратегия чрезвычайно проста, и ее можно понять как стратегию рыночной торговли с высокой частотой, которую вы можете посмотреть, чтобы выиграть деньги. Я даже не ожидал, что она будет настолько эффективной. Я не ожидал, что это будет так эффективно. Как и все высокочастотные стратегии, эта стратегия основана на ордерной книге.imgВы можете видеть на левой стороне платежи, показывающие количество заказов по разным ценам, а на правой - продажи. Можно представить, что если человек хочет купить биткоин, если он не хочет ждать, он может выбрать только купить, если у него больше, это приведет к большому количеству сделок с продажами, что вызовет удар по цене, но этот удар, как правило, продолжается, и кто-то не хочет купить, и цена, скорее всего, восстановится в очень короткие сроки. Например, если прямо купить 5 монет, то цена достигнет 10377, тогда как если кто-то напрямую продаст 5 монет, то цена достигнет 10348. Это пространство является пространством прибыли. Стратегия будет записываться на цене чуть ниже 10377, например 10376.99, и покупаться на цене чуть выше 10348, например 10348.01, что, если это произойдет, очевидно, приведет к разнице. Для объяснения конкретных операций с параметрами стратегии сейчас, этот параметр, конечно, не может быть использован, только в качестве указания. Он будет искать вверх суммарное количество заказов на 8 копеек, здесь 10377, то цена продажи в это время будет такой же, как эта цена минус 0.01 (как минимум может быть случайным), то же самое и вниз искать суммарные заказы на 8 копеек, здесь 10348, то цена продажи в это время будет 10348.01, тогда разница цены покупки и продажи будет 10376.99-10348.01 = 28.98, большая, чем прогнозируемая разница цены стратегии 1.5, так что если эти две цены будут поставлены, то цена будет меньше 1.5, также будет искать цену для обмена заказов, например, дисковая цена 10, плюс ожидание пробелов.

Дополнительная информация

  1. Что делать без денег или монет? Это очень распространено в условиях, когда у меня меньше денег, и в большинстве случаев только один лист висит на одной стороне, но это не большая проблема. На самом деле можно присоединиться к логике баланса денег, но в процессе баланса неизбежно возникают потери, ведь каждая сделка является вероятностью, и я предпочитаю оставаться на одной стороне, ожидая сделки, и, конечно же, это также тратит возможности сделки на другой стороне.
  2. Как управляется позиция? Вначале сделки были полными, а затем были разделены на различные группы по разным параметрам, и не были полностью завершены.
  3. Не прекратится ли это? Я считаю, что нет необходимости в остановке потерь (можно обсудить), есть вероятность, что сделка - это шанс, остановка потерь, к сожалению.
  4. Как изменить стратегию на криптовалюту? Параметры в данном случае симметричны, то есть суммарная продажа 8 копеек вверх, суммарная оплата 8 копеек вниз, немного неуравновешенная, например, суммарная продажа 15 копеек вверх, что делает продажу более сложной, есть большая вероятность, что она будет возвращена по более низкой цене, что приведет к выкупу монеты и, в свою очередь, заработает деньги.

Кодовые инструкции

Полный код можно увидеть на моем сайте www.fmz.com, где я расскажу только о ключевых логических функциях. Во-первых, требуется получить информацию о глубине ордера, обратите внимание на разную длину информации о глубине ордера на разных платформах, а также на ситуацию, когда даже после прохождения всех ордеров не хватает требуемого количества (что приводит к этой ситуации в последующем, когда многие сетевые вывески 0.01 приведут к этой ситуации).

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
}

Главная функция каждого цикла onTick ((), где время цикла определено в 3,5 с. Каждый цикл отменяет оригинальный блок и перевешивает, чем проще, тем меньше ошибок.

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

Хвост

В 2014 году на рынке было не так много перемещений, сетей и высокой частоты грабежей, что делало стратегию похожей на рыбу, а затем конкуренция неизбежно становилась все более ожесточенной, у меня было все больше денег, вызовов, которые приходилось решать каждые несколько месяцев, но в целом все было хорошо. В случае, когда торговые платформы не взимали платежи, это был рай для программированных сделок, потому что не взимали платежи за пользователей, работали с высокой частотой и удобствами. Но есть много возможностей для количественной стратегии, которая не требует высокой частоты.


/*
就是我刚开始编写机器人的源代码,几乎没有改动,参数也是原来的参数。这个版本的程序有许多
需要改进的地方,但即使如此,它也当时表现除了惊人的盈利能力,在我本金不多时,不加杠杆平
均每天盈利在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();
    }
}

Связанные

Больше

ГуохуаСейчас некоторые биржи выглядят так, как будто часть монет не требует оплаты за обслуживание.

a624587332Если бы Bitcoin был бесплатным, можно ли было бы его использовать?

abcdsfasdfhzwЯ смотрю на программу, где покупают, но не продают код, продают, но не покупают.

времяПочему это не работает сейчас? Есть ли какая-то другая полезная стратегия?

БиджасуоСделайте знак и ждите улучшенную версию.

КиннергЯ очень благодарен, что поделился этим, это очень полезно. Я надеюсь, что мы сможем поделиться еще такими глубокими мыслями. Спасибо, спасибо!

ЛогаСделайте это.