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

131 lines
19 KiB
Plaintext
Raw Normal View History

2026-04-12 18:25:46 +10:00
+
ĆPŰiö9ăójRt^RIt^RItRtRtRtRRltRtRt Rt
R t RR
lt R t
R tR
tR#)
mt5_parser.py
=============
Parsers for three MT5 trade report formats:
1. MT5 Real Account HTM export
2. MT5 Backtest HTM report
3. Quant Analyzer CSV export
All normalise to a common DataFrame schema.
NcóLRFpVPV4u# R# K ;i)úutf-16Ú)rzutf-8úlatin-1Úcp1252)Údecode)Ú
file_bytesÚencs& Ú"C:\Users\pc\MT5Tools\mt5_parser.pyÚ_decoder s1Ű7đ Ř×$ SÓ 
řđ Ú úsž#cóŽ\P!RRV4P4PRR4PRR4#)z<[^>]+>rô )ÚreÚsubÚstripÚreplace©Úss&r
Ú_striprs9Ü
Ź6Š6*b  $× ,× 4°V¸RÓ ĐSUÓ có|\\V4PRR4PRR44# R#;i)Ú rÚ,N)ÚfloatÚstrrrs&r
Ú _to_floatr"s8đÜ”S“V—^‘^ C¨Ó,×4°S¸>řđÚús36;có2\P!WRR7#)Úcoerce©ÚformatÚerrors)ÚpdÚ to_datetime)rÚfmts&&r
Ú_to_dtr$)sÜ
Ź>Š>Ô 9rcó€\P!VR,RR7VR&\P!VR,RR7VR&VR,PPVR&VR,PPVR&VR,PP 4VR&VR,PP
VR&VR,VR,,
PP
4^<, P^4VR &RF|pWP9gK\P!W,P\4PPR
R4PPRR4RR7W&K~ RVP9dqVPR ^4P^4VPR
^4P^4,VPR ^4P^4,VR&VR,^8„VR&VR,PP4PP!4VR&VR,P#\$4VR&VR,PPRRRR7PP'4VR&V#)z*Add derived columns common to all formats.Ú open_timer©r Ú
close_timeÚ open_dateÚ
close_dateÚ day_of_weekÚhourÚ duration_minÚ
commissionÚswapÚprofitrrrÚ
net_profitÚwinÚtypeÚcommentÚstrategyÚsymbolz \.[a-z]+$T)ÚregexÚ symbol_base)ÚvolumeÚ
open_priceÚ close_priceÚslÚtpr.r/r0)r!r"ÚdtÚdateÚday_namer,Ú
total_secondsÚroundÚcolumnsÚ
to_numericÚastyperrÚgetÚfillnaÚlowerrÚapplyÚextract_strategyÚupper)ÚdfÚcols& r
Ú_enrichrN-s/äźš¨¨;­ŔÔJ€B€{źš¨¨<Ő(8ŔÔJ€B€|ŃŘ×0€B€{1€B€|ŃŘ×6€B€}ŃŘ×0€B€v+¨b°­oŐ™2źm™m›o°ő3ß49±E¸!łHđ€~Ńó0ŕ —*‘*Ö Ü—m’mŘśsÓ#×'×°RÓ8×<×DŔSČ"ÓôB2ź:™:Ô ŹF‰F8 × &  ŹF‰F< Ó #× *¨1Ó 
ŹF‰F6 × $  
 đ
 ŐŃ)€B€u•Z—^‘^×/×7€B€v •]×(Ô)9Ó:€B€z ׸rČĐZ€B€}ŃŘ
€Irc ó$a
a \V4p\P!RV\P4p.pRp.ROpVEF p\P!RV\P4o
S
Uu.uF2p\P!RR\ V44P
4NK4 upo
S
'd#S
^,R8Xd\S
4^
dRpK“V'gS
'dD\;QJdV
3RlR4F 'gK RM RM!V
3RlR44'dEM)\S
4^g\P!R S
^,4'gEK!S
Uu.uFqw'gK VP4NK upo \;QJdV 3R
lR4F 'gK RM RM!V 3R
lR44'dE\S
4^
8g%\P!R S
^ ,4'gER \S
^,49dE\\VS
R ,44pVPV4EK V'gR
#\P !V4p RV R&\#V 4#uupiuupi EKQ;i)z1Parse MT5 real account HTML trade history report.ú<tr[^>]*>(.*?)</tr>Fú<t[dh][^>]*>(.*?)</t[dh]>ú\s+rÚTimeTc3ó:<"TFqS^,9xK R#5i)é)Ú.0ÚkwÚcellss& €r
Ú <genexpr>Ú#parse_mt5_report.<locals>.<genexpr>bsřéđOŮ-/u QťxžŰMůsú\d{4}\.\d{2}\.\d{2}c3ó,<"TF qS9xK R#5i)NrV)rWrÚlasts& €r
rZr[hsřéĐTŃ&S 9Ó&SůsÚ/:NéNNÚrealÚsource)r&Úpositionr6r3r4r9r:r<r=r(r;r.r/r0)zTotal Net ProfitÚResultsÚBalanceÚEquity)ÚplacedÚ cancelledÚexpiredÚpartial)r rÚfindallÚDOTALLrrrÚlenÚanyÚmatchrHrÚdictÚzipÚappendr!Ú DataFramerN) rÚtextÚrowsÚtradesÚ in_tradesÚCOLSÚrowÚtraderLrYr^s & @@r
Úparse_mt5_reportr|Nů€ä  €DÜ ŹJŠJĐ-¨t´R·Y±YÓ ?€DŘ€FŘ€Iň ,€DôÜ
ĐĽbżiąiÓHŮAFÓ¸A” ¤V¨AŁYÓŃGç U1•X Ô'¬C°«J¸"Ô,<Ř ßŮ ß —S“SôOŮO—S—S’SôOŮO÷OňOâ ä u‹:Ö ¤§˘Đ)?ŔŔqĹ× JŐ JŮ',Ó2ˇu ”IA—GGIˇuŃ2TŃ&SÓTŹsŹsŠsÔTŃ&SÓT×Ü5z¤b§h˘hĐ/EŔuČQĹx×&PŇ&PÚŘ”c% ť(“mÔđ
ÜśS  u¨SĄzÓ3Ř
$ń/÷6 Ůä ŹŠ€BŘ€B€x 2‹;Đůň=Hůň3řđ
ŰúsÁ,8I?Ĺ# JĹ1JČ-J Ę Jc"ód\V4p\P!RV\P4p\ V4^8dR#\P!RV^,\P4pRp.pVEFp\P!RV\P4Uu.uF2p\P
!RR\
V44P4NK4 ppVUu.uFqw'gK VNK ppV'gRV9dR pK•V'dV^,R
8Xd
R V9dK´V'g\ V4^g\P!R V^,4'gVPV4EK
V'gR#.R$Op .p
VF4p\\WR\ V 444p V
PV 4K6 \P!V
4p WĚR,PRR.4,p /p
.pV P4EF\wppVP!RR4pVP!RR4pVP!RR4pVV3pVR8Xd$V
P#V.4PV4KkVR8XgKtV
P!V.4pV'gKVP%^4pVPRVR
,RVR
,RVRVRVR,RVR,RVR,RRR RR\'VP!R^44R\'VP!R^44R\'VP!R^44RVP!RR4R!VP!RR4/4EK_ V'gR#\P!V4pR"VR#&\)V4#uupiuupi)%zQ
Parse MT5 Strategy Tester HTML report.
Pairs in/out deals into complete trades.
z<table[^>]*>(.*?)</table>NrPFrQrRrÚDealsTrSÚDealr\ÚtimeÚdealr6r3Ú directionr9Úpricer.r/r0r4ÚinÚoutrr&r(r:r;r<r=rcÚbacktestrb)
r€rr6r3rr9rÚorderr.r/r0Úbalancer4)r rrkrlrmrrrrorrrprqr!rsÚisinÚiterrowsrFÚ
setdefaultÚpoprrN)rrtÚtablesruÚin_dealsÚ deal_rowsryrzrYÚ DEAL_COLSÚdealsÚdf_dealsÚ
open_stackrvÚ_rÚsymÚtypÚdirnÚkeyÚstackÚentryrLs& r
Úparse_backtest_reportrś~s'ô

€DÜ
ŹZŠZĐ4°dĽBżIąIÓ
F€FÜ
6{Q„Ůä
Ź:Š:Đ,¨f°Q­iĽżąÓ C€Dđ€HŘ€IÜäź*š*Đ%AŔ3ĚĎ É ÔTŮR ¤V¨AŁYÓ đTá'™EqŁQ—™EĐŮ Ř  Ř ß  FÔ*¨v¸¬Ů ß ‰8śE›
 ¬BŻHŞHĐ5KČUĐSTÍX×,VÔ,VŘ × Ń  ÷ ŮňY€Iđ
€EŰÜ Y O¤S¨Ł^Đ 4Ó 6Ř
Ź ńôŹ|Š|"€HŘ .×3°T¸5°MÓC€Hđ€JŘ
€Fŕ×$×&‰Źx‰x %ŘŹx‰x Ó#ŘŹx‰x  RÓ(ŘSzŕ 4Ś<Ř × ! #  *× 1°$Ö
UŽ]Ř—N‘N 3¨Ó+‰uŘź ™  !› Ř
Ř 5¨Ą=Ř  4¨Ą<Ř 3Ř 3Ř Ą?Ř  Ą>Ř! 4¨Ą=Ř   ¤9¨UŻY©Y°|ŔQÓ-GÓ#Hؤ9¨TŻX©X°f¸aÓ-@Ó#Aؤ9¨TŻX©X°hŔÓ-BÓ#CŘ 4§8ˇ8¨I°rÓ#:Ř 5§9ˇ9¨V°RÓ#8đ÷ń'÷: Ůä ŹŠ€BŘ€B€x 2ůňGTůâ'sÂ#8N(Ă! N-Ă/N-có®VPR4p^RIHp\P!T!T44pTP
Uu.uF`qDP
4P4PRR4PRR4PRR4PR R4NKb upTn/R
.R(ObR .R)ObR .R*ObR
.R+ObR.R,ObR.R-ObR.R.ObR.R/ObR.R0ObRRR.bR.R1ObR.R2ObR.R3ObR.R4ObR.R5ObR.R6Obp/pTP4F+wrxTF p Y“P
9gKY9,Yg&K) K- \P!T4p
R7Fp YşP
9gK\P!Y«,RRR7Y«&Y«,P4P4'gKb\P!Y«,RRR7Y«&K… RT
P
9dRT
P
9dR T
R&RT
P
9dR!T
R&R"T
P
9dR!T
R"&R#T
P
9d(T
PR$\\!T
444T
R#&R%T
R&&R8F5p YĂP
9gK\P"!Y<,RR'7Y¬&K7 \%T
4# TPR4pELĽ;iuupi)9z-Parse Quant Analyzer listOfTrades CSV export.z utf-8-sigr)ÚStringIOrr•r_Ú(rÚ)r&r(r6r3r9r:r;r0r.r/zswap_$r<r4r5ÚmaeÚmfeÚdrawdownz%d.%m.%Y %H:%M:%SrrT)Úinfer_datetime_formatr gNr=rcÚticketÚ quant_csvrbr')z open_time_$z open_time_$_r&Úopentime)z close_time_$z
close_time_$_r(Ú closetime)zsymbol_$z symbol_$_r6)ztype_$ztype_$_r3r)zsize_$zsize_$_Úsizer9Úlots)z open_price_$z