Стратегия была разделена:https://www.fmz.com/strategy/1088Стратегия - это моя основная стратегия с тех пор, как я начал с цифровой валюты. После непрерывного совершенствования и модификации она стала более сложной, но основная идея не изменилась. Общая версия - это оригинальная версия без очевидных ошибок. Это самая простая и ясная. Нет управления позициями. Каждая транзакция заполнена, и нет перезапуска, но этого достаточно, чтобы объяснить проблему. Стратегия действовала с августа 2014 года по начало этого года, когда биржа взимала счета. В течение этого периода операция была довольно хорошей, а время потери было очень малым. Капитал увеличился с 200 юаней до 80 биткойнов. Конкретный процесс можно увидеть вСпособ автоматизированной транзакции виртуальной валютысерия статей вБлог Сины Сяочао- Да, конечно. Следующая цифра представляет собой кривую доходности платформы OKcoin, которую я специально подсчитал. Начальный капитал составляет 1000 юаней. Вы можете видеть, что начальный капитал неуклонно увеличивался. Средняя линия заключается в том, что моя стратегия остановилась. Позже, поскольку стратегия была изменена на стратегию получения валюты, доходность в юанях резко колеблется. Конкретный процесс описан в статье двухлетнего резюме стратегии торговли.
Следующая диаграмма показывает кривую общих активов, конвертированных в валюту:
Принцип этой стратегии очень прост. Она может быть понята как квази-высокочастотная стратегия создания рынка. Вы можете захотеть ударить людей после прочтения, может ли она заработать?! В то время почти каждый мог написать ее. Я не ожидал, что она будет настолько эффективной в начале. Можно видеть, что мы должны обратить внимание на практику, как только у нас есть идеи. В 2014 году, когда впервые появились роботы Биткоина, было слишком легко писать стратегии создания денег. Как и все высокочастотные стратегии, эта стратегия также основана на книге заказов.
Мы можем увидеть ордер на покупку слева, показывающий количество заказов по разным ценам, а справа - ордер на продажу. Можно представить, что если кто-то хочет купить Биткойн, если он не хочет ожидать заказа и ждать, он может выбрать только принять заказ. Если у него большое количество заказов, это вызовет большое количество транзакций для продажи заказа и списка, что повлияет на цену. Однако это влияние не будет продолжаться. Некоторые люди хотят принять заказ и продать, и цена, вероятно, восстановится в очень короткие сроки. Возьмем, к примеру, ожидаемый заказ на рисунке. Если вы хотите купить 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, и ждать, чтобы продолжить подбирать (подходит для продолжения следования глубине вниз). Кроме того, отмечается, что эта стратегия связана только с текущими глубокими ожидающимися ордерами и не заботится об историческом рынке и своей собственной исторической сделке. Стратегия также не имеет концепции одиночного убытка. На самом деле, выигрышный показатель одной сделки очень высок.
Полный код можно посмотреть в моем разделе стратегии наwww.fmz.com. Здесь объясняются только основные логические функции. Без каких-либо изменений, бот-симулятор, который поставляется с botvs, на самом деле работает идеально. Это стратегия более трех лет назад, и платформа все еще поддерживает ее сейчас. Это очень трогательно. Во-первых, чтобы получить функцию цены предложения и запроса GetPrice(), вам нужно получить информацию о глубине заказа. Обратите внимание, что длина информации о глубине заказа разных платформ различна, и даже если все заказы пройдены, все равно не существует необходимого количества (эта ситуация будет вызвана многими заказами 0,01 сетки на более позднем этапе).
function GetPrice(Type) {
//_C() is the fault-tolerant function of the platform
var depth=_C(exchange.GetDepth);
var amountBids=0;
var amountAsks=0;
//Calculate the buy price and get the cumulative depth to a preset price
if(Type=="Buy"){
for(var i=0;i<20;i++){
amountBids+=depth.Bids[i].Amount;
//The parameter floatamountbuy is the preset accumulated depth
if (amountBids>floatamountbuy){
//Add 0.01 to make the order in the front
return depth.Bids[i].Price+0.01;}
}
}
//Calculate the selling price similarly
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;}
}
}
//After traversing the full depth but still not meeting the demand, a price is returned to avoid bugs
return depth.Asks[0].Price
}
Основная функция каждой петли - это onTick(). Время петли, установленное здесь, составляет 3,5 с. Каждая петля отменяет исходный заказ и перезагружает заказ. Чем проще, тем меньше она столкнется с ошибкой.
function onTick() {
var buyPrice = GetPrice("Buy");
var sellPrice= GetPrice("Sell");
//diffprice is the preset spread, if the bid/ask spread is less than the preset spread, it will pend a relatively deeper price.
if ((sellPrice - buyPrice) <= diffprice){
buyPrice-=10;
sellPrice+=10;}
//Cancel all the original orders. In fact, the new price is often the same as the price of the order. At this time, it is not necessary to cancel.
CancelPendingOrders()
//Get account information to determine how much money and how many currencies are currently in the account.
var account=_C(exchange.GetAccount);
//The amount of Bitcoins that can be bought, _N() is the precision function of the platform.
var amountBuy = _N((account.Balance / buyPrice-0.1),2);
//The amount of Bitcoin that can be sold, note that there is no position limit, buy and sell as much as you can, as I had very little money at the time.
var amountSell = _N((account.Stocks),2);
if (amountSell > 0.02) {
exchange.Sell(sellPrice,amountSell);}
if (amountBuy > 0.02) {
exchange.Buy(buyPrice, amountBuy);}
//Sleep and enter the next loop
Sleep(sleeptime);
}
Вся программа составляет всего более 40 строк, что кажется очень простым, но в то время мне потребовалось более недели, что было на платформе botvs. Самое большое преимущество заключается в том, что она началась рано. В 2014 году на рынке доминировали движущиеся кирпичи, а высокочастотная стратегия сетки и захвата запасов не было слишком много, что сделало стратегию похожей на рыбу в воде. Позже конкуренция стала все более ожесточенной, и у меня было больше денег и я столкнулся со многими проблемами. Мне приходилось каждый раз вносить серьезные изменения, чтобы справиться с этим, но это было в целом гладко. При условии, что торговая платформа не взимает плату, это рай для запрограммированной торговли. Потому что розничные инвесторы, как правило, работают, если нет платы, это дает возможность для высокочастотных и арбитражных комиссий. Все это в основном заканчивается частотой в два раза 0,1-0,2%. Это не только проблема с Тем не менее, для высокочастотных количественных стратегий все еще есть много возможностей.