Последние два дня, когда я смотрел на рынок, я случайно обнаружил, что у биткоина есть рынок биткоин STORJ. Это странно, объем сделок очень большой, и частота сделок очень быстрая. На следующем графике конкретной минутной линии K вы можете увидеть, что объем сделок совпадает каждую минуту, а на минутной линии вы можете увидеть длинную сниженную линию.При использовании 1-секундного уровня K-линии в биткоине обнаруживается, что в конце концов, кто-то будет торговать по цене 20 000 STORJ через 5-7 с, без учета затрат, прямо на K-линии, а цена восстановится в кратчайшие сроки. Эта операция, очевидно, была вызвана роботом, порученным Айсбергом. Продаваемая операция длилась очень долго, ее общая сумма оценивается в десятки миллионов долларов, и в большинстве случаев она вызывала скользкие точки до одной тысячной части, что означает, что только сделка скользит, и исполнитель этой стратегии теряет сотни тысяч долларов.
Простой переход от первоначальной высокочастотной стратегии к автоматическому роботу, специально предназначенному для эксплуатации этого безмозгового продавца айсбергов, произошел за несколько минут.
Поскольку рыночная цена продается каждые несколько секунд, нам нужно только найти глубину 10 000 в книге покупок и повесить блок впереди. Так что в этот айсберг продажи, с высокой вероятностью, что рыночный робот будет получать, а в это время сделки очень активны, мгновенное падение цены также вызвало некоторые закупки, то же самое можно повесить и продать блок в порядке бросания, так повторяется операция.
Стратегия выглядит следующим образом: вначале никаких доходов не было напечатано, сегодня днем изменили, выписали доходы, робот, который безумно продает, уже изменил количество каждый раз примерно в 5000, поэтому прошел период оптимальной прибыли. Вначале, вероятно, можно выпить 100-200U в час, ключ - это без риска, низкая стоимость. С этой точки зрения, в свою очередь, поручение айсберга действительно имеет много приемов, если вы напишете стратегию, то потратите несколько десятков минут на FMZ, чтобы написать заказ, чтобы глубоко определить размер и цену заказа, наблюдать за автоматическим размером оплаты, регулировать размер и размер заказа и другие характеристики айсберга, легко сэкономить около десятков тысяч долларов.
Стратегический код очень прост, всего 80 строк. Для новичков, некоторые параметры, такие как точность, уже записаны в программе, и их можно изменить самостоятельно. Параметры, которые необходимы, приведены ниже.
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 мс. Если высокая частота, интервал обучения должен быть немного короче.
ТраваНеудача отмены - это сделка, деньги - это доказательство того, что она работает.