diff options
Diffstat (limited to 'bla.py')
-rw-r--r-- | bla.py | 28 |
1 files changed, 18 insertions, 10 deletions
@@ -2,6 +2,15 @@ import csv from collections import defaultdict, deque from datetime import datetime +class Trade: + def __init__(self, amount, total_cost, date): + self.amount = amount + self.total_cost = total_cost + self.date = date + + def __repr__(self): + return f"Trade(amount={self.amount}, total_cost={self.total_cost}, date={self.date})" + class FIFOQueue: """ Crypto trading FIFO queue. @@ -13,10 +22,10 @@ class FIFOQueue: def add(self, amount, total_cost, date): """ - Add trade to queue. + Add a trade to the queue. """ - - self.queue.append((amount, total_cost, date)) + trade = Trade(amount, total_cost, date) + self.queue.append(trade) def remove(self, amount): """ @@ -33,19 +42,18 @@ class FIFOQueue: if not self.queue: raise ValueError(f"Insufficient assets in queue to process sale of {amount}.") - quantity, total_cost, date = self.queue[0] - if quantity > remaining: - self.queue[0] = (quantity - remaining, total_cost, date) - entries.append((remaining, total_cost, date)) + trade = self.queue[0] + if trade.amount > remaining: + trade.amount -= remaining + entries.append(Trade(remaining, trade.total_cost, trade.date)) remaining = 0 else: - remaining -= quantity - entries.append((quantity, total_cost, date)) + remaining -= trade.amount + entries.append(trade) self.queue.popleft() return entries - def generate_report(sale_entries, proceeds, crypto_asset, date_sold): report = [] sell_date = datetime.strptime(date_sold, "%Y-%m-%d").strftime("%d.%m.%Y") |