cryptoexchange 0.21.0 → 0.22.0

This diff represents the content of publicly available package versions that have been released to one of the supported registries. The information contained in this diff is provided for informational purposes only and reflects changes between package versions as they appear in their respective public registries.
Files changed (186) hide show
  1. checksums.yaml +4 -4
  2. data/.gitignore +1 -0
  3. data/README.md +42 -3
  4. data/lib/cryptoexchange/exchanges/aex/market.rb +8 -0
  5. data/lib/cryptoexchange/exchanges/aex/services/market.rb +41 -0
  6. data/lib/cryptoexchange/exchanges/aex/services/order_book.rb +46 -0
  7. data/lib/cryptoexchange/exchanges/aex/services/pairs.rb +33 -0
  8. data/lib/cryptoexchange/exchanges/aex/services/trades.rb +34 -0
  9. data/lib/cryptoexchange/exchanges/bit2c/bit2c.yml +9 -0
  10. data/lib/cryptoexchange/exchanges/bit2c/market.rb +8 -0
  11. data/lib/cryptoexchange/exchanges/bit2c/services/market.rb +36 -0
  12. data/lib/cryptoexchange/exchanges/bit2c/services/order_book.rb +44 -0
  13. data/lib/cryptoexchange/exchanges/bit2c/services/pairs.rb +21 -0
  14. data/lib/cryptoexchange/exchanges/bit2c/services/trades.rb +32 -0
  15. data/lib/cryptoexchange/exchanges/bitbank/bitbank.yml +17 -0
  16. data/lib/cryptoexchange/exchanges/bitbank/market.rb +8 -0
  17. data/lib/cryptoexchange/exchanges/bitbank/services/market.rb +41 -0
  18. data/lib/cryptoexchange/exchanges/bitbank/services/order_book.rb +45 -0
  19. data/lib/cryptoexchange/exchanges/bitbank/services/pairs.rb +24 -0
  20. data/lib/cryptoexchange/exchanges/bitbank/services/trades.rb +34 -0
  21. data/lib/cryptoexchange/exchanges/bitmex/market.rb +8 -0
  22. data/lib/cryptoexchange/exchanges/bitmex/services/market.rb +39 -0
  23. data/lib/cryptoexchange/exchanges/bitmex/services/order_book.rb +55 -0
  24. data/lib/cryptoexchange/exchanges/bitmex/services/pairs.rb +23 -0
  25. data/lib/cryptoexchange/exchanges/bitmex/services/trades.rb +34 -0
  26. data/lib/cryptoexchange/exchanges/bits_blockchain/market.rb +8 -0
  27. data/lib/cryptoexchange/exchanges/bits_blockchain/services/market.rb +40 -0
  28. data/lib/cryptoexchange/exchanges/bits_blockchain/services/order_book.rb +43 -0
  29. data/lib/cryptoexchange/exchanges/bits_blockchain/services/pairs.rb +22 -0
  30. data/lib/cryptoexchange/exchanges/bleutrade/services/market.rb +1 -1
  31. data/lib/cryptoexchange/exchanges/btc_alpha/market.rb +9 -0
  32. data/lib/cryptoexchange/exchanges/btc_alpha/services/market.rb +40 -0
  33. data/lib/cryptoexchange/exchanges/btc_alpha/services/order_book.rb +47 -0
  34. data/lib/cryptoexchange/exchanges/btc_alpha/services/pairs.rb +25 -0
  35. data/lib/cryptoexchange/exchanges/btc_alpha/services/trades.rb +51 -0
  36. data/lib/cryptoexchange/exchanges/btcbox/btcbox.yml +9 -0
  37. data/lib/cryptoexchange/exchanges/btcbox/market.rb +8 -0
  38. data/lib/cryptoexchange/exchanges/btcbox/services/market.rb +39 -0
  39. data/lib/cryptoexchange/exchanges/btcbox/services/order_book.rb +46 -0
  40. data/lib/cryptoexchange/exchanges/btcbox/services/pairs.rb +21 -0
  41. data/lib/cryptoexchange/exchanges/buyucoin/market.rb +8 -0
  42. data/lib/cryptoexchange/exchanges/buyucoin/services/market.rb +51 -0
  43. data/lib/cryptoexchange/exchanges/buyucoin/services/pairs.rb +26 -0
  44. data/lib/cryptoexchange/exchanges/coin_egg/coin_egg.yml +143 -0
  45. data/lib/cryptoexchange/exchanges/coin_egg/market.rb +8 -0
  46. data/lib/cryptoexchange/exchanges/coin_egg/services/market.rb +39 -0
  47. data/lib/cryptoexchange/exchanges/coin_egg/services/order_book.rb +44 -0
  48. data/lib/cryptoexchange/exchanges/coin_egg/services/pairs.rb +23 -0
  49. data/lib/cryptoexchange/exchanges/coin_egg/services/trades.rb +32 -0
  50. data/lib/cryptoexchange/exchanges/coin_exchange/services/pairs.rb +2 -2
  51. data/lib/cryptoexchange/exchanges/coinex/market.rb +8 -0
  52. data/lib/cryptoexchange/exchanges/coinex/services/market.rb +53 -0
  53. data/lib/cryptoexchange/exchanges/coinex/services/order_book.rb +49 -0
  54. data/lib/cryptoexchange/exchanges/coinex/services/pairs.rb +27 -0
  55. data/lib/cryptoexchange/exchanges/coinex/services/trades.rb +34 -0
  56. data/lib/cryptoexchange/exchanges/coinfalcon/market.rb +8 -0
  57. data/lib/cryptoexchange/exchanges/coinfalcon/services/market.rb +46 -0
  58. data/lib/cryptoexchange/exchanges/coinfalcon/services/order_book.rb +42 -0
  59. data/lib/cryptoexchange/exchanges/coinfalcon/services/pairs.rb +28 -0
  60. data/lib/cryptoexchange/exchanges/coinfalcon/services/trades.rb +32 -0
  61. data/lib/cryptoexchange/exchanges/coinhouse/market.rb +8 -0
  62. data/lib/cryptoexchange/exchanges/coinhouse/services/market.rb +52 -0
  63. data/lib/cryptoexchange/exchanges/coinhouse/services/pairs.rb +37 -0
  64. data/lib/cryptoexchange/exchanges/coinone/services/market.rb +5 -5
  65. data/lib/cryptoexchange/exchanges/coinone/services/order_book.rb +50 -0
  66. data/lib/cryptoexchange/exchanges/coinone/services/trades.rb +39 -0
  67. data/lib/cryptoexchange/exchanges/coinrail/market.rb +9 -0
  68. data/lib/cryptoexchange/exchanges/coinrail/services/market.rb +56 -0
  69. data/lib/cryptoexchange/exchanges/coinrail/services/order_book.rb +43 -0
  70. data/lib/cryptoexchange/exchanges/coinrail/services/pairs.rb +36 -0
  71. data/lib/cryptoexchange/exchanges/coinrail/services/trades.rb +30 -0
  72. data/lib/cryptoexchange/exchanges/coinroom/market.rb +8 -0
  73. data/lib/cryptoexchange/exchanges/coinroom/services/market.rb +39 -0
  74. data/lib/cryptoexchange/exchanges/coinroom/services/pairs.rb +30 -0
  75. data/lib/cryptoexchange/exchanges/crex24/market.rb +8 -0
  76. data/lib/cryptoexchange/exchanges/crex24/services/market.rb +50 -0
  77. data/lib/cryptoexchange/exchanges/crex24/services/order_book.rb +46 -0
  78. data/lib/cryptoexchange/exchanges/crex24/services/pairs.rb +25 -0
  79. data/lib/cryptoexchange/exchanges/crex24/services/trades.rb +34 -0
  80. data/lib/cryptoexchange/exchanges/crxzone/market.rb +8 -0
  81. data/lib/cryptoexchange/exchanges/crxzone/services/market.rb +47 -0
  82. data/lib/cryptoexchange/exchanges/crxzone/services/order_book.rb +52 -0
  83. data/lib/cryptoexchange/exchanges/crxzone/services/pairs.rb +31 -0
  84. data/lib/cryptoexchange/exchanges/crxzone/services/trades.rb +43 -0
  85. data/lib/cryptoexchange/exchanges/crypto_hub/market.rb +8 -0
  86. data/lib/cryptoexchange/exchanges/crypto_hub/services/market.rb +49 -0
  87. data/lib/cryptoexchange/exchanges/crypto_hub/services/pairs.rb +25 -0
  88. data/lib/cryptoexchange/exchanges/extstock/market.rb +8 -0
  89. data/lib/cryptoexchange/exchanges/extstock/services/market.rb +40 -0
  90. data/lib/cryptoexchange/exchanges/extstock/services/order_book.rb +51 -0
  91. data/lib/cryptoexchange/exchanges/extstock/services/pairs.rb +31 -0
  92. data/lib/cryptoexchange/exchanges/extstock/services/trades.rb +34 -0
  93. data/lib/cryptoexchange/exchanges/exx/market.rb +8 -0
  94. data/lib/cryptoexchange/exchanges/exx/services/market.rb +50 -0
  95. data/lib/cryptoexchange/exchanges/exx/services/order_book.rb +46 -0
  96. data/lib/cryptoexchange/exchanges/exx/services/pairs.rb +27 -0
  97. data/lib/cryptoexchange/exchanges/exx/services/trades.rb +34 -0
  98. data/lib/cryptoexchange/exchanges/fisco/fisco.yml +11 -0
  99. data/lib/cryptoexchange/exchanges/fisco/market.rb +8 -0
  100. data/lib/cryptoexchange/exchanges/fisco/services/market.rb +40 -0
  101. data/lib/cryptoexchange/exchanges/fisco/services/order_book.rb +46 -0
  102. data/lib/cryptoexchange/exchanges/fisco/services/pairs.rb +25 -0
  103. data/lib/cryptoexchange/exchanges/fisco/services/trades.rb +34 -0
  104. data/lib/cryptoexchange/exchanges/getbtc/getbtc.yml +4 -0
  105. data/lib/cryptoexchange/exchanges/getbtc/market.rb +8 -0
  106. data/lib/cryptoexchange/exchanges/getbtc/services/market.rb +39 -0
  107. data/lib/cryptoexchange/exchanges/getbtc/services/order_book.rb +45 -0
  108. data/lib/cryptoexchange/exchanges/getbtc/services/pairs.rb +25 -0
  109. data/lib/cryptoexchange/exchanges/getbtc/services/trades.rb +36 -0
  110. data/lib/cryptoexchange/exchanges/gopax/market.rb +8 -0
  111. data/lib/cryptoexchange/exchanges/gopax/services/market.rb +43 -0
  112. data/lib/cryptoexchange/exchanges/gopax/services/order_book.rb +42 -0
  113. data/lib/cryptoexchange/exchanges/gopax/services/pairs.rb +27 -0
  114. data/lib/cryptoexchange/exchanges/gopax/services/trades.rb +32 -0
  115. data/lib/cryptoexchange/exchanges/huobi/market.rb +0 -1
  116. data/lib/cryptoexchange/exchanges/huobi/services/market.rb +1 -6
  117. data/lib/cryptoexchange/exchanges/huobi/services/pairs.rb +0 -1
  118. data/lib/cryptoexchange/exchanges/idex/market.rb +8 -0
  119. data/lib/cryptoexchange/exchanges/idex/services/market.rb +62 -0
  120. data/lib/cryptoexchange/exchanges/idex/services/order_book.rb +48 -0
  121. data/lib/cryptoexchange/exchanges/idex/services/pairs.rb +39 -0
  122. data/lib/cryptoexchange/exchanges/idex/services/trades.rb +34 -0
  123. data/lib/cryptoexchange/exchanges/infinity_coin/infinity_coin.yml +3 -0
  124. data/lib/cryptoexchange/exchanges/infinity_coin/market.rb +8 -0
  125. data/lib/cryptoexchange/exchanges/infinity_coin/services/market.rb +37 -0
  126. data/lib/cryptoexchange/exchanges/infinity_coin/services/pairs.rb +25 -0
  127. data/lib/cryptoexchange/exchanges/itbit/services/order_book.rb +45 -0
  128. data/lib/cryptoexchange/exchanges/itbit/services/trades.rb +34 -0
  129. data/lib/cryptoexchange/exchanges/kucoin/services/order_book.rb +48 -0
  130. data/lib/cryptoexchange/exchanges/kucoin/services/trades.rb +31 -0
  131. data/lib/cryptoexchange/exchanges/kyber_network/market.rb +8 -0
  132. data/lib/cryptoexchange/exchanges/kyber_network/services/market.rb +46 -0
  133. data/lib/cryptoexchange/exchanges/kyber_network/services/pairs.rb +28 -0
  134. data/lib/cryptoexchange/exchanges/latoken/market.rb +8 -0
  135. data/lib/cryptoexchange/exchanges/latoken/services/market.rb +38 -0
  136. data/lib/cryptoexchange/exchanges/latoken/services/pairs.rb +27 -0
  137. data/lib/cryptoexchange/exchanges/lbank/market.rb +8 -0
  138. data/lib/cryptoexchange/exchanges/lbank/services/market.rb +43 -0
  139. data/lib/cryptoexchange/exchanges/lbank/services/order_book.rb +46 -0
  140. data/lib/cryptoexchange/exchanges/lbank/services/pairs.rb +30 -0
  141. data/lib/cryptoexchange/exchanges/lbank/services/trades.rb +35 -0
  142. data/lib/cryptoexchange/exchanges/nanex/market.rb +8 -0
  143. data/lib/cryptoexchange/exchanges/nanex/services/market.rb +47 -0
  144. data/lib/cryptoexchange/exchanges/nanex/services/pairs.rb +26 -0
  145. data/lib/cryptoexchange/exchanges/neraex/market.rb +8 -0
  146. data/lib/cryptoexchange/exchanges/neraex/services/market.rb +40 -0
  147. data/lib/cryptoexchange/exchanges/neraex/services/order_book.rb +53 -0
  148. data/lib/cryptoexchange/exchanges/neraex/services/pairs.rb +31 -0
  149. data/lib/cryptoexchange/exchanges/neraex/services/trades.rb +39 -0
  150. data/lib/cryptoexchange/exchanges/nlexch/market.rb +8 -0
  151. data/lib/cryptoexchange/exchanges/nlexch/services/market.rb +40 -0
  152. data/lib/cryptoexchange/exchanges/nlexch/services/pairs.rb +32 -0
  153. data/lib/cryptoexchange/exchanges/paribu/market.rb +8 -0
  154. data/lib/cryptoexchange/exchanges/paribu/services/market.rb +39 -0
  155. data/lib/cryptoexchange/exchanges/paribu/services/pairs.rb +23 -0
  156. data/lib/cryptoexchange/exchanges/paymium/market.rb +8 -0
  157. data/lib/cryptoexchange/exchanges/paymium/paymium.yml +3 -0
  158. data/lib/cryptoexchange/exchanges/paymium/services/market.rb +40 -0
  159. data/lib/cryptoexchange/exchanges/paymium/services/order_book.rb +46 -0
  160. data/lib/cryptoexchange/exchanges/paymium/services/pairs.rb +21 -0
  161. data/lib/cryptoexchange/exchanges/paymium/services/trades.rb +32 -0
  162. data/lib/cryptoexchange/exchanges/rightbtc/market.rb +8 -0
  163. data/lib/cryptoexchange/exchanges/rightbtc/services/market.rb +56 -0
  164. data/lib/cryptoexchange/exchanges/rightbtc/services/order_book.rb +44 -0
  165. data/lib/cryptoexchange/exchanges/rightbtc/services/pairs.rb +24 -0
  166. data/lib/cryptoexchange/exchanges/rightbtc/services/trades.rb +32 -0
  167. data/lib/cryptoexchange/exchanges/south_xchange/market.rb +8 -0
  168. data/lib/cryptoexchange/exchanges/south_xchange/services/market.rb +48 -0
  169. data/lib/cryptoexchange/exchanges/south_xchange/services/order_book.rb +46 -0
  170. data/lib/cryptoexchange/exchanges/south_xchange/services/pairs.rb +24 -0
  171. data/lib/cryptoexchange/exchanges/south_xchange/services/trades.rb +31 -0
  172. data/lib/cryptoexchange/exchanges/trust_dex/market.rb +8 -0
  173. data/lib/cryptoexchange/exchanges/trust_dex/services/market.rb +55 -0
  174. data/lib/cryptoexchange/exchanges/trust_dex/services/pairs.rb +30 -0
  175. data/lib/cryptoexchange/exchanges/upbit/market.rb +9 -0
  176. data/lib/cryptoexchange/exchanges/upbit/services/market.rb +51 -0
  177. data/lib/cryptoexchange/exchanges/upbit/services/pairs.rb +23 -0
  178. data/lib/cryptoexchange/exchanges/waves/market.rb +8 -0
  179. data/lib/cryptoexchange/exchanges/waves/services/market.rb +48 -0
  180. data/lib/cryptoexchange/exchanges/waves/services/pairs.rb +25 -0
  181. data/lib/cryptoexchange/exchanges/waves/services/trades.rb +32 -0
  182. data/lib/cryptoexchange/helpers/numeric_helper.rb +9 -0
  183. data/lib/cryptoexchange/services/market.rb +13 -1
  184. data/lib/cryptoexchange/services/pairs.rb +7 -1
  185. data/lib/cryptoexchange/version.rb +1 -1
  186. metadata +174 -2
@@ -0,0 +1,32 @@
1
+ module Cryptoexchange::Exchanges
2
+ module Bit2c
3
+ module Services
4
+ class Trades < Cryptoexchange::Services::Market
5
+ def fetch(market_pair)
6
+ output = super(ticker_url(market_pair))
7
+ adapt(output, market_pair)
8
+ end
9
+
10
+ def ticker_url(market_pair)
11
+ "#{Cryptoexchange::Exchanges::Bit2c::Market::API_URL}/Exchanges/#{market_pair.base}#{market_pair.target}/lasttrades"
12
+ end
13
+
14
+ def adapt(output, market_pair)
15
+ output.collect do |trade|
16
+ tr = Cryptoexchange::Models::Trade.new
17
+ tr.trade_id = trade['tid']
18
+ tr.base = market_pair.base
19
+ tr.target = market_pair.target
20
+ tr.market = Bit2c::Market::NAME
21
+ tr.type = trade['isBid'] == false ? "sell" : "buy"
22
+ tr.price = trade['price']
23
+ tr.amount = trade['amount']
24
+ tr.timestamp = trade['date'].to_i
25
+ tr.payload = trade
26
+ tr
27
+ end
28
+ end
29
+ end
30
+ end
31
+ end
32
+ end
@@ -0,0 +1,17 @@
1
+ :pairs:
2
+ - :base: BTC
3
+ :target: JPY
4
+ - :base: XRP
5
+ :target: JPY
6
+ - :base: LTC
7
+ :target: BTC
8
+ - :base: ETH
9
+ :target: BTC
10
+ - :base: MONA
11
+ :target: JPY
12
+ - :base: MONA
13
+ :target: BTC
14
+ - :base: BCC
15
+ :target: JPY
16
+ - :base: BCC
17
+ :target: BTC
@@ -0,0 +1,8 @@
1
+ module Cryptoexchange::Exchanges
2
+ module Bitbank
3
+ class Market
4
+ NAME = 'bitbank'
5
+ API_URL = 'https://public.bitbank.cc'
6
+ end
7
+ end
8
+ end
@@ -0,0 +1,41 @@
1
+ module Cryptoexchange::Exchanges
2
+ module Bitbank
3
+ module Services
4
+ class Market < Cryptoexchange::Services::Market
5
+ class << self
6
+ def supports_individual_ticker_query?
7
+ true
8
+ end
9
+ end
10
+
11
+ def fetch(market_pair)
12
+ output = super(ticker_url(market_pair))
13
+ adapt(output,market_pair)
14
+ end
15
+
16
+ def ticker_url(market_pair)
17
+ "#{Cryptoexchange::Exchanges::Bitbank::Market::API_URL}/#{market_pair.base.downcase}_#{market_pair.target.downcase}/ticker"
18
+ end
19
+
20
+ def adapt(output,market_pair)
21
+ market = output['data']
22
+
23
+ ticker = Cryptoexchange::Models::Ticker.new
24
+
25
+ ticker.base = market_pair.base
26
+ ticker.target = market_pair.target
27
+ ticker.market = Bitbank::Market::NAME
28
+ ticker.ask = NumericHelper.to_d(market['sell'])
29
+ ticker.bid = NumericHelper.to_d(market['buy'])
30
+ ticker.last = NumericHelper.to_d(market['last'])
31
+ ticker.high = NumericHelper.to_d(market['high'])
32
+ ticker.low = NumericHelper.to_d(market['low'])
33
+ ticker.volume = NumericHelper.to_d(market['vol'])
34
+ ticker.timestamp = market['timestamp'].to_i / 1000
35
+ ticker.payload = output
36
+ ticker
37
+ end
38
+ end
39
+ end
40
+ end
41
+ end
@@ -0,0 +1,45 @@
1
+ module Cryptoexchange::Exchanges
2
+ module Bitbank
3
+ module Services
4
+ class OrderBook < Cryptoexchange::Services::Market
5
+ class << self
6
+ def supports_individual_ticker_query?
7
+ true
8
+ end
9
+ end
10
+
11
+ def fetch(market_pair)
12
+ output = super(ticker_url(market_pair))
13
+ adapt(output, market_pair)
14
+ end
15
+
16
+ def ticker_url(market_pair)
17
+ "#{Cryptoexchange::Exchanges::Bitbank::Market::API_URL}/#{market_pair.base.downcase}_#{market_pair.target.downcase}/depth"
18
+ end
19
+
20
+ def adapt(output, market_pair)
21
+ order_book = Cryptoexchange::Models::OrderBook.new
22
+
23
+ order_book.base = market_pair.base
24
+ order_book.target = market_pair.target
25
+ order_book.market = Bitbank::Market::NAME
26
+ order_book.asks = adapt_orders(output['data']['asks'], output['data']['timestamp'])
27
+ order_book.bids = adapt_orders(output['data']['bids'], output['data']['timestamp'])
28
+ order_book.timestamp = Time.now.to_i
29
+ order_book.payload = output
30
+ order_book
31
+ end
32
+
33
+ def adapt_orders(orders, timestamp)
34
+ orders.collect do |order_entry|
35
+ price = order_entry[0]
36
+ amount = order_entry[1]
37
+ Cryptoexchange::Models::Order.new(price: price,
38
+ amount: amount,
39
+ timestamp: timestamp)
40
+ end
41
+ end
42
+ end
43
+ end
44
+ end
45
+ end
@@ -0,0 +1,24 @@
1
+ module Cryptoexchange::Exchanges
2
+ module Bitbank
3
+ module Services
4
+ class Pairs < Cryptoexchange::Services::Pairs
5
+ def fetch
6
+ output = super
7
+ adapt(output)
8
+ end
9
+
10
+ def adapt(output)
11
+ market_pairs = []
12
+ output.each do |pair|
13
+ market_pairs << Cryptoexchange::Models::MarketPair.new(
14
+ base: pair[:base],
15
+ target: pair[:target],
16
+ market: Bitbank::Market::NAME
17
+ )
18
+ end
19
+ market_pairs
20
+ end
21
+ end
22
+ end
23
+ end
24
+ end
@@ -0,0 +1,34 @@
1
+ module Cryptoexchange::Exchanges
2
+ module Bitbank
3
+ module Services
4
+ class Trades < Cryptoexchange::Services::Market
5
+ def fetch(market_pair)
6
+ output = super(ticker_url(market_pair))
7
+ adapt(output, market_pair)
8
+ end
9
+
10
+ def ticker_url(market_pair)
11
+ base = market_pair.base.downcase
12
+ target = market_pair.target.downcase
13
+ "#{Cryptoexchange::Exchanges::Bitbank::Market::API_URL}/#{base}_#{target}/transactions"
14
+ end
15
+
16
+ def adapt(output, market_pair)
17
+ output['data']['transactions'].collect do |trade|
18
+ tr = Cryptoexchange::Models::Trade.new
19
+ tr.trade_id = trade['transaction_id'].to_s
20
+ tr.type = trade['side']
21
+ tr.base = market_pair.base
22
+ tr.target = market_pair.target
23
+ tr.price = trade['price']
24
+ tr.amount = trade['amount']
25
+ tr.timestamp = trade['executed_at'].to_i
26
+ tr.payload = trade
27
+ tr.market = Bitbank::Market::NAME
28
+ tr
29
+ end
30
+ end
31
+ end
32
+ end
33
+ end
34
+ end
@@ -0,0 +1,8 @@
1
+ module Cryptoexchange::Exchanges
2
+ module Bitmex
3
+ class Market
4
+ NAME = 'bitmex'
5
+ API_URL = 'https://www.bitmex.com/api/v1'
6
+ end
7
+ end
8
+ end
@@ -0,0 +1,39 @@
1
+ module Cryptoexchange::Exchanges
2
+ module Bitmex
3
+ module Services
4
+ class Market < Cryptoexchange::Services::Market
5
+ class << self
6
+ def supports_individual_ticker_query?
7
+ true
8
+ end
9
+ end
10
+
11
+ def fetch(market_pair)
12
+ output = super(ticker_url(market_pair))
13
+ adapt(output[0], market_pair)
14
+ end
15
+
16
+ def ticker_url(market_pair)
17
+ symbol = (market_pair.target = "USD") ? market_pair.base : market_pair.target
18
+ "#{Cryptoexchange::Exchanges::Bitmex::Market::API_URL}/instrument?symbol=#{symbol}&count=100&reverse=true"
19
+ end
20
+
21
+ def adapt(output, market_pair)
22
+ ticker = Cryptoexchange::Models::Ticker.new
23
+ ticker.base = market_pair.base
24
+ ticker.target = market_pair.target
25
+ ticker.market = Bitmex::Market::NAME
26
+ ticker.ask = NumericHelper.to_d(output['askPrice'])
27
+ ticker.bid = NumericHelper.to_d(output['bidPrice'])
28
+ ticker.last = NumericHelper.to_d(output['lastPrice'])
29
+ ticker.high = NumericHelper.to_d(output['highPrice'])
30
+ ticker.low = NumericHelper.to_d(output['lowPrice'])
31
+ ticker.volume = NumericHelper.to_d(output['volume24h'])
32
+ ticker.timestamp = Time.now.to_i
33
+ ticker.payload = output
34
+ ticker
35
+ end
36
+ end
37
+ end
38
+ end
39
+ end
@@ -0,0 +1,55 @@
1
+ module Cryptoexchange::Exchanges
2
+ module Bitmex
3
+ module Services
4
+ class OrderBook < Cryptoexchange::Services::Market
5
+ class << self
6
+ def supports_individual_ticker_query?
7
+ true
8
+ end
9
+ end
10
+
11
+ def fetch(market_pair)
12
+ output = super(orderbook_url(market_pair))
13
+ split_orderbook = split(output)
14
+ adapt(split_orderbook, market_pair)
15
+ end
16
+
17
+ def orderbook_url(market_pair)
18
+ symbol = (market_pair.target = "USD") ? market_pair.base : market_pair.target
19
+ "#{Cryptoexchange::Exchanges::Bitmex::Market::API_URL}/orderBook/L2?symbol=#{symbol}&depth=0"
20
+ end
21
+
22
+ def split(output)
23
+ asks = []
24
+ bids = []
25
+ output.each do |order|
26
+ order['side'].include?("Buy") ? bids<<order : asks<<order
27
+ end
28
+ {asks: asks, bids: bids}
29
+ end
30
+
31
+ def adapt(output, market_pair)
32
+ order_book = Cryptoexchange::Models::OrderBook.new
33
+ timestamp = Time.now.to_i
34
+
35
+ order_book.base = market_pair.base
36
+ order_book.target = market_pair.target
37
+ order_book.market = Bitmex::Market::NAME
38
+ order_book.asks = adapt_orders(output[:asks])
39
+ order_book.bids = adapt_orders(output[:bids])
40
+ order_book.timestamp = timestamp
41
+ order_book.payload = output
42
+ order_book
43
+ end
44
+
45
+ def adapt_orders(orders)
46
+ orders.collect do |order_entry|
47
+ Cryptoexchange::Models::Order.new(price: order_entry['price'],
48
+ amount: order_entry['size'],
49
+ timestamp: nil)
50
+ end
51
+ end
52
+ end
53
+ end
54
+ end
55
+ end
@@ -0,0 +1,23 @@
1
+ module Cryptoexchange::Exchanges
2
+ module Bitmex
3
+ module Services
4
+ class Pairs < Cryptoexchange::Services::Pairs
5
+ PAIRS_URL = "#{Cryptoexchange::Exchanges::Bitmex::Market::API_URL}/instrument/active"
6
+
7
+ def fetch
8
+ output = super
9
+ market_pairs = []
10
+ output.each do |pair|
11
+ market_pairs << Cryptoexchange::Models::MarketPair.new(
12
+ base: pair['underlying'],
13
+ target: pair['quoteCurrency'],
14
+ market: Bitmex::Market::NAME
15
+ )
16
+ end
17
+ market_pairs
18
+ end
19
+
20
+ end
21
+ end
22
+ end
23
+ end
@@ -0,0 +1,34 @@
1
+ module Cryptoexchange::Exchanges
2
+ module Bitmex
3
+ module Services
4
+ class Trades < Cryptoexchange::Services::Market
5
+
6
+ def fetch(market_pair)
7
+ output = super(ticker_url(market_pair))
8
+ adapt(output, market_pair)
9
+ end
10
+
11
+ def ticker_url(market_pair)
12
+ symbol = (market_pair.target = "USD") ? market_pair.base : market_pair.target
13
+ "#{Cryptoexchange::Exchanges::Bitmex::Market::API_URL}/trade?symbol=#{symbol}&reverse=true"
14
+ end
15
+
16
+ def adapt(output, market_pair)
17
+ output.collect do |trade|
18
+ tr = Cryptoexchange::Models::Trade.new
19
+ tr.trade_id = trade['trdMatchID']
20
+ tr.base = market_pair.base
21
+ tr.target = market_pair.target
22
+ tr.market = Bitmex::Market::NAME
23
+ tr.type = trade['side'].downcase
24
+ tr.price = trade['price']
25
+ tr.amount = trade['size']
26
+ tr.timestamp = trade['timestamp'].to_i
27
+ tr.payload = trade
28
+ tr
29
+ end
30
+ end
31
+ end
32
+ end
33
+ end
34
+ end
@@ -0,0 +1,8 @@
1
+ module Cryptoexchange::Exchanges
2
+ module BitsBlockchain
3
+ class Market
4
+ NAME = 'bits_blockchain'
5
+ API_URL = 'https://www.bitsblockchain.net/api/v1'
6
+ end
7
+ end
8
+ end
@@ -0,0 +1,40 @@
1
+ module Cryptoexchange::Exchanges
2
+ module BitsBlockchain
3
+ module Services
4
+ class Market < Cryptoexchange::Services::Market
5
+ class << self
6
+ def supports_individual_ticker_query?
7
+ true
8
+ end
9
+ end
10
+
11
+ def fetch(market_pair)
12
+ output = super(ticker_url(market_pair))
13
+ adapt(output['data'], market_pair)
14
+ end
15
+
16
+ def ticker_url(market_pair)
17
+ "https://www.bitsblockchain.net/moon/v1/market/tick/ANX/#{market_pair.base}#{market_pair.target}"
18
+ end
19
+
20
+ def adapt(output, market_pair)
21
+ pair = "#{market_pair.base}#{market_pair.target}"
22
+ ticker = Cryptoexchange::Models::Ticker.new
23
+ ticker.base = market_pair.base
24
+ ticker.target = market_pair.target
25
+ ticker.market = BitsBlockchain::Market::NAME
26
+ ticker.ask = NumericHelper.to_d(output[0][pair]['ask'])
27
+ ticker.bid = NumericHelper.to_d(output[0][pair]['bid'])
28
+ ticker.last = NumericHelper.to_d(output[0][pair]['last'])
29
+ ticker.high = NumericHelper.to_d(output[0][pair]['high'])
30
+ ticker.low = NumericHelper.to_d(output[0][pair]['low'])
31
+ ticker.volume = NumericHelper.to_d(output[0][pair]['volume'])
32
+ ticker.timestamp = output[0][pair]['timestampMillis'].to_i/1000
33
+ ticker.payload = output
34
+ ticker
35
+ end
36
+
37
+ end
38
+ end
39
+ end
40
+ end
@@ -0,0 +1,43 @@
1
+ module Cryptoexchange::Exchanges
2
+ module BitsBlockchain
3
+ module Services
4
+ class OrderBook < Cryptoexchange::Services::Market
5
+ class << self
6
+ def supports_individual_ticker_query?
7
+ true
8
+ end
9
+ end
10
+
11
+ def fetch(market_pair)
12
+ output = super(ticker_url(market_pair))
13
+ adapt(output, market_pair)
14
+ end
15
+
16
+ def ticker_url(market_pair)
17
+ "https://www.bitsblockchain.net/moon/v1/market/topOrderBook/ANX/#{market_pair.base}#{market_pair.target}"
18
+ end
19
+
20
+ def adapt(output, market_pair)
21
+ order_book = Cryptoexchange::Models::OrderBook.new
22
+ timestamp = Time.now.to_i
23
+ order_book.base = market_pair.base
24
+ order_book.target = market_pair.target
25
+ order_book.market = BitsBlockchain::Market::NAME
26
+ order_book.asks = adapt_orders(output['data'][0]['asks'])
27
+ order_book.bids = adapt_orders(output['data'][0]['bids'])
28
+ order_book.timestamp = timestamp
29
+ order_book.payload = output
30
+ order_book
31
+ end
32
+
33
+ def adapt_orders(orders)
34
+ orders.collect do |order_entry|
35
+ Cryptoexchange::Models::Order.new(price: order_entry['price'],
36
+ amount: order_entry['quantity'],
37
+ timestamp: nil)
38
+ end
39
+ end
40
+ end
41
+ end
42
+ end
43
+ end