aboutsummaryrefslogtreecommitdiff
path: root/portfolio.py
diff options
context:
space:
mode:
authorIsmaël Bouya <ismael.bouya@normalesup.org>2018-03-12 01:55:17 +0100
committerIsmaël Bouya <ismael.bouya@normalesup.org>2018-03-12 02:03:17 +0100
commit186f7d816a6bfc4fbf64027c3d7ecea10b97db38 (patch)
tree0c04c4ace99227a054c6e9015b6f4fdc07c4b4e2 /portfolio.py
parentf9226903cb53a9b303a26de562e321159349f8df (diff)
downloadTrader-186f7d816a6bfc4fbf64027c3d7ecea10b97db38.tar.gz
Trader-186f7d816a6bfc4fbf64027c3d7ecea10b97db38.tar.zst
Trader-186f7d816a6bfc4fbf64027c3d7ecea10b97db38.zip
Fix fullfiled not having correct currencies
Diffstat (limited to 'portfolio.py')
-rw-r--r--portfolio.py17
1 files changed, 9 insertions, 8 deletions
diff --git a/portfolio.py b/portfolio.py
index 0f2c011..65fdc6c 100644
--- a/portfolio.py
+++ b/portfolio.py
@@ -291,6 +291,7 @@ class Trade:
291 self.orders = [] 291 self.orders = []
292 self.market = market 292 self.market = market
293 self.closed = False 293 self.closed = False
294 self.inverted = None
294 assert self.value_from.value * self.value_to.value >= 0 295 assert self.value_from.value * self.value_to.value >= 0
295 assert self.value_from.currency == self.value_to.currency 296 assert self.value_from.currency == self.value_to.currency
296 if self.value_from != 0: 297 if self.value_from != 0:
@@ -315,8 +316,8 @@ class Trade:
315 else: 316 else:
316 return "dispose" 317 return "dispose"
317 318
318 def order_action(self, inverted): 319 def order_action(self):
319 if (self.value_from < self.value_to) != inverted: 320 if (self.value_from < self.value_to) != self.inverted:
320 return "buy" 321 return "buy"
321 else: 322 else:
322 return "sell" 323 return "sell"
@@ -339,7 +340,7 @@ class Trade:
339 340
340 @property 341 @property
341 def is_fullfiled(self): 342 def is_fullfiled(self):
342 return abs(self.filled_amount(in_base_currency=True)) >= abs(self.delta) 343 return abs(self.filled_amount(in_base_currency=(not self.inverted))) >= abs(self.delta)
343 344
344 def filled_amount(self, in_base_currency=False): 345 def filled_amount(self, in_base_currency=False):
345 filled_amount = 0 346 filled_amount = 0
@@ -385,17 +386,17 @@ class Trade:
385 if self.action is None: 386 if self.action is None:
386 return None 387 return None
387 ticker = self.market.get_ticker(self.currency, self.base_currency) 388 ticker = self.market.get_ticker(self.currency, self.base_currency)
388 inverted = ticker["inverted"] 389 self.inverted = ticker["inverted"]
389 if inverted: 390 if self.inverted:
390 ticker = ticker["original"] 391 ticker = ticker["original"]
391 rate = Computation.compute_value(ticker, self.order_action(inverted), compute_value=compute_value) 392 rate = Computation.compute_value(ticker, self.order_action(), compute_value=compute_value)
392 393
393 # FIXME: Dust amount should be removed from there if they werent 394 # FIXME: Dust amount should be removed from there if they werent
394 # honored in other sales 395 # honored in other sales
395 delta_in_base = abs(self.delta) 396 delta_in_base = abs(self.delta)
396 # 9 BTC's worth of move (10 - 1 or 1 - 10 depending on case) 397 # 9 BTC's worth of move (10 - 1 or 1 - 10 depending on case)
397 398
398 if not inverted: 399 if not self.inverted:
399 base_currency = self.base_currency 400 base_currency = self.base_currency
400 # BTC 401 # BTC
401 if self.action == "dispose": 402 if self.action == "dispose":
@@ -453,7 +454,7 @@ class Trade:
453 self.market.report.log_error("prepare_order", message="Less to do than already filled: {}".format(delta)) 454 self.market.report.log_error("prepare_order", message="Less to do than already filled: {}".format(delta))
454 return None 455 return None
455 456
456 order = Order(self.order_action(inverted), 457 order = Order(self.order_action(),
457 delta, rate, base_currency, self.trade_type, 458 delta, rate, base_currency, self.trade_type,
458 self.market, self, close_if_possible=close_if_possible) 459 self.market, self, close_if_possible=close_if_possible)
459 self.orders.append(order) 460 self.orders.append(order)