feat: Add delete trade functionality to journal menu
This commit is contained in:
parent
5aa6d0effe
commit
e89f673709
@ -475,6 +475,28 @@ def get_current_prices(tickers: list) -> dict:
|
|||||||
print(f"Error getting price for {ticker}: {e}")
|
print(f"Error getting price for {ticker}: {e}")
|
||||||
return prices
|
return prices
|
||||||
|
|
||||||
|
def delete_trade(trade_id: int) -> bool:
|
||||||
|
"""
|
||||||
|
Delete a trade from the database
|
||||||
|
|
||||||
|
Args:
|
||||||
|
trade_id (int): ID of trade to delete
|
||||||
|
|
||||||
|
Returns:
|
||||||
|
bool: True if deletion was successful
|
||||||
|
"""
|
||||||
|
try:
|
||||||
|
with create_client() as client:
|
||||||
|
query = f"""
|
||||||
|
ALTER TABLE stock_db.trades
|
||||||
|
DELETE WHERE id = {trade_id}
|
||||||
|
"""
|
||||||
|
client.command(query)
|
||||||
|
return True
|
||||||
|
except Exception as e:
|
||||||
|
print(f"Error deleting trade: {e}")
|
||||||
|
return False
|
||||||
|
|
||||||
def get_trade_history(limit: int = 50):
|
def get_trade_history(limit: int = 50):
|
||||||
with create_client() as client:
|
with create_client() as client:
|
||||||
query = f"""
|
query = f"""
|
||||||
@ -499,7 +521,8 @@ def journal_menu():
|
|||||||
print("2. Update Existing Trade")
|
print("2. Update Existing Trade")
|
||||||
print("3. View Open Trades")
|
print("3. View Open Trades")
|
||||||
print("4. View Trade History")
|
print("4. View Trade History")
|
||||||
print("5. Return to Main Menu")
|
print("5. Delete Trade")
|
||||||
|
print("6. Return to Main Menu")
|
||||||
|
|
||||||
choice = input("\nSelect an option (1-5): ")
|
choice = input("\nSelect an option (1-5): ")
|
||||||
|
|
||||||
@ -830,4 +853,41 @@ def journal_menu():
|
|||||||
print("-" * 40)
|
print("-" * 40)
|
||||||
|
|
||||||
elif choice == "5":
|
elif choice == "5":
|
||||||
|
# Show all trades (both open and closed)
|
||||||
|
print("\nAll Trades:")
|
||||||
|
with create_client() as client:
|
||||||
|
query = "SELECT * FROM stock_db.trades ORDER BY entry_date DESC"
|
||||||
|
result = client.query(query).result_rows
|
||||||
|
columns = ['id', 'position_id', 'ticker', 'entry_date', 'shares', 'entry_price',
|
||||||
|
'target_price', 'stop_loss', 'strategy', 'order_type', 'followed_rules',
|
||||||
|
'entry_reason', 'exit_price', 'exit_date', 'exit_reason', 'notes', 'created_at']
|
||||||
|
trades = [dict(zip(columns, row)) for row in result]
|
||||||
|
|
||||||
|
for trade in trades:
|
||||||
|
print(f"\nID: {trade['id']}")
|
||||||
|
print(f"Ticker: {trade['ticker']}")
|
||||||
|
print(f"Entry Date: {trade['entry_date']}")
|
||||||
|
print(f"Shares: {trade['shares']}")
|
||||||
|
print(f"Entry Price: ${trade['entry_price']}")
|
||||||
|
if trade['exit_price']:
|
||||||
|
print(f"Exit Price: ${trade['exit_price']}")
|
||||||
|
print(f"Exit Date: {trade['exit_date']}")
|
||||||
|
pl = (trade['exit_price'] - trade['entry_price']) * trade['shares']
|
||||||
|
print(f"P/L: ${pl:.2f}")
|
||||||
|
print("-" * 40)
|
||||||
|
|
||||||
|
trade_id = get_user_input("\nEnter trade ID to delete:", int)
|
||||||
|
if trade_id is None:
|
||||||
|
continue
|
||||||
|
|
||||||
|
confirm = input(f"Are you sure you want to delete trade {trade_id}? (y/n): ").lower()
|
||||||
|
if confirm == 'y':
|
||||||
|
if delete_trade(trade_id):
|
||||||
|
print("Trade deleted successfully!")
|
||||||
|
else:
|
||||||
|
print("Failed to delete trade.")
|
||||||
|
else:
|
||||||
|
print("Delete cancelled.")
|
||||||
|
|
||||||
|
elif choice == "6":
|
||||||
break
|
break
|
||||||
|
|||||||
Loading…
Reference in New Issue
Block a user