Skip to content

Commit

Permalink
Finished implementing API for authenticated calls
Browse files Browse the repository at this point in the history
Test coverage is still not complete
  • Loading branch information
fccoelho committed Feb 20, 2016
1 parent ebeaf29 commit ec0e6fd
Showing 1 changed file with 141 additions and 20 deletions.
161 changes: 141 additions & 20 deletions bitfinex/client.py
Original file line number Diff line number Diff line change
Expand Up @@ -56,6 +56,103 @@ def _sign_payload(self, payload):
"X-BFX-PAYLOAD": data
}

def place_order(self, amount, price, side, ord_type, symbol='btcusd', exchange='bitfinex'):
"""
Submit a new order.
:param amount:
:param price:
:param side:
:param ord_type:
:param symbol:
:param exchange:
:return:
"""
payload = {

"request": "/v1/order/new",
"nonce": self._nonce,
"symbol": symbol,
"amount": amount,
"price": price,
"exchange": exchange,
"side": side,
"type": ord_type

}

signed_payload = self._sign_payload(payload)
r = requests.post(self.URL + "/order/new", headers=signed_payload, verify=True)
json_resp = r.json()

try:
json_resp['order_id']
except:
return json_resp['message']

return json_resp

def delete_order(self, order_id):
"""
Cancel an order.
:param order_id:
:return:
"""
payload = {
"request": "/v1/order/cancel",
"nonce": self._nonce,
"order_id": order_id
}

signed_payload = self._sign_payload(payload)
r = requests.post(self.URL + "/order/cancel", headers=signed_payload, verify=True)
json_resp = r.json()

try:
json_resp['avg_excution_price']
except:
return json_resp['message']

return json_resp

def delete_all_orders(self):
"""
Cancel all orders.
:return:
"""
payload = {
"request": "/v1/order/cancel/all",
"nonce": self._nonce,
}

signed_payload = self._sign_payload(payload)
r = requests.post(self.URL + "/order/cancel/all", headers=signed_payload, verify=True)
json_resp = r.json()
return json_resp

def status_order(self, order_id):
"""
Get the status of an order. Is it active? Was it cancelled? To what extent has it been executed? etc.
:param order_id:
:return:
"""
payload = {
"request": "/v1/order/status",
"nonce": self._nonce,
"order_id": order_id
}

signed_payload = self._sign_payload(payload)
r = requests.post(self.URL + "/order/status", headers=signed_payload, verify=True)
json_resp = r.json()

try:
json_resp['avg_excution_price']
except:
return json_resp['message']

return json_resp

def active_orders(self):
"""
Fetch active orders
Expand All @@ -72,7 +169,7 @@ def active_orders(self):

return json_resp

def active_positions(self): # view your active positions.
def active_positions(self):
"""
Fetch active Positions
"""
Expand All @@ -87,14 +184,16 @@ def active_positions(self): # view your active positions.
json_resp = r.json()
return json_resp

def claim_position(self, position_id): # Claim a position.

def claim_position(self, position_id):
"""
Claim a position.
:param position_id:
:return:
"""
payload = {

"request": "/v1/position/claim",
"nonce": self._nonce,
"position_id": position_id

}

signed_payload = self._sign_payload(payload)
Expand All @@ -103,15 +202,18 @@ def claim_position(self, position_id): # Claim a position.

return json_resp

def past_trades(self, timestamp=0, symbol='btcusd'): # view your past trades

def past_trades(self, timestamp=0, symbol='btcusd'):
"""
Fetch past trades
:param timestamp:
:param symbol:
:return:
"""
payload = {

"request": "/v1/mytrades",
"nonce": self._nonce,
"symbol": symbol,
"timestamp": timestamp

}

signed_payload = self._sign_payload(payload)
Expand All @@ -121,16 +223,23 @@ def past_trades(self, timestamp=0, symbol='btcusd'): # view your past trades
return json_resp

def place_offer(self, currency, amount, rate, period, direction):
payload = {
"""
:param currency:
:param amount:
:param rate:
:param period:
:param direction:
:return:
"""
payload = {
"request": "/v1/offer/new",
"nonce": self._nonce,
"currency": currency,
"amount": amount,
"rate": rate,
"period": period,
"direction": direction

}

signed_payload = self._sign_payload(payload)
Expand All @@ -140,12 +249,15 @@ def place_offer(self, currency, amount, rate, period, direction):
return json_resp

def cancel_offer(self, offer_id):
payload = {
"""
:param offer_id:
:return:
"""
payload = {
"request": "/v1/offer/cancel",
"nonce": self._nonce,
"offer_id": offer_id

}

signed_payload = self._sign_payload(payload)
Expand All @@ -155,12 +267,15 @@ def cancel_offer(self, offer_id):
return json_resp

def status_offer(self, offer_id):
payload = {
"""
:param offer_id:
:return:
"""
payload = {
"request": "/v1/offer/status",
"nonce": self._nonce,
"offer_id": offer_id

}

signed_payload = self._sign_payload(payload)
Expand All @@ -170,11 +285,13 @@ def status_offer(self, offer_id):
return json_resp

def active_offers(self):
"""
Fetch active_offers
:return:
"""
payload = {

"request": "/v1/offers",
"nonce": self._nonce

}

signed_payload = self._sign_payload(payload)
Expand All @@ -183,8 +300,12 @@ def active_offers(self):

return json_resp

def balances(self): # see your balances.
def balances(self):
"""
Fetch balances
:return:
"""
payload = {
"request": "/v1/balances",
"nonce": self._nonce
Expand Down Expand Up @@ -221,7 +342,7 @@ def url_for(self, path, path_arg=None, parameters=None):

# Append any parameters to the URL.
if parameters:
url = "%s?%s" % (url, self._build_parameters(parameters))
url = "%s?%s" % (self.URL, self._build_parameters(parameters))

return url

Expand Down Expand Up @@ -361,7 +482,7 @@ def _convert_to_floats(self, data):


def _get(self, url):
return requests.get(url, timeout=TIMEOUT).json()
return requests.get(self.URL, timeout=TIMEOUT).json()


def _build_parameters(self, parameters):
Expand Down

0 comments on commit ec0e6fd

Please sign in to comment.