diff --git a/mt5_parser.py b/mt5_parser.py index 56601d1..445af57 100644 --- a/mt5_parser.py +++ b/mt5_parser.py @@ -365,15 +365,19 @@ def parse_open_positions(file_bytes) -> 'pd.DataFrame | None': try: vol_str = cells[4].split('/')[0].strip() positions.append({ - 'open_time' : _to_dt(cells[0]), - 'position' : cells[1], - 'symbol' : cells[2], - 'type' : cells[3].lower(), - 'volume' : _to_float(vol_str), - 'open_price' : _to_float(cells[5]), - 'sl' : _to_float(cells[6]) if len(cells) > 6 else None, - 'tp' : _to_float(cells[7]) if len(cells) > 7 else None, - 'status' : 'open', + 'open_time' : _to_dt(cells[0]), + 'position' : cells[1], + 'symbol' : cells[2], + 'type' : cells[3].lower(), + 'volume' : _to_float(vol_str), + 'open_price' : _to_float(cells[5]), + 'sl' : _to_float(cells[6]) if len(cells) > 6 else None, + 'tp' : _to_float(cells[7]) if len(cells) > 7 else None, + 'market_price' : _to_float(cells[8]) if len(cells) > 8 else None, + 'swap' : _to_float(cells[9]) if len(cells) > 9 else None, + 'profit' : _to_float(cells[10]) if len(cells) > 10 else None, + 'comment' : cells[11] if len(cells) > 11 else '', + 'status' : 'open', }) except Exception: pass diff --git a/view_live_mt5_eas.py b/view_live_mt5_eas.py index f5a3178..4320815 100644 --- a/view_live_mt5_eas.py +++ b/view_live_mt5_eas.py @@ -683,35 +683,31 @@ cache/ if _all_open: open_df = pd.concat(_all_open, ignore_index=True) - - # Show all available columns in a logical order with friendly names - col_order = ["_account","position","symbol","symbol_base","type", - "volume","open_time","open_price","sl","tp","status"] + col_order = ["_account","open_time","position","symbol","type","volume", + "open_price","sl","tp","market_price","swap","profit","comment"] show_cols = [c for c in col_order if c in open_df.columns] - # Also append any unexpected extra columns the parser may return - show_cols += [c for c in open_df.columns if c not in show_cols] - rename_map = { - "_account" : "Account", - "position" : "Position", - "symbol" : "Symbol", - "symbol_base": "Base", - "type" : "Type", - "volume" : "Lots", - "open_time" : "Open Time", - "open_price": "Open Price", - "sl" : "SL", - "tp" : "TP", - "status" : "Status", + "_account" : "Account", + "open_time" : "Time", + "position" : "Position", + "symbol" : "Symbol", + "type" : "Type", + "volume" : "Volume", + "open_price" : "Price", + "sl" : "S/L", + "tp" : "T/P", + "market_price": "Market Price", + "swap" : "Swap", + "profit" : "Profit", + "comment" : "Comment", } - disp_df = open_df[show_cols].rename(columns=rename_map) - if "Open Time" in disp_df.columns: - disp_df["Open Time"] = pd.to_datetime( - disp_df["Open Time"], errors="coerce" + disp = open_df[show_cols].rename(columns=rename_map).copy() + if "Time" in disp.columns: + disp["Time"] = pd.to_datetime( + disp["Time"], errors="coerce" ).dt.strftime("%d.%m.%Y %H:%M") - with st.expander(f"🔴 Open Positions ({len(open_df)})", expanded=True): - st.dataframe(disp_df, use_container_width=True, hide_index=True) + st.dataframe(disp, use_container_width=True, hide_index=True) else: st.caption("No open positions in current reports.")