diff options
Diffstat (limited to 'portfolio.py')
-rw-r--r-- | portfolio.py | 17 |
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) |