Files
mt5-tools/__pycache__/view_trade_analysis.cpython-314.pyc
T

181 lines
33 KiB
Plaintext
Raw Normal View History

2026-04-12 18:25:46 +10:00
+
ĘĹŢieăóćRt^RIt^RIHt^RIt^RIt]PP^]PP]PP] 444^RI
2026-04-12 18:25:46 +10:00
HtHtRtRtR#)uk
pages/trade_analysis.py
=======================
MT5 Trade Analysis page — migrated from main dashboard.
2026-04-14 08:39:30 +10:00
N)Údetect_and_parseÚ
calc_statscór^RIpVP4pRVP9dRVP9d
VR,VR&RVP9dRVP9d
VR,VR&RVP9dRVR&RVP9dRVR&R VP9dRVR &R
VP9dRVR
&R VP9d!RVP9dVR,^8„VR &R VP9d„VPVR ,R
R7VR &RVP9d%VR ,PP 4VR&RVP9d!VR ,PP VR&RVP9dVPVR,R
R7VR&RVP9dkR VP9dZRVP9dIVR,VR ,,
PP4^<, P^4VR&V#)zFMap IC Markets DataFrame columns to the schema expected by calc_stats.NÚ symbol_baseÚstrategyÚ
net_profitÚprofitÚ
2026-04-14 08:39:30 +10:00
commissiongÚswapÚslÚtpÚwinÚ open_timeÚcoerce)ÚerrorsÚ day_of_weekÚhourÚ
close_timeÚ duration_min) ÚpandasÚcopyÚcolumnsÚ to_datetimeÚdtÚday_namerÚ
total_secondsÚround)ÚdfÚpdÚouts& Ú+C:\Users\pc\MT5Tools\view_trade_analysis.pyÚ
_normalise_icr!ăŘ
Ź'‰')€Cđź Ô
2026-04-14 08:39:30 +10:00
¸#ż+ą+Ô(EŘ,J‰Řs—{" x°s·{±{Ô'BŘ)H‰
Ř3ź;™;ÔŘ
S—[‘[Ô ŘF‰ Ř 3—;‘;ÔŘD‰ Ř 3—;‘;ÔŘD‰ ŕ C—K‘KÔ L°C·K±KÔ$?ŘŐŃ*E‰
ŕc—kź>™>¨#¨kŐ*:Ŕ8LŘ  § ˇ Ô +Ř!$ [Ő!1×!4Ń!4×!=Ń!=Ó!?C
2026-04-14 08:39:30 +10:00
Ń Ř źÔ 2C‰KŘs—{źN™N¨3¨|Ő+<ŔXNŘSź[™[Ô(¨[¸CżKąKÔ-GČLĐ\_×\gŃ\gÔLgŘ # LŐ 1°C¸ Ő4DŐ Dß "ˇ§=ˇ=Ł?°Rő 8ß9>ą¸đ ŕ €Jócó°\P!R4RRRRR.RR/P4F/wrV\P9gKV\PV&K1 \P!^^.4wr#V;_uu_4\P
!RRR.R R
R 7pRRR4T;_uu_4\P !R R R
7\P!RRR7'dOR\PR&R\PR&.\PR&\P!4RRR4XR8XEd\P!RRRR7pV'VPP4PR|4'\VP4VP4wrgVeaV\PR&V\PR&.\PR&\P!R\!V4 RV 24EM\P"!R4EMpV'd\P$!R4EMP\P!RRRR7pV'EdVPP4PR}4'^RIHpHp V'VP4p X!V 4p V 'g\P"!R4M¶V \PR&V \PR&R\PR&X !WĽ^,R7p
\/V
4p
2026-04-14 08:39:30 +10:00
V
\PR&\P!R\!V
4 R\!V 4 R24MMV'd\P$!R!4\PP9R4'\PP9R
V4R8X\PR,p R".V ,p\P:!R#VR$R7pVR"8XdRMTp\PP9R4'dD^R%IHp V !\PR,VR7p
2026-04-12 18:25:46 +10:00
\/V
4p
V
\PR&\PR,p\PR,pVe\!V4^8Xd\P !R&R R
7R#V'd'\P<!R'V R(\!V4 R)24\P>!4R*\P9dR+\PR*&\P!^4wppppV;_uu_4VR,,PA4PC4pVR,,PE4PC4p\PF!R-VVVR.R/7p\PF!R0VVVR1R/7pRRR4V;_uu_4\IVR2,PK4PM4PO44p\PP!R3VR4R7pRRR4V;_uu_4\IVR5,PK4PM4PO44p\PP!R6VR7R7pRRR4V;_uu_4.R~Op\PP!R8VR9R7p \PP!R:R;R<.R=R7p!RRR4VPS4pWfR,,PTPBXVR,,PTPBX8*,,pX'dWfR2,PWV4,pX'dWfR5,PWV4,pX 'dWfR>,PWV 4,pX!'dWfR?,PWV!4,p\P<!R@\!V4 RA24\P
!RB.ROR RGR 7p"\P>!4R€RHlp#RRIlp$RJp%RKp&RRMlp'RNp(V"RC8X\YV4p)V#!V)RO4V$!V4\P!^4wp*p+V*;_uu_4V%!V4RRR4V+;_uu_4V&!V4RRR4\P>!4V'!VRLRPRQ7EM;V"RD8XEd:\IVR5,PK4PM4PO44p,V,'g\PZ!RR4EM×\P\!RS4.p-V,F„p.WfR5,V.8H,p/\YV/4p0V-P_RTV.RUV0RV,RWV0RX,RYV0RZ,R[V0R\,R]V0R^,R_V0R`,RaV0Rb,RcV0Rd,ReV0Rf,/
2026-04-14 08:39:30 +10:00
4K† \aRg4PcV-4PeRWRhRi7p1\Pf!V1PhPkV(.RORj7R R Rk7\P>!4\P:!RlV,4p2V2'WfR5,V28H,p/\YV/4p0V#!V0V24V$!V/V2 Rm24\P!^4wp*p+V*;_uu_4V%!V/4RRR4V+;_uu_4V&!V/4RRR4\P>!4V'!V/RLRnV2 2RQ7EMúV"RE8XE\IVR2,PK4PM4PO44p3.p-V3Frp.WfR2,V.8H,p/\YV/4p0V-P_R3V.RUV0RV,RWV0RX,RYV0RZ,R[V0R\,R]V0R^,R_V0R`,RaV0Rb,/4Kt \aRg4PcV-4PeRWRhRi7p1\Pf!V1PhPkV(.RORj7R R Rk7\P:!RoV34p2V2'WfR2,V28H,p/\YV/4p0V#!V0V24V$!V/V2 Rm24\P!^4wp*p+V*;_uu_4V%!V/4RRR4V+;_uu_4V&!V/4RRR4\P>!4V'!V/RLRpV2 2RQ7MV"RF8XdV%!V4V&!V4\P>!4\Pl!Rq4;_uu_4.R„Op4V4U5u.uFp5V5VP9gKV5NK p4p5Rsp6\Pf!VV4,PhPkV6RXRr.Rj7R R RtRu7\Pn!RvVV4,PqRhRw7RxV RyV R2RzR{7RRR4R# +'giE
L¦;i +'giE
2026-04-14 08:39:30 +10:00
L#;i \,d(p
2026-04-12 18:25:46 +10:00
\P"!RT
R24RpRp
?
E LßRp
2026-04-12 18:25:46 +10:00
?
ii;i \0dMp
\P"!R T
24^RIp\P4!TP744Rp
?
E LCRp
?
ii;i +'giELđ;i +'giELś;i +'giELH;i +'giEL;i +'giELo;i +'giELh;i +'giELY;i +'giELR;i +'giELť;i +'giEL;iuup5i +'giR#;i)…u📊 Trade AnalysisÚta_dfNÚ ta_formatÚ ta_accountsÚ ta_ic_bytesz File sourcezMT5 / Quant AnalyzerzIC Markets XLSXTÚ ta_source©Ú
horizontalÚkeyz<br>©Úunsafe_allow_htmlu
đź—‘ ClearÚta_clear)r+z2Upload MT5 Report (HTM/HTML) or Quant Analyzer CSVÚ ta_upload)Útyper+ú.csvu âś“ Loaded u trades — u,Could not parse report — check file formatz*Please upload a .htm, .html, or .csv file.z*Upload IC Markets Position History (.xlsx))Úget_icmarkets_accountsÚparse_icmarkets_xlsxuHicmarkets_parser.py not found — ensure it is in the MT5Tools folder. (Ú)uJNo accounts found — check this is an IC Markets Position History export.)Úaccountz account(s) foundzError parsing file: zPlease upload an .xlsx file.z All accountsÚAccountÚ
ta_ic_account)r3
<div class="info-card">
Upload an MT5 account history report (.htm/.html), MT5 backtest report,
or a Quant Analyzer CSV export to begin analysis.
</div>
zFormat detected: **u** · z
total tradesÚ
ta_depositçĂ@rÚFromÚta_from)ÚvalueÚ min_valueÚ max_valuer+ÚToÚta_toÚsymbolÚSymbolÚta_symrz
Strategy / EAÚta_stratz Day of weekÚta_daysÚTypeÚbuyÚsellÚta_typerr0z
Showing **z** trades after filtersz
Analysis modeÚOverallú By Strategyú By SymbolúBy Day of WeekÚta_modecó(V'd\P!RV R24\P!^4wr#rEpVPRRVR,R
24VPRVR, R24VPRVR , 4VPR
VR , 4VPR RVR
,R
24\P!^4wr#rEpVPRVR,4VPRRVR,R
24VPRRVR,R
24VPRRVR,R
24VPRRVR,R
24\P!^4wr#rEpVPRVR,4VPRVR,4VPRVR, R24VPRVR , R24VPR!RVR",R
24\P!^4wr#rEVPR#VR$,4VPR%VR&, R24VPR'VR(,4VPR)VR*, R24R+#),ú**ú
Net ProfitÚ$rz,.2fzWin RateÚwin_rateÚ
Profit FactorÚ
profit_factorz R:R RatioÚrr_ratioÚ
ExpectancyÚ
2026-04-12 18:25:46 +10:00
expectancyz Total TradesÚ total_tradeszAvg WinÚavg_winzAvg LossÚavg_lossúMax DDÚ max_drawdownz
Best TradeÚ
best_tradezMax Consec WinsÚmax_consec_winszMax Consec LossesÚmax_consec_lossesz Avg Win DurÚavg_win_durationÚmz Avg Loss DurÚavg_loss_durationz Worst TradeÚ worst_tradez Long TradesÚ long_tradesz
Long Win RateÚ
long_win_ratez Short TradesÚ short_tradeszShort Win RateÚshort_win_rateN)ÚstÚmarkdownrÚmetric)ÚstatsÚlabelÚc1Úc2Úc3Úc4Úc5s&& r Ú render_statsÚrender.<locals>.render_statsŃsKß Ü ŹKŠK"UG 2Ô źZšZ¨Ř
Ź ‰ , Q u¨\Ő':¸4Đ&@Đ#AÔ
Ź ‰ * e¨JŐ&7Đ%8¸Đ#:Ô
Ź ‰ / e¨OŐ&<Đ%=Ô
Ź ‰ + e¨JŐ&7Đ%8Ô
Ź ‰ , Q u¨\Ő':¸4Đ&@Đ#AÔźZšZ¨Ř
Ź ‰ . Ő#8Ô
2026-04-12 18:25:46 +10:00
Ź ‰ ) Q u¨YŐ'7¸Đ&=Đ#>Ô
Ź ‰ * Q u¨ZŐ'8¸Đ&>Đ#?Ô
Ź ‰ ( Q u¨^Ő'<¸TĐ&BĐ#CÔ
2026-04-12 18:25:46 +10:00
Ź ‰ , Q u¨\Ő':¸4Đ&@Đ#AÔźZšZ¨Ř
Ź ‰ Đ# uĐ->Ő'?Ô
Ź ‰ Đ% uĐ-@Ő'AÔ
2026-04-12 18:25:46 +10:00
Ź ‰ -¨%Đ0BŐ*CĐ)DŔAĐ'FÔ
Ź ‰ .¨%Đ0CŐ*DĐ)EŔQĐ'GÔ
Ź ‰ ¨5°Ő+?ŔĐ*EĐ'FÔźš AŘ
Ź ‰ - Ő#7Ô
Ź ‰ / e¨OŐ&<Đ%=¸QĐ#?Ô
Ź ‰ . Ő#8Ô
Ź ‰ Đ" eĐ,<Ő&=Đ%>¸aĐ#@ÖAr"cóV ^RIpVPR4P4p.R2OpVPRR4PRR4PRR4P R4p\
P !^4pV^,PR R
R V 2R 7pV^,PR
RRV 2R 7pV^,PRRRV 2R 7p V^,PRRRV 2R 7p
\P!4p V'd`VR,P4VR&V P\P!VR,VR,RR\R^R7RRR74V'RVP 9\\VR,P!4P#444F wrÍW3R,V
8H,P4pVR,P4VR&V P\P!VR,VR,RV
\WL^,\%V4,,RRR7R 74 V 'R!VP 9\\VR!,P!4P#444F wrĎW3R!,V8H,P4pVR,P4VR&V P\P!VR,VR,RV\WL^,\%V4,,RR"R7R 74 V
'd×R#VP 9\.R3O4F´wp pW3R#,V8H,P4pVP&'dK:VR,P4VR&V P\P!VR,VR,RV\WL^,\%V4,,RR7R 74 V P)VR$R%R%\R&R'7\R(R
R)7\R(R*R
R+7\^<^^(^(R,7\R%^R-7R.R/7
\
P*!V R
R0V 2R17R#)4éNrú#7c6af7Ú Ú—Úz
2026-04-14 08:39:30 +10:00
Account totalTÚeq_acc_)r<r+rKeq_str_rLÚeq_sym_rMÚeq_dow_rÚ_cumÚlinesr6)ÚcolorÚwidthÚtozeroyzrgba(124,106,247,0.06))ÚmodeÚnameÚlineÚfillÚ fillcolorrgř?Údot)r„r…Údash)r‡rr‰rrArihú
rgba(0,0,0,0)ú
sans-serif©Úfamilyúrgba(128,128,128,0.15))Ú gridcolorÚshowgridrR)r•Ú
tickprefixr©Úb)ÚbgcolorÚ borderwidthz x unified)
ÚtitleÚheightÚ plot_bgcolorÚ
paper_bgcolorÚfontÚxaxisÚyaxisÚmarginÚlegendÚ hovermodeÚeq_fig_)Úuse_container_widthr+)
2026-04-12 18:25:46 +10:00
rxú#34C27Az#F5A623ú#E05555z#4C8EF5z#A78BFAz#22D3EEz#FB923Cz#F472B6z#86EFAC©ÚMondayÚTuesdayÚ WednesdayÚThursdayÚFriday)rÚ sort_valuesrÚreplaceÚstriprjrÚcheckboxÚgoÚFigureÚcumsumÚ add_traceÚScatterÚdictÚ enumerateÚsortedÚdropnaÚuniqueÚlenÚemptyÚ
update_layoutÚ plotly_chart)Údf_plotrnrÚdf_sÚCOLORSÚsafe_keyÚovÚ show_accountÚ
2026-04-14 08:39:30 +10:00
show_strategyÚ show_symbolÚshow_dowÚfigÚstratÚsubÚsymÚdows&& r Úrender_equity_curveÚ#render.<locals>.render_equity_curveđŰŘ×" 0×7ňEđ—=‘=  SÓ1°#°cÓBŔ5ČÓRĐSVÓWÜ
ŹZŠZ‹]Řź ¸tČGĐT\ĐS]ĐJ^Ó_ Řź }¸uČGĐT\ĐS]ĐJ^Ó_
Řź {¸uČGĐT\ĐS]ĐJ^Ó_ ŘźĐ'7¸uČGĐT\ĐS]ĐJ^Ó_äŹiŠi‹kç Ř  Ő6D‰LŘ ŹM‰Mś"ź*š*بV­ ¸7ČÜ  °ÔĐ*Bôô
÷ Z¨4Ż<©<Ô%¤f¨T°*Ő-=×-DŃ-DÓ-F×-MŃ-MÓ-OÓ&PÖQŘ 
Ő+¨UŃ:Ř! /×8F Ř
śbźjšjŘ'¨3¨v­;¸WČ5Ü F¨a­C´°VłŐ+<Ő$=ŔSČuÔöńR÷ 8 t§|ˇ|Ô#¤F¨4°­>×+@Ń+@Ó+B×+IŃ+IÓ+KÓ$LÖMŘ ť>¨3Ń/×6Ř! /×8F Ř
śbźjšjŘ'¨3¨v­;¸WČ3Ü F¨a­C´°VłŐ+<Ő$=ŔSČvÔöńN÷ 
¨Ż©Ô#Ň$XÖY‘ 
ŐŃ;Ř—9—99™hŘ! 8F Ř
2026-04-12 18:25:46 +10:00
śbźjšjŘ'¨3¨v­;¸WČ3Ü F¨a­C´°VłŐ+<Ő$=ŔSÔöń Zđ ×ŃŘ ŘÜĐ!9ŔDÔĐ!9ŔcĐTXÔ"  b¨BÔ ¸ ô
ô ŹŠ°¸WŔXŔJĐ;O×Pr"cóx.ROpVPR4PRR RR3R7PVUu.uF"q"VR,P49gK VNK$ up4pWR,,PR4R,P 4PVP
^R7pWR,(,PR4R,P 4PVP
^R7p\ P!4pVP\ P!VP
VRRR 74VP\ P!VP
VR
2026-04-12 18:25:46 +10:00
R R 74VPR R
RRR\RR7\^<^^(^(R7\RR7\RRR7\RR7R7
\P!VRR7VP4p.R!OVnVR,P!^4VR&\P"!VRRR7R#uupi)"r®rrr
cóD\VP4^d,^4#)éd)rÚmean)r‡s&r Ú<lambda>Ú2render.<locals>.render_dow_chart.<locals>.<lambda>5s¬5°·±ł¸¸qÔ+Ar")ÚtradesrrS©Ú
fill_valueÚProfitúrgba(45,198,83,0.8)©r‡rÚ marker_colorÚLossúrgba(230,57,70,0.8)zP&L by Day of WeekéÚrelativerrrrr”)r•rR©r•r—©©
r ÚbarmoderˇrQ©Ú
hide_indexN)r˛ÚSaturdayÚSunday©rÚcount©rÚsum)ÚDayÚTradesrQú
Win Rate %)ÚgroupbyÚaggÚreindexrŔÚindexr·r¸ÚBarrĂrjÚ reset_indexrrÚ dataframe)Ú dow_orderÚdrÓÚwins_dowÚ
losses_dowrÎrs& r Úrender_dow_chartÚ render.<locals>.render_dow_chart0Ú\ ŘŹo‰oŃ!AĐ
÷ ‰'™iÓP™i°¸
Ő0F×0MŃ0MÓ0OŃ+O—11™iŃ
2026-04-12 18:25:46 +10:00
đ  Uť^Ő,×4°]ÓCŔLŐQ×W×_Đ`c×`iŃ`iĐvwĐxŘ eťn5°mÓDŔ\ŐR×X×`Đad×ajŃajĐwxĐy
äŹiŠikŘ Ź
”b—ffsźy™y¨H¸XĐTiÔ Ź
”b—ffsźy™y¨J¸VĐTiÔ ×ŃŘ&¨s¸(¸Ü*´4¸ŔbČBÔ3OÜĐ!9ÔĐ!9ŔcÔ Ô
ô
ô ŹŠ°Ő
Ź_‰_Ó
ÚBŚ
Ř+×1°!Ó4Ü
2026-04-12 18:25:46 +10:00
Ź Š R¨T¸d×Cůň+Qs ¸H7ÁH7cóNVPR4PRRR7pWR,,PR4R,P4PVP^R7pWR,(,PR4R,P4PVP^R7p\
P !4pVP\
2026-04-12 18:25:46 +10:00
P!VPVRRR74VP\
P!VPVRR R74VPR
R R R
2026-04-14 08:39:30 +10:00
R
\RR7\^<^^(^(R7\RRR7\RRR7\R
2026-04-12 18:25:46 +10:00
R7R7
\P!VRR7R#)rr)rr
zP&L by Hour of Dayrĺrrrrr”z
Hour (UTC))r•rRTrëNrđ)
rj)ÚhourlyÚwins_hÚlosses_hrÎs& r Úrender_hour_chartÚ!render.<locals>.render_hour_chartMsQŘ Ó
đ 5ť>Ő*×2°6Ó:¸H×N×VĐW]×WcŃWcĐpqĐrŘ EťN3°FÓ;¸I×O×WĐX^×XdŃXdĐqrĐsäŹiŠikŘ Ź
2026-04-14 08:39:30 +10:00
”b—f’fvź|™|°ŔĐWlÔ Ź