Рады представить Вашему вниманию очередной продукт линейки 1B BOT. Мы постарались реализовать многие пожелания пользователей версии Lite.
1B BOT PRO получил следующие возможности :
1. Встроенный язык программирования
Pascal (с поддержкой ООП).
2. Отложенные ордера.
3. Межбиржевой арбитраж.
4. Внутрибиржевой арбитраж
5. Поддержка более 10 криптовалютных бирж и все возможности версии LITE(Btc-e.com,Cryptsy.com,Bitstamp.net,GOC.IO,Bter.com,Bittrex.com,Cex.IO,Mintpal.com,BTCChina.com,Cryptonit.net).
В версии PRO имеется встроенный компилятор (очень быстрый). Теперь можно описать практически все. В отличии от Lite версии которая ввиду простого написания правил имеет ограничения по написанию технического характера, в новом боте их нет.
Немного технических данных для пользователей пишущих стратегии самостоятельно:
В новой версии за торговлю отвечает предопределенный класс
TBaseStrategy. Этот класс имеет 9 предопределенных процедур(список будет расширятся по мере обновлений бота):
type
TTradeStrategy = class(TBaseStrategy)
public
procedure OnCreate;override;
procedure OnDestroy;override;
procedure CanBuy(var RCanBuy:boolean; var RAmnt, RPrice:Double);override;
procedure CanSell(var RCanSell:boolean; var RAmnt, RPrice:Double);override;
procedure CanSellMax(var RCanSellMax:boolean; var RAmnt, RPrice:Double);override;
procedure OnSaveState();override;
procedure onloadState();override;
procedure OnSendData();override;
function CanCancelOrder(AOrder:TOrder):boolean;override;
end;
begin
end.
При запуске бота создается экземпляр этого класса. Вы можете переопределять процедуры под себя.
procedure OnCreate; - вызывается ботом единоразово при запуске.
procedure OnDestroy; - вызывается ботом единоразово при закрытии.
procedure CanBuy(var RCanBuy:boolean; var RAmnt, RPrice:Double); - вызывается вместе с обновлением данных, аналог таблицы покупки в версии Lite (выставляет ордер если RCanBuy = True)
procedure CanSell(var RCanSell:boolean; var RAmnt, RPrice:Double); - вызывается вместе с обновлением данных, аналог таблицы продажи от минимальной партии к максимальной в версии Lite (выставляет ордер если RCanSell = True)
procedure CanSellMax(var RCanSellMax:boolean; var RAmnt, RPrice:Double); - вызывается вместе с обновлением данных, аналог таблицы продажи SELL MAX в версии Lite (выставляет ордер если RCanSellMax = True)
Для межбиржевого и внутрибиржевого арбитража используется следующий метод :
procedure OnSendData(); - Процедура для обмена данными с другими ботами PRO. Вызывается по умолчанию каждую секунду.
В настройке каждого бота есть вкладка Listener.
В этой вкладке указывается имя текущего бота PRO и имена ботов PRO от которых он будет получать данные.
После установки настроек просто указываете в этой процедуре какие данные ретранслировать.
Пример ( код процедуры на боте LTC/USD передает другим ботам свои цены тикера и расчет цены по биржевому стакану при покупке / продаже на определенный объем) :
procedure TTradeStrategy.OnSendData();
begin
OneOperationVolume :=ReadBotDouble('BTCLTC', 'OneOperationVolume'); // Считываем объем покупки с бота настроенного на пару BTC/LTC
WriteDouble('buy', OBCalcPriceIfBuy(OneOperationVolume)); // Передаем другим ботам цену по стакану LTC/USD при покупке объема OneOperationVolume
WriteDouble('sell', OBCalcPriceIfSell(OneOperationVolume)); // Передаем другим ботам цену по стакану LTC/USD при продаже объема OneOperationVolume
WriteDouble('buyTicker', currTicker.buy); // передаем другим ботам цену покупки по тикеру LTC/USD
WriteDouble('sellTicker', currTicker.sell); // передаем другим ботам цену продажи по тикеру
end;
С использованием такого подхода получился легко масштабируемый арбитражный продукт. Причем абсолютно все равно одна это биржа или разные.
Пример работы стратегии по арбитражу(15 ботов по всем основным парам биржи BTC-e, стратегия автоматически строит все возможные цепочки пар вход по USD выход в USD):
Примеры цепочек из стратегии :
2014-08-31 23 38 48 - ******** NMCUSD ->NMCBTC ->BTCUSD ********
2014-08-31 23 38 04 - Profit = 0.04966928
2014-08-31 23 38 04 - Amount BTCUSD = 100.04966928
2014-08-31 23 38 04 - Amount NMCBTC = 0.20885452
2014-08-31 23 38 04 - Amount NMCUSD = 93.01025163
2014-08-31 23 38 04 - ******** NMCUSD ->NMCBTC ->BTCUSD ********
2014-08-31 23 38 03 - Profit = 0.04966928
2014-08-31 23 38 03 - Amount BTCUSD = 100.04966928
2014-08-31 23 38 03 - Amount NMCBTC = 0.20885452
2014-08-31 23 38 03 - Amount NMCUSD = 93.01025163
2014-08-31 23 38 03 - ******** NMCUSD ->NMCBTC ->BTCUSD ********
2014-08-31 23 20 27 - Profit = 0.62229095
2014-08-31 23 20 27 - Amount USDRUR = 100.62229095
2014-08-31 23 20 27 - Amount BTCRUR = 4 063.20473474
2014-08-31 23 20 27 - Amount BTCUSD = 0.20878705
2014-08-31 23 20 27 - ******** BTCUSD ->BTCRUR ->USDRUR ********
2014-08-31 23 20 26 - Profit = 0.62229095
2014-08-31 23 20 26 - Amount USDRUR = 100.62229095
2014-08-31 23 20 26 - Amount BTCRUR = 4 063.20473474
2014-08-31 23 20 26 - Amount BTCUSD = 0.20878705
2014-08-31 23 20 26 - ******** BTCUSD ->BTCRUR ->USDRUR ********
2014-08-31 23 20 25 - Profit = 0.62229095
2014-08-31 23 20 25 - Amount USDRUR = 100.62229095
2014-08-31 23 20 25 - Amount BTCRUR = 4 063.20473474
2014-08-31 23 20 25 - Amount BTCUSD = 0.20878705
2014-08-31 23 20 25 - ******** BTCUSD ->BTCRUR ->USDRUR ********
2014-08-31 22 58 04 - Profit = 0.00344723
2014-08-31 22 58 04 - Amount BTCUSD = 100.00344723
2014-08-31 22 58 04 - Amount LTCBTC = 0.20919385
2014-08-31 22 58 04 - Amount LTCUSD = 20.73324212
2014-08-31 22 58 04 - ******** LTCUSD ->LTCBTC ->BTCUSD ********
2014-08-31 22 58 03 - Profit = 0.00344723
2014-08-31 22 58 03 - Amount BTCUSD = 100.00344723
2014-08-31 22 58 03 - Amount LTCBTC = 0.20919385
2014-08-31 22 58 03 - Amount LTCUSD = 20.73324212
2014-08-31 22 58 03 - ******** LTCUSD ->LTCBTC ->BTCUSD ********
2014-08-31 22 58 02 - Profit = 0.00344723
2014-08-31 22 58 02 - Amount BTCUSD = 100.00344723
2014-08-31 22 58 02 - Amount LTCBTC = 0.20919385
2014-08-31 22 58 02 - Amount LTCUSD = 20.73324212
2014-08-31 22 58 02 - ******** LTCUSD ->LTCBTC ->BTCUSD ********
2014-08-31 22 57 10 - Profit = 0.14231572
2014-08-31 22 57 10 - Amount BTCUSD = 100.14231572
2014-08-31 22 57 10 - Amount LTCBTC = 0.2094415
2014-08-31 22 57 10 - Amount LTCUSD = 20.73727452
2014-08-31 22 57 10 - ******** LTCUSD ->LTCBTC ->BTCUSD ********
2014-08-31 22 57 09 - Profit = 0.14231572
2014-08-31 22 57 09 - Amount BTCUSD = 100.14231572
2014-08-31 22 57 09 - Amount LTCBTC = 0.2094415
2014-08-31 22 57 09 - Amount LTCUSD = 20.73727452
2014-08-31 22 57 09 - ******** LTCUSD ->LTCBTC ->BTCUSD ********
Основная документация находится в разработке(появится в течении недели).
Приглашаем к сотрудничеству программистов со знанием Delphi,Pascal для написания стратегий пользователям.
Демо версия выйдет 2 сентября 2014 года.
Полная версия с 2 по 7 сентября 2014 года.
Официальный сайт