feat: Add comprehensive editing capabilities for trading plans
This commit is contained in:
parent
430520a307
commit
e7946667e4
@ -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)
|
||||
|
||||
Loading…
Reference in New Issue
Block a user