feat: Add comprehensive editing capabilities for trading plans

This commit is contained in:
Bobby (aider) 2025-02-11 18:40:44 -08:00
parent 430520a307
commit e7946667e4

View File

@ -985,18 +985,95 @@ def trading_plan_page():
if selected_plan_id:
plan = get_trading_plan(selected_plan_id)
if plan:
# Add similar form fields as in add_tab but with plan's current values
# This is a simplified version - you might want to add all fields
plan_name = st.text_input("Plan Name", value=plan.plan_name, key="edit_plan_name")
status = st.selectbox("Status",
[s.value for s in PlanStatus],
index=[s.value for s in PlanStatus].index(plan.status.value),
key="edit_status")
# Basic Info
col1, col2 = st.columns(2)
with col1:
plan_name = st.text_input("Plan Name", value=plan.plan_name, key="edit_plan_name")
status = st.selectbox("Status", [s.value for s in PlanStatus], index=[s.value for s in PlanStatus].index(plan.status.value), key="edit_status")
timeframe = st.selectbox("Timeframe", [t.value for t in Timeframe], index=[t.value for t in Timeframe].index(plan.timeframe.value), key="edit_timeframe")
market_focus = st.selectbox("Market Focus", [m.value for m in MarketFocus], index=[m.value for m in MarketFocus].index(plan.market_focus.value), key="edit_market_focus")
with col2:
trade_frequency = st.selectbox("Trade Frequency", [f.value for f in TradeFrequency], index=[f.value for f in TradeFrequency].index(plan.trade_frequency.value), key="edit_trade_frequency")
plan_author = st.text_input("Author", value=plan.plan_author, key="edit_plan_author")
strategy_version = st.number_input("Version", min_value=1, value=plan.strategy_version, key="edit_strategy_version")
# Risk Parameters
st.subheader("Risk Parameters")
col1, col2 = st.columns(2)
with col1:
stop_loss = st.number_input("Stop Loss %", min_value=0.1, value=plan.stop_loss, key="edit_stop_loss")
profit_target = st.number_input("Profit Target %", min_value=0.1, value=plan.profit_target, key="edit_profit_target")
risk_reward_ratio = profit_target / stop_loss if stop_loss > 0 else 0
st.write(f"Risk:Reward Ratio: {risk_reward_ratio:.2f}")
with col2:
position_sizing = st.number_input("Position Size %", min_value=0.1, value=plan.position_sizing, key="edit_position_sizing")
total_risk_per_trade = st.number_input("Risk per Trade %", min_value=0.1, value=plan.total_risk_per_trade, key="edit_total_risk_per_trade")
max_portfolio_risk = st.number_input("Max Portfolio Risk %", min_value=0.1, value=plan.max_portfolio_risk, key="edit_max_portfolio_risk")
# Trade Rules
st.subheader("Trade Rules")
col1, col2 = st.columns(2)
with col1:
max_trades_per_day = st.number_input("Max Trades per Day", min_value=1, value=plan.max_trades_per_day, key="edit_max_trades_per_day")
max_trades_per_week = st.number_input("Max Trades per Week", min_value=1, value=plan.max_trades_per_week, key="edit_max_trades_per_week")
maximum_drawdown = st.number_input("Maximum Drawdown %", min_value=0.1, value=plan.maximum_drawdown, key="edit_maximum_drawdown")
# Strategy Details
st.subheader("Strategy Details")
entry_criteria = st.text_area("Entry Criteria", value=plan.entry_criteria, key="edit_entry_criteria")
exit_criteria = st.text_area("Exit Criteria", value=plan.exit_criteria, key="edit_exit_criteria")
entry_confirmation = st.text_area("Entry Confirmation", value=plan.entry_confirmation, key="edit_entry_confirmation")
market_conditions = st.text_area("Market Conditions", value=plan.market_conditions, key="edit_market_conditions")
indicators_used = st.text_area("Technical Indicators", value=plan.indicators_used, key="edit_indicators_used")
# Risk Management
st.subheader("Risk Management")
adjustments_for_drawdown = st.text_area("Drawdown Adjustments", value=plan.adjustments_for_drawdown, key="edit_adjustments_for_drawdown")
risk_controls = st.text_area("Risk Controls", value=plan.risk_controls, key="edit_risk_controls")
# Optional Fields
st.subheader("Additional Information")
col1, col2 = st.columns(2)
with col1:
sector_focus = st.text_input("Sector Focus (optional)", value=plan.sector_focus, key="edit_sector_focus")
fundamental_criteria = st.text_area("Fundamental Criteria (optional)", value=plan.fundamental_criteria, key="edit_fundamental_criteria")
with col2:
options_strategy_details = st.text_area("Options Strategy Details (optional)", value=plan.options_strategy_details, key="edit_options_strategy_details")
improvements_needed = st.text_area("Improvements Needed (optional)", value=plan.improvements_needed, key="edit_improvements_needed")
if st.button("Update Plan", key="update_plan_button"):
try:
# Update the plan with new values
plan.plan_name = plan_name
plan.status = PlanStatus(status)
plan.timeframe = Timeframe(timeframe)
plan.market_focus = MarketFocus(market_focus)
plan.trade_frequency = TradeFrequency(trade_frequency)
plan.plan_author = plan_author
plan.strategy_version = strategy_version
plan.stop_loss = stop_loss
plan.profit_target = profit_target
plan.position_sizing = position_sizing
plan.total_risk_per_trade = total_risk_per_trade
plan.max_portfolio_risk = max_portfolio_risk
plan.max_trades_per_day = max_trades_per_day
plan.max_trades_per_week = max_trades_per_week
plan.maximum_drawdown = maximum_drawdown
plan.entry_criteria = entry_criteria
plan.exit_criteria = exit_criteria
plan.entry_confirmation = entry_confirmation
plan.market_conditions = market_conditions
plan.indicators_used = indicators_used
plan.adjustments_for_drawdown = adjustments_for_drawdown
plan.risk_controls = risk_controls
plan.sector_focus = sector_focus
plan.fundamental_criteria = fundamental_criteria
plan.options_strategy_details = options_strategy_details
plan.improvements_needed = improvements_needed
update_trading_plan(plan)
st.success("Plan updated successfully!")
st.experimental_set_query_params(rerun=True)