Skip to content

Commit

Permalink
[Update] ticker func and add tests
Browse files Browse the repository at this point in the history
  • Loading branch information
purplesmoke05 committed Mar 26, 2018
1 parent 10a38bc commit 29e4b7a
Show file tree
Hide file tree
Showing 11 changed files with 106 additions and 108 deletions.
22 changes: 11 additions & 11 deletions cryptojp/binance.py
Expand Up @@ -19,7 +19,7 @@

class Binance(Exchange):
def __init__(self, apikey, secretkey):
def httpPost(url,resource, params):
def httpPost(url, resource, params):
params["timestamp"] = int(round(time.time() * 1000))
query = urlencode(params)
params["signature"] = hmac.new(self._secretkey.encode("utf8"), query.encode("utf8"), digestmod=hashlib.sha256).hexdigest()
Expand All @@ -30,7 +30,7 @@ def httpPost(url,resource, params):
}
return self.session.post(url, headers=headers).json()

def httpGet(url,resource, params):
def httpGet(url, resource, params):
params["timestamp"] = int(round(time.time() * 1000))
query = urlencode(params)
params["signature"] = hmac.new(self._secretkey.encode("utf8"), query.encode("utf8"), digestmod=hashlib.sha256).hexdigest()
Expand Down Expand Up @@ -61,10 +61,10 @@ def settlements(self):
SETTLEMENTS_RESOURCE).json()
return tuple(set([j["quoteAsset"] for j in json["symbols"]]))

def ticker(self, item='BTCUSDT'):
def ticker(self, trading, settlement):
TICKER_RESOURCE = "/api/v1/klines"
params = {
'symbol': item,
'symbol': trading.upper() + settlement.upper(),
'interval': '1d',
}
json = self.session.get('https://' + BINANCE_REST_URL +
Expand All @@ -79,7 +79,7 @@ def ticker(self, item='BTCUSDT'):
volume=float(json[-1][5])
)

def board(self,item='BTCUSDT'):
def board(self, item='BTCUSDT'):
BOARD_RESOURCE = "/v1/depth"
params = {
"symbol": item,
Expand All @@ -92,27 +92,27 @@ def board(self,item='BTCUSDT'):
for ask in json["asks"]],
bids=[Bid(price=float(bid[0]), size=float(bid[1]))
for bid in json["bids"]],
mid_price=(float(json["asks"][0][0])+float(json["bids"][0][0]))/2
mid_price=(float(json["asks"][0][0]) + float(json["bids"][0][0])) / 2
)

def order(self,trading, settlement, order_type, side, price, size):
def order(self, trading, settlement, order_type, side, price, size):
ORDER_RESOURCE = "/v3/order"
params = {
"symbol": trading+settlement,
"symbol": trading + settlement,
"side": side,
"type": order_type.upper(),
"timeInForce": "GTC",
"quantity": size,
"price": price
}
json = self.httpPost(BINANCE_NEW_REST_URL,ORDER_RESOURCE, params=params)
json = self.httpPost(BINANCE_NEW_REST_URL, ORDER_RESOURCE, params=params)
return json[0]["orderId"]

def balance(self):
BALANCE_RESOURCE = "/v3/account"

json = self.httpGet(BINANCE_NEW_REST_URL,BALANCE_RESOURCE, {})
json = self.httpGet(BINANCE_NEW_REST_URL, BALANCE_RESOURCE, {})
balances = {}
for j in json["balances"]:
balances[j["asset"]]=[float(j["free"])+float(j["locked"]),float(j["free"])]
balances[j["asset"]] = [float(j["free"]) + float(j["locked"]), float(j["free"])]
return balances
22 changes: 11 additions & 11 deletions cryptojp/bitfinex.py
Expand Up @@ -23,27 +23,27 @@ def httpGet(url, resource, params, apikey, secretkey):
params["nonce"] = nonce
params["request"] = resource
data = base64.b64encode(json.dumps(params).encode())
sign = hmac.new(self._secretkey,data,hashlib.sha384).hexdigest()
sign = hmac.new(self._secretkey, data, hashlib.sha384).hexdigest()

headers = {
"X-BFX-APIKEY": self._apikey,
"X-BFX-SIGNATURE": sign,
"AX-BFX-PAYLOAD": data,
"AX-BFX-PAYLOAD": data,
}
return self.session.get('https://' + url + resource,
headers=headers, data=json.dumps(params)).json()
headers=headers, data=json.dumps(params)).json()

def httpPost(url, resource, params, apikey, secretkey):
nonce = str(int(round(time.time() * 10000)))
params["nonce"] = nonce
params["request"] = resource
data = base64.b64encode(json.dumps(params).encode())
sign = hmac.new(self._secretkey,data,hashlib.sha384).hexdigest()
sign = hmac.new(self._secretkey, data, hashlib.sha384).hexdigest()

headers = {
"X-BFX-APIKEY": self._apikey,
"X-BFX-SIGNATURE": sign,
"AX-BFX-PAYLOAD": data,
"AX-BFX-PAYLOAD": data,
}
return self.session.post('https://' + url + resource,
headers=headers, data=json.dumps(params)).json()
Expand All @@ -64,8 +64,8 @@ def markets(self):
def settlements(self):
return ("btc", "usd", "eth")

def ticker(self, symbol=''):
TICKER_RESOURCE = "/v1/pubticker/"+symbol
def ticker(self, trading, settlement):
TICKER_RESOURCE = "/v1/pubticker/" + trading.lower() + '_' + settlement.lower()

json = self.session.get('https://' + BITFINEX_REST_URL +
TICKER_RESOURCE).json()
Expand All @@ -80,7 +80,7 @@ def ticker(self, symbol=''):
)

def board(self, symbol=''):
BOARD_RESOURCE = "/v1/book/"+symbol
BOARD_RESOURCE = "/v1/book/" + symbol
params = {}
params["group"] = 1
json = self.session.get('https://' + BITFINEX_REST_URL +
Expand All @@ -91,7 +91,7 @@ def board(self, symbol=''):
for ask in json["asks"]],
bids=[Bid(price=float(bid["price"]), size=float(bid["amount"]))
for bid in json["bids"]],
mid_price=(float(json["bids"][0]["price"])+float(json["asks"][0]["price"]))/2
mid_price=(float(json["bids"][0]["price"]) + float(json["asks"][0]["price"])) / 2
)

def order(self, item, order_type, side, price, size):
Expand All @@ -100,10 +100,10 @@ def order(self, item, order_type, side, price, size):
def get_open_orders(self, symbol="btcusd"):
raise Exception("not implemented")

def cancel_order(self, symbol,order_id):
def cancel_order(self, symbol, order_id):
raise Exception("not implemented")

def get_fee(self, symbol = "btcusd"):
def get_fee(self, symbol="btcusd"):
raise Exception("not implemented")

def balance(self):
Expand Down
21 changes: 10 additions & 11 deletions cryptojp/bitflyer.py
Expand Up @@ -23,7 +23,7 @@ def httpGet(url, resource, params, apikey, secretkey):
headers = {
"ACCESS-KEY": apikey,
"ACCESS-TIMESTAMP": timestamp,
"ACCESS-SIGN": hmac.new(str.encode(secretkey), text, hashlib.sha256).hexdigest(),
"ACCESS-SIGN": hmac.new(str.encode(secretkey), text, hashlib.sha256).hexdigest(),
'Content-Type': 'application/json',
}
return self.session.get('https://' + url + resource,
Expand Down Expand Up @@ -53,14 +53,13 @@ def markets(self):
MARKETS_RESOURCE = "/v1/markets"
json = self.session.get('https://' + BITFLYER_REST_URL +
MARKETS_RESOURCE).json()
product_codes = [j["product_code"].split("_") for j in json if len(j["product_code"].split("_"))==2]
product_codes = [j["product_code"].split("_") for j in json if len(j["product_code"].split("_")) == 2]
return tuple([CurrencyPair(trading=p[0], settlement=p[1]) for p in product_codes])

def ticker(self, item=''):
def ticker(self, trading, settlement):
TICKER_RESOURCE = "/v1/ticker"
params = {}
if item:
params["product_code"] = item[0:3] + "_" + item[3:6]
params["product_code"] = trading + "_" + settlement
json = self.session.get('https://' + BITFLYER_REST_URL +
TICKER_RESOURCE, data=params).json()
return Ticker(
Expand All @@ -86,10 +85,10 @@ def board(self, item=''):
mid_price=float(json["mid_price"])
)

def order(self, trading,settlement, order_type, side, price, size):
def order(self, trading, settlement, order_type, side, price, size):
ORDER_RESOURCE = "/v1/me/sendchildorder"
params = {
"product_code": trading+"_"+settlement,
"product_code": trading + "_" + settlement,
"child_order_type": order_type.upper(),
"side": side.upper(),
"price": price,
Expand All @@ -106,21 +105,21 @@ def get_open_orders(self, symbol="BTC_JPY"):
OPEN_ORDERS_RESOURCE = "/v1/me/getchildorders"
params = {"child_order_state": "ACTIVE"}
if symbol:
params["product_code"]= symbol
params["product_code"] = symbol
json = self.httpGet(BITFLYER_REST_URL,
OPEN_ORDERS_RESOURCE, params, self._apikey, self._secretkey)
return json

def cancel_order(self, symbol,order_id):
def cancel_order(self, symbol, order_id):
CANCEL_ORDERS_RESOURCE = "/v1/me/cancelchildorder"
params = {
"product_code": symbol,
"child_order_acceptance_id": order_id,
}
self.httpPost(BITFLYER_REST_URL,
CANCEL_ORDERS_RESOURCE, params, self._apikey, self._secretkey)
CANCEL_ORDERS_RESOURCE, params, self._apikey, self._secretkey)

def get_fee(self, symbol = "BTC_JPY"):
def get_fee(self, symbol="BTC_JPY"):
GET_FEE_RESOURCE = "/v1/me/gettradingcommission"
params = {
"product_code": symbol,
Expand Down
12 changes: 6 additions & 6 deletions cryptojp/btcbox.py
Expand Up @@ -25,7 +25,7 @@ def httpGet(url, resource, params, apikey, secretkey):
params['signature'] = sign
params['key'] = apikey
params['nonce'] = timestamp
return self.session.get('https://' + url + resource, data=params).json()
return self.session.get('https://' + url + resource, data=params).json()

def httpPost(url, resource, params, apikey, secretkey):
timestamp = str(time.time())
Expand Down Expand Up @@ -56,10 +56,10 @@ def markets(self):
ret.append(CurrencyPair(trading="BCH", settlement="JPY"))
return ret

def ticker(self, item=''):
def ticker(self, trading, settlement):
TICKER_RESOURCE = "/api/v1/ticker"
params = {
"coin": item.replace("_jpy", "") if item else "btc"
"coin": trading.lower()
}
json = self.session.get('https://' + BTCBOX_REST_URL +
TICKER_RESOURCE).json()
Expand Down Expand Up @@ -87,13 +87,13 @@ def board(self, item=''):
float(json["bids"][0][0])) / 2
)

def order(self, trading,settlement, order_type, side, price, size):
def order(self, trading, settlement, order_type, side, price, size):
ORDER_RESOURCE = "/api/v1/trade_add"
params = {
"amount": size,
"side": side.lower(),
"price": price,
"coin": trading.lower()+"_"+settlement.upper(),
"coin": trading.lower() + "_" + settlement.upper(),
}
json = self.httpPost(BTCBOX_REST_URL, ORDER_RESOURCE,
params, self._apikey, self._secretkey)
Expand All @@ -109,7 +109,7 @@ def get_open_orders(self, symbol="btc"):
OPEN_ORDERS_RESOURCE, params, self._apikey, self._secretkey)
return json

def cancel_order(self, symbol,order_id):
def cancel_order(self, symbol, order_id):
CANCEL_ORDERS_RESOURCE = "/api/v1/trade_cancel"
params = {
"coin": symbol,
Expand Down
22 changes: 11 additions & 11 deletions cryptojp/coincheck.py
Expand Up @@ -24,7 +24,7 @@ def httpGet(url, resource, params, apikey, secretkey):
headers = {
"ACCESS-KEY": apikey,
"ACCESS-NONCE": str(nonce),
"ACCESS-SIGN": hmac.new(str.encode(secretkey), text, hashlib.sha256).hexdigest(),
"ACCESS-SIGN": hmac.new(str.encode(secretkey), text, hashlib.sha256).hexdigest(),
}
return self.session.get('https://' + url + resource,
headers=headers, data=urlencode(params)).json()
Expand All @@ -37,7 +37,7 @@ def httpPost(url, resource, params, apikey, secretkey):
headers = {
"ACCESS-KEY": apikey,
"ACCESS-NONCE": str(nonce),
"ACCESS-SIGN": hmac.new(str.encode(secretkey), text, hashlib.sha256).hexdigest(),
"ACCESS-SIGN": hmac.new(str.encode(secretkey), text, hashlib.sha256).hexdigest(),
}
return self.session.post('https://' + url + resource,
headers=headers, data=urlencode(params)).json()
Expand All @@ -50,7 +50,7 @@ def httpDelete(url, resource, params, apikey, secretkey):
headers = {
"ACCESS-KEY": apikey,
"ACCESS-NONCE": str(nonce),
"ACCESS-SIGN": hmac.new(str.encode(secretkey), text, hashlib.sha256).hexdigest(),
"ACCESS-SIGN": hmac.new(str.encode(secretkey), text, hashlib.sha256).hexdigest(),
}
return self.session.delete('https://' + url + resource, headers=headers, data=urlencode(params)).json()

Expand All @@ -66,7 +66,7 @@ def __del__(self):
def markets(self):
return (CurrencyPair(trading="BTC", settlement="JPY"),)

def ticker(self, item=''):
def ticker(self, trading, settlement):
TICKER_RESOURCE = "/api/ticker"
json = self.session.get('https://' + COINCHECK_REST_URL +
TICKER_RESOURCE).json()
Expand Down Expand Up @@ -101,19 +101,19 @@ def order(self, trading, settlement, order_type, side, price, size):
side = 'market_' + side
if 'buy' in side.lower():
params = {
"pair": trading.lower()+"_"+settlement.upper(),
"pair": trading.lower() + "_" + settlement.upper(),
"order_type": side,
"market_buy_amount": size
}
else:
params = {
"pair": trading.lower()+"_"+settlement.upper(),
"pair": trading.lower() + "_" + settlement.upper(),
"order_type": side,
"amount": size
}
else:
params = {
"pair": trading.lower()+"_"+settlement.upper(),
"pair": trading.lower() + "_" + settlement.upper(),
"order_type": side,
"rate": price,
"amount": size
Expand All @@ -128,16 +128,16 @@ def get_open_orders(self, symbol="BTC_JPY"):
OPEN_ORDERS_RESOURCE, {}, self._apikey, self._secretkey)
return json

def cancel_order(self, symbol,order_id):
CANCEL_ORDERS_RESOURCE = "/api/exchange/orders/"+order_id
def cancel_order(self, symbol, order_id):
CANCEL_ORDERS_RESOURCE = "/api/exchange/orders/" + order_id
self.httpDelete(COINCHECK_REST_URL,
CANCEL_ORDERS_RESOURCE, {}, self._apikey, self._secretkey)

def get_fee(self, symbol = "BTC_JPY"):
def get_fee(self, symbol="BTC_JPY"):
GET_FEE_RESOURCE = "/api/accounts"
json = self.httpGet(COINCHECK_REST_URL, GET_FEE_RESOURCE, {}, self._apikey, self._secretkey)

return [json["taker_fee"],json["maker_fee"]]
return [json["taker_fee"], json["maker_fee"]]

def balance(self):
BALANCE_RESOURCE = "/api/accounts/balance"
Expand Down
3 changes: 2 additions & 1 deletion cryptojp/errors.py
Expand Up @@ -8,5 +8,6 @@ def wrapper(*args, **kwargs):
raise(e)
return wrapper


class SymbolNotFound(Exception):
pass
pass
14 changes: 7 additions & 7 deletions cryptojp/hitbtc.py
Expand Up @@ -27,8 +27,8 @@ def settlements(self):
SETTLEMENTS_RESOURCE).json()
return list(set([j["quoteCurrency"] for j in json]))

def ticker(self, item='BTCUSD'):
TICKER_RESOURCE = "/api/2/public/ticker/" + item
def ticker(self, trading, settlement):
TICKER_RESOURCE = "/api/2/public/ticker/" + trading.lower() + settlement.lower()
json = self.session.get('https://' + HITBTC_REST_URL +
TICKER_RESOURCE).json()
return Ticker(
Expand Down Expand Up @@ -75,15 +75,15 @@ def get_open_orders(self, symbol="BTCUSD"):
OPEN_ORDERS_RESOURCE).json()
return json

def cancel_order(self, symbol,order_id):
CANCEL_ORDER_RESOURCE = "/api/2/order/"+order_id
def cancel_order(self, symbol, order_id):
CANCEL_ORDER_RESOURCE = "/api/2/order/" + order_id
self.session.delete('https://' + HITBTC_REST_URL +
CANCEL_ORDER_RESOURCE).json()

def get_fee(self, symbol = "BTCUSD"):
GET_FEE_RESOURCE = "/api/2/trading/fee/"+symbol
def get_fee(self, symbol="BTCUSD"):
GET_FEE_RESOURCE = "/api/2/trading/fee/" + symbol
json = self.session.get('https://' + HITBTC_REST_URL +
GET_FEE_RESOURCE).json()
GET_FEE_RESOURCE).json()
return [json["takeLiquidityRate"], json['provideLiquidityRate']]

def balance(self):
Expand Down

0 comments on commit 29e4b7a

Please sign in to comment.