diff options
author | uvok | 2025-04-14 10:42:59 +0200 |
---|---|---|
committer | uvok | 2025-04-14 10:42:59 +0200 |
commit | eb1feb5219bab8398b53f5d80df4f901366b0b59 (patch) | |
tree | 8adc17c94f5342d1d19d40cf2bc32b550ca68804 /bla.py | |
parent | 0d5c3d9f3e1e093723eee215d8170bb956038884 (diff) |
Separate trade class
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") |