Как использовать высокочастотную стратегию 80-линейного кода для эксплуатации безмозговых роботов

Автор:Трава, Создано: 2023-12-24 21:37:45, Обновлено: 2023-12-26 15:40:23

img

Возможности наблюдения

Последние два дня, когда я смотрел на рынок, я случайно обнаружил, что у биткоина есть рынок биткоин STORJ. Это странно, объем сделок очень большой, и частота сделок очень быстрая. На следующем графике конкретной минутной линии K вы можете увидеть, что объем сделок совпадает каждую минуту, а на минутной линии вы можете увидеть длинную сниженную линию.imgПри использовании 1-секундного уровня K-линии в биткоине обнаруживается, что в конце концов, кто-то будет торговать по цене 20 000 STORJ через 5-7 с, без учета затрат, прямо на K-линии, а цена восстановится в кратчайшие сроки. Эта операция, очевидно, была вызвана роботом, порученным Айсбергом. Продаваемая операция длилась очень долго, ее общая сумма оценивается в десятки миллионов долларов, и в большинстве случаев она вызывала скользкие точки до одной тысячной части, что означает, что только сделка скользит, и исполнитель этой стратегии теряет сотни тысяч долларов.img

Простой переход от первоначальной высокочастотной стратегии к автоматическому роботу, специально предназначенному для эксплуатации этого безмозгового продавца айсбергов, произошел за несколько минут.

Стратегические идеи

Поскольку рыночная цена продается каждые несколько секунд, нам нужно только найти глубину 10 000 в книге покупок и повесить блок впереди. Так что в этот айсберг продажи, с высокой вероятностью, что рыночный робот будет получать, а в это время сделки очень активны, мгновенное падение цены также вызвало некоторые закупки, то же самое можно повесить и продать блок в порядке бросания, так повторяется операция.

Стратегические результаты

Стратегия выглядит следующим образом: вначале никаких доходов не было напечатано, сегодня днем изменили, выписали доходы, робот, который безумно продает, уже изменил количество каждый раз примерно в 5000, поэтому прошел период оптимальной прибыли. Вначале, вероятно, можно выпить 100-200U в час, ключ - это без риска, низкая стоимость. С этой точки зрения, в свою очередь, поручение айсберга действительно имеет много приемов, если вы напишете стратегию, то потратите несколько десятков минут на FMZ, чтобы написать заказ, чтобы глубоко определить размер и цену заказа, наблюдать за автоматическим размером оплаты, регулировать размер и размер заказа и другие характеристики айсберга, легко сэкономить около десятков тысяч долларов.

img

Источник стратегии

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

function CancelPendingOrders() {
    var orders = _C(exchange.GetOrders)
    for (var j = 0; j < orders.length; j++) {
        exchange.CancelOrder(orders[j].Id, orders[j])
    }
}

function onexit(){
    CancelPendingOrders()
}

function GetPrice(Type, Depth) {
    var sumAmount = 0
    var checkAmount = Type == "Buy" ? CheckBuyAmount : CheckSellAmount
    var deep = Type == "Buy" ? Depth.Bids : Depth.Asks
    for(var i = 0; i < Math.min(20, deep.length); i++) {
        if(Type == "Buy"  && deep[i].Price == lastBuyPrice && buyId){
            sumAmount += deep[i].Amount - amountBuy //这里要减去自己的挂单
        }else if(Type == "Sell"  && deep[i].Price == lastSellPrice && sellId){
            sumAmount += deep[i].Amount - amountSell
        }else{
            sumAmount += deep[i].Amount
        }
        if(sumAmount >= checkAmount){
            return deep[i].Price
        }
    }
    return deep[19].Price
}

function OnTick() {
    var depth = _C(exchange.GetDepth)
    var buyPrice = _N(Math.min(GetPrice("Buy", depth) + 0.0001, depth.Asks[0].Price-0.0001) , 4) //保证在盘口
    var sellPrice = _N(Math.max(GetPrice("Sell", depth) - 0.0001, depth.Bids[0].Price+0.0001), 4)
    LogStatus('buy_price:'+buyPrice, '  sell price: '+sellPrice)
    if ((sellPrice - buyPrice) < DiffPrice) {
        buyPrice = 0
    }
    if(sellPrice != lastSellPrice && sellId){
        exchange.CancelOrder(sellId);
        sellId = 0
        lastSellPrice = 0
    }
    if(buyPrice != lastBuyPrice && buyId){
        exchange.CancelOrder(buyId);
        buyId = 0
        lastBuyPrice = 0
    }   
    var acc = _C(exchange.GetAccount)
    if(account.Stocks+account.FrozenStocks != acc.Stocks+acc.FrozenStocks){
        LogProfit((acc.Stocks+acc.FrozenStocks)*depth.Bids[0].Price+acc.Balance+acc.FrozenBalance - 2000)
        Log('free '+acc.Stocks, ' lock: '+ acc.FrozenStocks, ' total: ' , (acc.Stocks+acc.FrozenStocks)*depth.Bids[0].Price+acc.Balance+acc.FrozenBalance)
    }
    account = acc
    amountBuy = _N(Math.min(account.Balance / buyPrice - 0.1, Amount), 0)
    amountSell = _N(account.Stocks, 0)
    if (sellPrice > 0 && amountSell > 40 && sellId == 0) {
        sellId = exchange.Sell(_N(sellPrice,4), amountSell)
        lastSellPrice = sellPrice
    }
    if (buyPrice>0 && amountBuy > 40 && buyId == 0) {
        buyId = exchange.Buy(_N(buyPrice,4), amountBuy)
        lastBuyPrice = buyPrice
    }
    Sleep(Interval)
}
var account = {Stocks:0, FrozenStocks:0, Balance:0, FrozenBalance:0}
var buyId = 0
var sellId = 0
var lastBuyPrice = 0
var lastSellPrice = 0
var amountSell = 0
var amountBuy = 0
function main() {
    CancelPendingOrders()
    while (true) {
        OnTick()
    }
}

Больше

контрольный пунктБоже мой, сколько стоит эта тактика бега?

yc123hПрошу прощения, если эта стратегия действует, это означает, что в начале каждого раунда вы часто видите сообщение о неудачах двух заказов до отзыва (т.е. что все купленные и проданные билеты действительны).

ТраваЭто - нулевая плата.

yc123hСпасибо, я также хотел бы попросить вас задать вопрос о параметрах. Как оптимизировать параметры такой высокочастотной стратегии. Например, я посмотрел на вашу стратегию 2014 года, интервал обучения по умолчанию достиг 3500 мс. Если высокая частота, интервал обучения должен быть немного короче.

ТраваНеудача отмены - это сделка, деньги - это доказательство того, что она работает.