summaryrefslogtreecommitdiff
path: root/bla.py
diff options
context:
space:
mode:
authoruvok2025-04-14 10:42:59 +0200
committeruvok2025-04-14 10:42:59 +0200
commiteb1feb5219bab8398b53f5d80df4f901366b0b59 (patch)
tree8adc17c94f5342d1d19d40cf2bc32b550ca68804 /bla.py
parent0d5c3d9f3e1e093723eee215d8170bb956038884 (diff)
Separate trade class
Diffstat (limited to 'bla.py')
-rw-r--r--bla.py28
1 files changed, 18 insertions, 10 deletions
diff --git a/bla.py b/bla.py
index d96f447..f9de595 100644
--- a/bla.py
+++ b/bla.py
@@ -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")