aboutsummaryrefslogtreecommitdiff
path: root/market.py
diff options
context:
space:
mode:
Diffstat (limited to 'market.py')
-rw-r--r--market.py53
1 files changed, 53 insertions, 0 deletions
diff --git a/market.py b/market.py
index 63eff5a..1601e2d 100644
--- a/market.py
+++ b/market.py
@@ -25,6 +25,19 @@ def poloniex_fetch_balance(self, params={}):
25 return self.parse_balance(result) 25 return self.parse_balance(result)
26ccxt.poloniex.fetch_balance = poloniex_fetch_balance 26ccxt.poloniex.fetch_balance = poloniex_fetch_balance
27 27
28def poloniex_fetch_balance_per_type(self):
29 balances = self.privatePostReturnAvailableAccountBalances()
30 result = {'info': balances}
31 for key, balance in balances.items():
32 result[key] = {}
33 for currency, amount in balance.items():
34 if currency not in result:
35 result[currency] = {}
36 result[currency][key] = decimal.Decimal(amount)
37 result[key][currency] = decimal.Decimal(amount)
38 return result
39ccxt.poloniex.fetch_balance_per_type = poloniex_fetch_balance_per_type
40
28def poloniex_parse_ticker(self, ticker, market=None): 41def poloniex_parse_ticker(self, ticker, market=None):
29 timestamp = self.milliseconds() 42 timestamp = self.milliseconds()
30 symbol = None 43 symbol = None
@@ -51,7 +64,47 @@ def poloniex_parse_ticker(self, ticker, market=None):
51 'info': ticker, 64 'info': ticker,
52 } 65 }
53ccxt.poloniex.parse_ticker = poloniex_parse_ticker 66ccxt.poloniex.parse_ticker = poloniex_parse_ticker
67
68def poloniex_create_margin_order(self, symbol, type, side, amount, price=None, lending_rate=None, params={}):
69 if type == 'market':
70 raise ccxt.ExchangeError(self.id + ' allows limit orders only')
71 self.load_markets()
72 method = 'privatePostMargin' + self.capitalize(side)
73 market = self.market(symbol)
74 price = float(price)
75 amount = float(amount)
76 if lending_rate is not None:
77 params = self.extend({"lendingRate": lending_rate}, params)
78 response = getattr(self, method)(self.extend({
79 'currencyPair': market['id'],
80 'rate': self.price_to_precision(symbol, price),
81 'amount': self.amount_to_precision(symbol, amount),
82 }, params))
83 timestamp = self.milliseconds()
84 order = self.parse_order(self.extend({
85 'timestamp': timestamp,
86 'status': 'open',
87 'type': type,
88 'side': side,
89 'price': price,
90 'amount': amount,
91 }, response), market)
92 id = order['id']
93 self.orders[id] = order
94 return self.extend({'info': response}, order)
95
96def poloniex_create_order(self, symbol, type, side, amount, price=None, account="exchange", lending_rate=None, params={}):
97 if account == "exchange":
98 return self.create_exchange_order(symbol, type, side, amount, price=price, params=params)
99 elif account == "margin":
100 return self.create_margin_order(symbol, type, side, amount, price=price, lending_rate=lending_rate, params=params)
101 else:
102 raise NotImplementedError
103ccxt.poloniex.create_exchange_order = ccxt.poloniex.create_order
104ccxt.poloniex.create_order = poloniex_create_order
105
54market = ccxt.poloniex({ 106market = ccxt.poloniex({
55 "apiKey": "XXXXXXXX-XXXXXXXX-XXXXXXXX-XXXXXXXX", 107 "apiKey": "XXXXXXXX-XXXXXXXX-XXXXXXXX-XXXXXXXX",
56 "secret": "1234567890abcdef1234567890abcdef1234567890abcdef1234567890abcdef1234567890abcdef1234567890abcdef1234567890abcdef1234567890abcdef", 108 "secret": "1234567890abcdef1234567890abcdef1234567890abcdef1234567890abcdef1234567890abcdef1234567890abcdef1234567890abcdef1234567890abcdef",
57 }) 109 })
110