diff options
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 = [] |