Author Topic: От Мастера Байтов: Торговый робот для бит-активов  (Read 3452 times)

0 Members and 1 Guest are viewing this topic.

Offline Coytes

  • Newbie
  • *
  • Posts: 1
    • View Profile
https://bitsharestalk.org/index.php?topic=8791.msg113993#msg113993

Торговый робот для бит-активов

Мы подготовили скрипт, который может использоваться теми, кто хочет помочь делать рынок бит-активов ликвидным   и ищем разработчиков, чтобы помочь сделать его лучше!

https://github.com/BitShares/bitshares_toolkit/tree/develop/programs/market_maker

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

Правила просты:
1) Купить бит-актив дешево (на несколько процентов скидка)
2) Продать бит-актив по средней цене от делегатов (или последней от BTER), той что больше.
3) Отрегулировать заказы в любое время когда они отклоняться с более чем определенным допуском от того какими бы были новые заказы.

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

Мы предоставляем скрипт для вас, чтобы вы могли увеличить ликвидность и уменьшить разницу в ценах (так как наши боты будут конкурировать друг с другом;))

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

Пример использования:

Code: [Select]
python main.py <пользователь> <пароль> <порт> <использовать активную сеть? (или сеть для испытаний)>

Code: [Select]
python main.py user pass 8000 true


Code: [Select]
SPREAD_PERCENT = 0.05  # 5% (разница в ценах)

TOLERANCE = 0.01 #(допуск) должен быть меньше чем SPREAD_PERCENT / 2, чем меньше допуск тем чаще заказы будут обновлены.

MIN_USD_BALANCE = 10  #Оставьте минимальный баланс бит актива для возможности обновить заказы
MIN_BTSX_BALANCE = 100  #Оставьте минимальный баланс BTSX для возможности обновить заказы
MIN_USD_ORDER_SIZE = 2  #Минимальный размер заказа бит-актива (предотвратить мелкие обновления)
MIN_BTSX_ORDER_SIZE = 100  # Минимальный размер заказа BTSX (предотвратить мелкие обновления)

MEDIAN_EDGE_MULTIPLE = 1.001 # насколько ниже средней цены от делегатов вы хотите продавать.

Я торгую на Форексе некоторое время и вижу что этому проекту может помочь интеграция с Metatrader 4 платформой; там уже написано огромное количество индикаторов и торговых роботов, так что все сведется к предоставлению сервиса BitShares X который выдает дату в том же формате и по такому же принципу как Форекс.
Формат исторической информации прост - Date,Time,Open,High,Low,Close,Volume - в CSV формате.

Offline abrakadabra

  • Full Member
  • ***
  • Posts: 72
    • View Profile
да спасибо, разобрался.

кошелек был заблокирован. сделал wallet_open и wallet_unlock и завелось.

теперь бы понять по какому алгоритму идет торговля.

busygin

  • Guest
Возможно, надо вначале открыть в консоле кошелёк:
Code: [Select]
(wallet closed) >>> wallet_open default
OK
default (locked) >>>
(Если Вы переносили свой кошелёк из wallets/default , замените default на то, куда перенесли)

Если не поможет, вставте print response.json() перед
"/home/gridmit/bitsharesx/programs/market_maker/btsx.py", line 109
и посмотрите, есть ли что-то проясняющее в респонсе.

очень хочу разобраться как сделать бота, но не могу запустить пример.
укажите где я ошибаюсь.
Code: [Select]
1. собрал кошелек по этой инструкции https://bitsharestalk.org/index.php?topic=6008.msg80548#msg80548 . Собралось без ошибок, все отлично работает.
2. поправил ~/.BitSharesX/config.json
  "rpc": {
    "enable": true,
    "rpc_user": "user",
    "rpc_password": "pass",
    "rpc_endpoint": "127.0.0.1:0",
    "httpd_endpoint": "127.0.0.1:8000",
    "htdocs": "./htdocs"
  },

3. на всякий случай запускаю так
@ubu:~/bitsharesx/programs/market_maker$ ~/bitsharesx/programs/client/bitshares_client --server --httpport 8000 --rpcuser user --rpcpass pass

вроде запустилось норм. 8000 порт слушается
@ubu:~$ netstat -nat |grep 8000
tcp        0      0 127.0.0.1:8000          0.0.0.0:*               LISTEN   

4. запускаю бот, получаю ошибку
@ubu:~/bitsharesx/programs/market_maker$ python main.py config.json
{u'bots': [{u'spread_percent': 0.05, u'min_order_size': 100, u'bot_type': u'market_maker', u'external_price_tolerance': 0.01, u'asset_pair': [u'USD', u'BTSX'], u'account_name': u'dmitry', u'min_balance': 100}], u'client': {u'rpc_password': u'pass', u'rpc_user': u'user', u'rpc_port': u'8000'}, u'feeds': [{u'type': u'usd_per_btsx', u'name': u'bter_usd_btsx_average'}]}
Initializing with URL:  http://user:pass@localhost:8000/rpc
usd_per_btsx
0.0343595483474
btc38_usd_per_btsx
0.0342828292699
bter_usd_per_btsx
0.034460099025
Executing bot:  dmitry
Traceback (most recent call last):
  File "main.py", line 54, in <module>
    bot.execute()
  File "/home/gridmit/bitsharesx/programs/market_maker/market_maker.py", line 41, in execute
    canceled.extend( self.client.cancel_asks_out_of_range(self.name, quote, base, new_usd_per_btsx * (1+spread), tolerance) )
  File "/home/gridmit/bitsharesx/programs/market_maker/btsx.py", line 109, in cancel_asks_out_of_range
    for pair in response.json()["result"]:
KeyError: 'result'

busygin

  • Guest
Да, порт для rpc другой. Тоже указывается Вами в config.json :
https://bitsharestalk.org/index.php?topic=8964

как посмотреть на каком порту запущен bitsharesX?

Можно в консоле получить network_get_peer_info и посмотреть собственный addrlocal. Но я точно не уверен тот же ли это порт, что нужен для rpc (дисклеймер: сам я робота не запускал). Также, возможно, нужен параметр --server при запуске BitSharesX (если используете консольную версию bitshares_client, то точно нужен).

busygin

  • Guest
как посмотреть на каком порту запущен bitsharesX?

Можно в консоле получить network_get_peer_info и посмотреть собственный addrlocal. Но я точно не уверен тот же ли это порт, что нужен для rpc (дисклеймер: сам я робота не запускал). Также, возможно, нужен параметр --server при запуске BitSharesX (если используете консольную версию bitshares_client, то точно нужен).

Offline abrakadabra

  • Full Member
  • ***
  • Posts: 72
    • View Profile
что за  user pass port нужно указывать?
пробовал читать буржуйскую ветку, все равно не понял. нид хелп.

rpc_user и rpc_password, которые у Вам нужно задать в config.json (находится в той же директории, что и wallets)

как посмотреть на каком порту запущен bitsharesX?

Offline serejandmyself

  • Sr. Member
  • ****
  • Posts: 358
    • View Profile
btsx - bitsharesrussia

Offline bitcoinerS

  • Hero Member
  • *****
  • Posts: 592
    • View Profile
https://bitsharestalk.org/index.php?topic=8791.msg113993#msg113993

Торговый робот для бит-активов

Мы подготовили скрипт, который может использоваться теми, кто хочет помочь делать рынок бит-активов ликвидным   и ищем разработчиков, чтобы помочь сделать его лучше!

https://github.com/BitShares/bitshares_toolkit/tree/develop/programs/market_maker

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

Правила просты:
1) Купить бит-актив дешево (на несколько процентов скидка)
2) Продать бит-актив по средней цене от делегатов (или последней от BTER), той что больше.
3) Отрегулировать заказы в любое время когда они отклоняться с более чем определенным допуском от того какими бы были новые заказы.

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

Мы предоставляем скрипт для вас, чтобы вы могли увеличить ликвидность и уменьшить разницу в ценах (так как наши боты будут конкурировать друг с другом;))

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

Пример использования:

Code: [Select]
python main.py <пользователь> <пароль> <порт> <использовать активную сеть? (или сеть для испытаний)>

Code: [Select]
python main.py user pass 8000 true


Code: [Select]
SPREAD_PERCENT = 0.05  # 5% (разница в ценах)

TOLERANCE = 0.01 #(допуск) должен быть меньше чем SPREAD_PERCENT / 2, чем меньше допуск тем чаще заказы будут обновлены.

MIN_USD_BALANCE = 10  #Оставьте минимальный баланс бит актива для возможности обновить заказы
MIN_BTSX_BALANCE = 100  #Оставьте минимальный баланс BTSX для возможности обновить заказы
MIN_USD_ORDER_SIZE = 2  #Минимальный размер заказа бит-актива (предотвратить мелкие обновления)
MIN_BTSX_ORDER_SIZE = 100  # Минимальный размер заказа BTSX (предотвратить мелкие обновления)

MEDIAN_EDGE_MULTIPLE = 1.001 # насколько ниже средней цены от делегатов вы хотите продавать.
« Last Edit: September 16, 2014, 08:02:38 pm by bitcoinerS »
>>> approve bitcoiners