Author Topic: [python] get bts price  (Read 1701 times)

0 Members and 1 Guest are viewing this topic.

Offline alt

  • Hero Member
  • *****
  • Posts: 2802
    • View Profile
  • BitShares: baozi
[python] get bts price
« on: December 10, 2015, 03:09:36 am »
https://github.com/pch957/btsprice
this is a script to fetch BTS's order book from each exchange,
match all order book, get a real price which can give a maximum match volume
display the price and efficient depth
Code: [Select]
2015/12/10 11:02:48                                                                                                                                           [195/8526]
+----------+---------------+---------------+---------------+--------------+--------------+
|    asset | current(/BTC) | current(/BTS) | current(BTS/) | median(/BTS) | median(BTS/) |
+----------+---------------+---------------+---------------+--------------+--------------+
|      AUD |       575.841 |    0.00522667 |       191.326 |   0.00522667 |      191.326 |
|      BTC |         1.000 |    0.00000908 |    110173.498 |   0.00000908 |   110173.498 |
|      CAD |       568.891 |    0.00516359 |       193.664 |   0.00516359 |      193.664 |
|      CHF |       413.016 |    0.00374878 |       266.754 |   0.00374878 |      266.754 |
|      CNY |      2749.500 |    0.02495609 |        40.070 |   0.02495609 |       40.070 |
|      EUR |       380.983 |    0.00345802 |       289.182 |   0.00345802 |      289.182 |
|      GBP |       276.514 |    0.00250981 |       398.437 |   0.00250981 |      398.437 |
|     GOLD |         0.390 |    0.00000354 |    282548.404 |   0.00000354 |   282548.404 |
| HANGSENG |         0.149 |    0.00000135 |    738079.277 |   0.00004590 |    21785.530 |
|      HKD |      3251.938 |    0.02951652 |        33.879 |   0.02951652 |       33.879 |
|      JPY |     51158.537 |    0.46434522 |         2.154 |   0.46434522 |        2.154 |
|      KRW |    524375.000 |    4.75953847 |         0.210 |   4.75953847 |        0.210 |
|      MXN |      7158.703 |    0.06497663 |        15.390 |   0.06497663 |       15.390 |
|  NASDAQC |         0.084 |    0.00000076 |   1319158.894 |   0.00019909 |     5022.870 |
|   NIKKEI |         2.686 |    0.00002438 |     41024.779 |   0.00005249 |    19049.660 |
|      NZD |       623.606 |    0.00566022 |       176.672 |   0.00566022 |      176.672 |
|      RUB |     29131.944 |    0.26441880 |         3.782 |   0.26441880 |        3.782 |
|      SEK |      3531.145 |    0.03205076 |        31.201 |   0.03205076 |       31.201 |
|      SGD |       589.020 |    0.00534629 |       187.045 |   0.00534629 |      187.045 |
| SHENZHEN |         1.235 |    0.00001121 |     89215.810 |   0.00044914 |     2226.478 |
|   SILVER |        29.617 |    0.00026882 |      3719.898 |   0.00026882 |     3719.898 |
|      TRY |      1222.319 |    0.01109450 |        90.135 |   0.01109450 |       90.135 |
|      USD |       419.500 |    0.00380763 |       262.631 |   0.00380763 |      262.631 |
+----------+---------------+---------------+---------------+--------------+--------------+

efficent depth: 588,510 BTS
+--------------+------------+------------+------------+------------+
|       market |  bid price | bid_volume |  ask price | ask_volume |
+--------------+------------+------------+------------+------------+
|    btc38_btc | 0.00000899 |      3,752 | 0.00000917 |          0 |
|    btc38_cny | 0.02470900 |    498,000 | 0.02520817 |    142,849 |
|     bter_cny | 0.02470900 |          0 | 0.02520817 |          0 |
| poloniex_btc | 0.00000899 |     66,402 | 0.00000917 |    480,023 |
|    yunbi_cny | 0.02470900 |     20,355 | 0.02520817 |          0 |
+--------------+------------+------------+------------+------------+

install:
sudo pip install btsprice

upgrade:
sudo pip install btsprice --upgrade

run:
btsprice

next, I'll release a new version which can used by witness to publish feed price

edit: can used by witness now
https://bitsharestalk.org/index.php/topic,20529.msg265069.html#msg265069
« Last Edit: December 10, 2015, 03:49:52 pm by alt »

Tuck Fheman

  • Guest
Re: [python] get bts price
« Reply #1 on: December 10, 2015, 03:15:49 am »
#sharebits "alt" 110 PERCENT
#sharebits "alt" 1 GREATIDEA
#sharebits "alt" 5 FISTBUMP
#sharebits "alt" 1 HIGHFIVE

Please wait while your tip is processing, the bot appears to be dead.

Offline xeroc

  • Board Moderator
  • Hero Member
  • *****
  • Posts: 12889
  • ChainSquad GmbH
    • View Profile
    • ChainSquad GmbH
  • BitShares: xeroc
  • GitHub: xeroc
Re: [python] get bts price
« Reply #2 on: December 10, 2015, 10:06:26 am »
next, I'll release a new version which can used by witness to publish feed price
Yes ... please do so!!!

Considering the order books is on my list of things to do .. eventually
Give BitShares a try! Use the http://testnet.bitshares.eu provided by http://bitshares.eu powered by ChainSquad GmbH

Offline alt

  • Hero Member
  • *****
  • Posts: 2802
    • View Profile
  • BitShares: baozi
Re: [python] get bts price
« Reply #3 on: December 10, 2015, 03:48:26 pm »
can used by witness now
copy as config.json, set "witness" to your witness account, run
btsprice --config config.json
 
Code: [Select]
{
    "witness": "",
    "timer_minute": 2,
    "asset_list": [
        "BTC", "SILVER", "GOLD", "TRY", "SGD", "HKD", "NZD", "CNY", "TCNY",
    "MXN", "CAD", "CHF", "AUD", "GBP", "JPY", "EUR", "USD", "KRW"],
    "cli_wallet": {
        "host" : "localhost",
        "port" : 8092,
        "user" : "",
        "passwd" : "",
        "unlock" : ""
    },
    "price_limit": {
        "common": "only update price feed when the change rate is between 1% ~ 50%",
        "change_min": 1,
        "change_max": 50,
        "common": "spread bid price to price*(1+spread), ask price to price*(1-spread)",
        "common": "excute the order book, get the real price",
        "spread": 0.01,
        "common": "we use the average price in this time",
        "filter_minute": 30
    },
    "market_weight": {
        "poloniex_btc": 1,
        "yunbi_cny": 1,
        "btc38_cny": 1,
        "btc38_btc": 1,
        "bter_cny": 0
    },
    "asset_config": {
        "default": {
            "core_exchange_factor": 1.01,
            "maintenance_collateral_ratio": 1750,
            "maximum_short_squeeze_ratio": 1100
        },
        "TCNY": {"maximum_short_squeeze_ratio": 1001}
    }
}
support TCNY
« Last Edit: December 13, 2015, 08:57:49 am by alt »

Offline alt

  • Hero Member
  • *****
  • Posts: 2802
    • View Profile
  • BitShares: baozi
Re: [python] get bts price
« Reply #4 on: December 15, 2015, 06:44:17 am »
please upgrade to version  0.1.2, have added some security improve
Code: [Select]
pip install btsprice --upgrade

Code: [Select]
d035141 - add security check: set the price invalid if we fetch less than 2 valid market
342f523 - correct the output log message
04d601c - fixed a mistake: duplicated polo's bid order
83b641f - improve the rule for check publish
d6d2344 - fixed a bug
95de4a3 - add more source for BTC's price
90ac147 - update config.json.sample
ad58985 - check feed's lifetime for each asset
bc08baf - set default parameter for TCNY
b00ac3f - fixed a bug
3e4bbea - support TCNY
a2ff023 - support publish feed for witness
1cfd6be - add a valid check for each market, if the price is offset more than 10%, it's invalid
bc69610 - use average price instead of median price
5303b48 - adjust the output
a332f7d - init repo

Offline alt

  • Hero Member
  • *****
  • Posts: 2802
    • View Profile
  • BitShares: baozi
Re: [python] get bts price
« Reply #5 on: December 25, 2015, 03:35:11 am »
important upgrade!
only support python3 now.
1. change to async mode, fetch data parallel
2. use push service as a backup, if can't get data from origin website for 3 minutes, wil use data push from the pusher.btsbots.com

you must set config["puser"]["enable"] to 1 if you want to use push service
Code: [Select]
pip3 install btsprice --upgrade

Code: [Select]
2015-12-25 11:04 alt                o [master] [origin/master] don't need feedapi if not witness                                                                       
2015-12-25 10:34 alt                o new version                                                                                                                       
2015-12-25 10:30 alt                o use sync & pusher for bts feed price                                                                                             
2015-12-25 10:15 alt                o add login_info for pusher                                                                                                         
2015-12-25 10:14 alt                o copy rate                                                                                                                         
2015-12-25 10:14 alt                o must use deepcopy for orderbook                                                                                                   
2015-12-25 09:28 alt                M─┐ Merge branch 'master' of github.com:pch957/btsprice                                                                             
2015-12-25 09:26 alt                │ o improve: add sorted for get_median                                                                                             
2015-12-24 23:24 alt                o │ update test case                                                                                                               
2015-12-24 23:23 alt                o │ use async to replace request for bts_price_after_match                                                                         
2015-12-24 20:55 alt                o │ a mistake                                                                                                                       
2015-12-24 20:41 alt                o │ add task_pusher, got exchange data from pusher.btsbots.com                                                                     
2015-12-24 13:34 alt                o │ dependency                                                                                                                     
2015-12-24 07:54 alt                o │ a mistake                                                                                                                       
2015-12-24 07:53 alt                o │ remove log of exchanges                                                                                                         
2015-12-23 20:09 alt                o │ add class TaskExchanges, fetch all data needed by price feed from                                                               
2015-12-23 17:17 alt                o │ change to async                                                                                                                 
2015-12-23 17:16 alt                o │ change to async       

Offline alt

  • Hero Member
  • *****
  • Posts: 2802
    • View Profile
  • BitShares: baozi
Re: [python] get bts price
« Reply #6 on: January 07, 2016, 06:21:46 am »
please upgrade to the new version 0.2.16 to fetch price from btc38 correctly

Offline alt

  • Hero Member
  • *****
  • Posts: 2802
    • View Profile
  • BitShares: baozi
Re: [python] get bts price
« Reply #7 on: February 24, 2017, 04:46:18 am »
upgrade to version 0.2.27,
disable btc price from China exchange
add orderbook from btsbots, include: CNY/BTS, USD/BTS, OPEN.BTC/BTS
to enable these market, add these lines to config file:
Code: [Select]
     "market_weight": {
+        "btsbots_cny": 0.5,
+        "btsbots_usd": 0.5,
+        "btsbots_open.btc": 1.0,
         "poloniex_btc": 1,
         "yunbi_cny": 1,
         "btc38_cny": 1,

Offline Yao

  • Hero Member
  • *****
  • Posts: 531
  • QQ/WeChat(微信):664349247
    • View Profile
  • BitShares: yao
  • GitHub: imYao
Re: [python] get bts price
« Reply #8 on: February 27, 2017, 02:53:30 am »
Thanks [member=4465]alt[/member]
witness.yao has updated to v0.2.27
BTS witness: witness.yao
BTS Proxy: yao

Offline lafona

  • Sr. Member
  • ****
  • Posts: 230
    • View Profile
  • BitShares: lafona
Re: [python] get bts price
« Reply #9 on: March 01, 2017, 01:40:01 pm »
Nice. delegate-1.lafona also updated to v0.2.27
BTS Witnesses: delegate-1.lafona     Witness Thread: https://bitsharestalk.org/index.php/topic,21569.msg280911/topicseen.html#msg280911
MUSE Witness: lafona

Offline alt

  • Hero Member
  • *****
  • Posts: 2802
    • View Profile
  • BitShares: baozi
Re: [python] get bts price
« Reply #10 on: April 24, 2017, 08:50:45 am »
due to the USDT issue, the BTC price from poloniex.com is unusable
so I have add several new source for BTC price include: btc-e USD/BTC, bitstamp USD/BTC, okcoin.com USD/BTC
please upgrade to the new version