diff options
author | uvok | 2025-04-14 10:43:35 +0200 |
---|---|---|
committer | uvok | 2025-04-14 10:43:35 +0200 |
commit | ceedc4c3c19da7f01e1c315cb5c41bf4a4c59672 (patch) | |
tree | 67e3a819d8dbadba7434906246fdd7da7b5cc892 /bla.py | |
parent | eb1feb5219bab8398b53f5d80df4f901366b0b59 (diff) |
Split files, add zest
Diffstat (limited to 'bla.py')
-rw-r--r-- | bla.py | 53 |
1 files changed, 2 insertions, 51 deletions
@@ -1,58 +1,9 @@ import csv -from collections import defaultdict, deque +from collections import defaultdict from datetime import datetime -class Trade: - def __init__(self, amount, total_cost, date): - self.amount = amount - self.total_cost = total_cost - self.date = date +from trade_queue import FIFOQueue - def __repr__(self): - return f"Trade(amount={self.amount}, total_cost={self.total_cost}, date={self.date})" - -class FIFOQueue: - """ - Crypto trading FIFO queue. - - Will track trades. - """ - def __init__(self): - self.queue = deque() - - def add(self, amount, total_cost, date): - """ - Add a trade to the queue. - """ - trade = Trade(amount, total_cost, date) - self.queue.append(trade) - - def remove(self, amount): - """ - Remove a specified amount from the queue, returning the - trades used to buy. - """ - if amount <= 0: - raise ValueError("The amount to remove must be positive.") - - remaining = amount - entries = [] - - while remaining > 0: - if not self.queue: - raise ValueError(f"Insufficient assets in queue to process sale of {amount}.") - - trade = self.queue[0] - if trade.amount > remaining: - trade.amount -= remaining - entries.append(Trade(remaining, trade.total_cost, trade.date)) - remaining = 0 - else: - remaining -= trade.amount - entries.append(trade) - self.queue.popleft() - - return entries def generate_report(sale_entries, proceeds, crypto_asset, date_sold): report = [] |