BitShares Forum

Other => Graveyard => Русский (Russian) => Topic started by: bitcoinerS on September 16, 2014, 05:10:03 pm

Title: От Мастера Байтов: Торговый робот для бит-активов
Post by: bitcoinerS on September 16, 2014, 05:10:03 pm
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 # насколько ниже средней цены от делегатов вы хотите продавать.
Title: Re: От Мастера Байтов: Торговый робот для бит-активов
Post by: serejandmyself on September 16, 2014, 05:15:59 pm
стики плиз
Title: Re: От Мастера Байтов: Торговый робот для бит-активов
Post by: abrakadabra on September 16, 2014, 06:57:07 pm
что за  user pass port нужно указывать?
пробовал читать буржуйскую ветку, все равно не понял. нид хелп.

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

как посмотреть на каком порту запущен bitsharesX?
Title: Re: От Мастера Байтов: Торговый робот для бит-активов
Post by: busygin on September 16, 2014, 07:24:15 pm
как посмотреть на каком порту запущен bitsharesX?

Можно в консоле получить network_get_peer_info и посмотреть собственный addrlocal. Но я точно не уверен тот же ли это порт, что нужен для rpc (дисклеймер: сам я робота не запускал). Также, возможно, нужен параметр --server при запуске BitSharesX (если используете консольную версию bitshares_client, то точно нужен).
Title: Re: От Мастера Байтов: Торговый робот для бит-активов
Post by: busygin on September 16, 2014, 07:52:29 pm
Да, порт для rpc другой. Тоже указывается Вами в config.json :
https://bitsharestalk.org/index.php?topic=8964

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

Можно в консоле получить network_get_peer_info и посмотреть собственный addrlocal. Но я точно не уверен тот же ли это порт, что нужен для rpc (дисклеймер: сам я робота не запускал). Также, возможно, нужен параметр --server при запуске BitSharesX (если используете консольную версию bitshares_client, то точно нужен).
Title: Re: От Мастера Байтов: Торговый робот для бит-активов
Post by: busygin on September 17, 2014, 01:29:30 pm
Возможно, надо вначале открыть в консоле кошелёк:
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'
Title: Re: От Мастера Байтов: Торговый робот для бит-активов
Post by: abrakadabra on September 17, 2014, 01:51:49 pm
да спасибо, разобрался.

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

теперь бы понять по какому алгоритму идет торговля.
Title: Re: От Мастера Байтов: Торговый робот для бит-активов
Post by: Coytes on September 27, 2014, 06:57:29 am
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 формате.