- value_from = self.value_from.linked_to
- value_to = self.value_to.in_currency(self.currency, self.market)
- delta = abs(value_to - value_from)
+ if self.action == "sell":
+ # I have 10 BTC worth of FOO, and I want to sell 9 BTC worth of it
+ # At rate 1 Foo = 0.1 BTC
+ value_from = self.value_from.linked_to
+ # value_from = 100 FOO
+ value_to = self.value_to.in_currency(self.currency, self.market, rate=1/self.value_from.rate)
+ # value_to = 10 FOO (1 BTC * 1/0.1)
+ delta = abs(value_to - value_from)
+ # delta = 90 FOO
+ # Action: "sell" "90 FOO" at rate "0.1" "BTC" on "market"
+
+ # Note: no rounding error possible: if we have value_to == 0, then delta == value_from
+ else:
+ delta = delta_in_base.in_currency(self.currency, self.market, rate=1/rate)
+ # I want to buy 9 / 0.1 FOO
+ # Action: "buy" "90 FOO" at rate "0.1" "BTC" on "market"
+
+ # FIXME: Need to round up to the correct amount of FOO in case
+ # we want to use all BTC