summaryrefslogtreecommitdiff
path: root/bla.py
diff options
context:
space:
mode:
Diffstat (limited to 'bla.py')
-rw-r--r--bla.py53
1 files changed, 2 insertions, 51 deletions
diff --git a/bla.py b/bla.py
index f9de595..6c2a4c2 100644
--- a/bla.py
+++ b/bla.py
@@ -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 = []