ó
    œV+j   ã                   ót   • S r SSKrSSKrSSKJr  SSKJr  SSKJr  SSK	J
r
  SSKJr  SSKJr   " S	 S
5      rg)zFile watching and processingé    N)ÚOptional)Ú
BaseBroker)ÚOrderProcessor)Ú	FileUtils)ÚTradingLogger)ÚConfigc                   óš   • \ rS rSrSrS\S\S\S\S\S\S	\4S
 jr	S\S\
\   4S jrSS jrS\S\S\4S jrS\SS4S jrS\S\4S jrSrg)ÚFileProcessoré   z$Handles file watching and processingÚclient_codeÚbrokerÚsymbol_propertiesÚglobal_limitsÚwatch_folderÚprocessed_folderÚconfigc                 óÊ  • Xl         X l        X0l        X@l        XPl        X`l        Xpl        [        U5      U l        [        X!X75      U l
        [        R                  " U R
                  5        U R                  R                  SUR                   35        U R                  R                  SU R                   35        U R                  R                  SU R                   35        g )Nz"Initialized processor for client: zSymbol Properties: zGlobal Limits: )r   r   r   r   r   r   r   r   Úloggerr   Úorder_processorr   Úensure_directoryÚinfoÚ	client_id)Úselfr   r   r   r   r   r   r   s           Ú6c:\Trade\moneyHeistClient\processors\file_processor.pyÚ__init__ÚFileProcessor.__init__   s¾   € ð 'ÔØŒØ!2ÔØ*ÔØ(ÔØ 0ÔØŒÜ# KÓ0ˆŒä-¨fÐCTÓ]ˆÔä×"Ò" 4×#8Ñ#8Ô9à�‰×ÑÐ=¸f×>NÑ>NÐ=OÐPÔQØ�‰×ÑÐ.¨t×/EÑ/EÐ.FÐGÔHØ�‰×Ñ˜?¨4×+=Ñ+=Ð*>Ð?Õ@ó    Ú	file_pathÚreturnc                 ó�  •  [         R                  R                  U5      nUR                  S5      n[	        U5      S:  a  U R
                  R                  SU 35        gUS   R                  SS5      US   US	   [        US
   5      US   S.$ ! [         a+  nU R
                  R                  SU SU 35         SnAgSnAff = f)z'Parse filename to extract order detailsÚ__é   zInvalid file format: Nr   Ú:Ú-é   é   é   é   )ÚtimeÚsymbolÚactionÚno_lotsÚnoteszFailed to parse file ú: )
ÚosÚpathÚbasenameÚsplitÚlenr   ÚerrorÚreplaceÚintÚ	Exception)r   r   Ú	file_nameÚpartsÚes        r   Úparse_file_infoÚFileProcessor.parse_file_info$   sÆ   € ð	ÜŸ™×(Ñ(¨Ó3ˆIØ—O‘O DÓ)ˆEä�5‹z˜A‹~Ø—‘×!Ñ!Ð$9¸)¸Ð"EÔFØð ˜a™×(Ñ(¨¨cÓ2Ø ™(Ø ™(Ü˜u Q™x›=Ø˜q™ñð øô ó 	Ø�K‰K×ÑÐ 5°i°[ÀÀ1À#ÐFÔGÜûð	ús   ‚AB Á /B Â
CÂ!C Ã CNc                 óâ  • U R                   R                  (       dP  U R                   R                  5       (       d1  U R                  R	                  S5        [
        R                  " S5        U R                  R                  SS5      nU R                  R                  SS5      nU R                   R                  XU R                   R                  5      (       a1  U R                  R                  S5        [
        R                  " S5        [        R                  R                  U R                  5      (       d)  U R                  R!                  SU R                   35        gU R"                  R%                  5       nUR                  S	S
S/5      nSn['        [        R(                  " U R                  5      5       Hs  nU R+                  Xd5      (       d  M  [        R                  R-                  U R                  U5      nU R/                  U5      (       d  M]  U R1                  U5        US-  nMu     US:”  a  U R                  R                  SU S35        U R2                  R5                  5         g)zMain processing loopzFailed to login, exitingr%   Úmax_profit_targetr   Úmax_loss_limitzStop limits reached, exitingzWatch folder not found: NÚfile_extensionsz.txtz.ordz
Processed z new file(s))r   Úis_logged_inÚloginr   r4   ÚsysÚexitr   ÚgetÚclose_all_positionsÚdynamic_profit_enabledr   r/   r0   Úexistsr   Úwarningr   Úget_runtime_settingsÚsortedÚlistdirÚ_is_valid_fileÚjoinÚ_process_single_fileÚ_replicate_filer   Úprocess_profit_orders)r   Ú
max_profitÚmax_lossÚruntime_settingsÚallowed_extensionsÚprocessed_countr8   Ú	full_paths           r   Úprocess_filesÚFileProcessor.process_files9   sÌ  € à�{‰{×'×'Ø—;‘;×$Ñ$×&Ñ&Ø—‘×!Ñ!Ð"<Ô=Ü—’˜”à×'Ñ'×+Ñ+Ð,?ÀÓCˆ
Ø×%Ñ%×)Ñ)Ð*:¸AÓ>ˆà�;‰;×*Ñ*¨:ÀÇÁ×AcÑAc×dÑdØ�K‰K×ÑÐ;Ô<Ü�HŠH�QŒKä�w‰w�~‰~˜d×/Ñ/×0Ñ0Ø�K‰K×ÑÐ":¸4×;LÑ;LÐ:MÐ NÔOØàŸ;™;×;Ñ;Ó=ÐØ-×1Ñ1Ð2CÀfÈfÐEUÓVÐàˆä¤§
¢
¨4×+<Ñ+<Ó =Ö>ˆIØ×&Ñ& y×EÑEÙäŸ™Ÿ™ T×%6Ñ%6¸	ÓBˆIà×(Ñ(¨×3Ó3Ø×$Ñ$ YÔ/Ø 1Ñ$’ñ ?ð ˜QÓØ�K‰K×Ñ˜z¨/Ð):¸,ÐGÔHà×Ñ×2Ñ2Õ4r   r8   rU   c                 óv  ^• [         R                  R                  U R                  T5      n[         R                  R                  U R                  T5      n[         R                  R                  U5      (       d$  [         R                  R                  U5      (       a  g[        U4S jU 5       5      (       d  gg)z!Check if file should be processedFc              3   óF   >#   • U  H  nTR                  U5      v •  M     g 7f)N)Úendswith)Ú.0Úextr8   s     €r   Ú	<genexpr>Ú/FileProcessor._is_valid_file.<locals>.<genexpr>g   s!   øé € ÐIÒ6H¨s�9×%Ñ% c×*Ð*Ò6Hùs   ƒ!T)r/   r0   rN   r   r   ÚisdirrH   Úany)r   r8   rU   Úsource_pathÚtarget_paths    `   r   rM   ÚFileProcessor._is_valid_file_   sw   ø€ ä—g‘g—l‘l 4×#4Ñ#4°iÓ@ˆÜ—g‘g—l‘l 4×#8Ñ#8¸)ÓDˆä�7‰7�=‰=˜×%Ñ%¬¯©¯©¸×)DÑ)DØäÔIÑ6HÓI×IÑIØàr   c                 ó†  • [         R                  R                  U R                  U5      n[         R                  R                  U R                  U5      n [
        R                  " X#5        U R                  R                  SU 35        g! [         a+  nU R                  R                  SU SU 35         SnAgSnAff = f)z$Copy processed file to client folderzReplicated file: zFailed to replicate file r.   N)r/   r0   rN   r   r   r   Úcopy_file_with_permissionsr   Údebugr7   r4   )r   r8   ÚsrcÚdstr:   s        r   rP   ÚFileProcessor._replicate_filel   s™   € ä�g‰g�l‰l˜4×,Ñ,¨iÓ8ˆÜ�g‰g�l‰l˜4×0Ñ0°)Ó<ˆð	LÜ×0Ò0°Ô:Ø�K‰K×ÑÐ 1°)°Ð=Õ>øÜó 	LØ�K‰K×ÑÐ 9¸)¸ÀBÀqÀcÐJ×KÑKûð	Lús   Á4B Â
C Â!B;Â;C c           	      óL  • U R                  U5      nU(       d  gSnU R                   H   nUS   R                  U5      (       d  M  Un  O   U(       d"  U R                  R	                  SUS    35        gU R                  U   nUR                  SS5      (       d  U R                  R                  SU 35        gU R                  R                  X2S   5      nUR                  S5      nUR                  S	5      nS
US    SUS    SUS    3n	U R                  R                  SUS    SU SUS    35        U R                  R                  UUS   UUUU	S9n
U
(       a#  U R                  R                  SUS    35        U
$ U R                  R	                  SUS    35        U
$ )zProcess individual order fileFNr*   zUnrecognized symbol: ÚenabledzTrading disabled for symbol: r,   ÚexchangeÚexpiryÚtest__r)   r!   Ú_r-   zPlacing order: z - Qty: z
, Action: r+   )r*   r+   Úquantityrn   ro   ÚremarkszOrder placed successfully: zFailed to place order: )r;   r   Ú
startswithr   r4   rE   r   r   Úcalculate_quantityÚplace_order_with_splitÚsuccess)r   r   r   Úbase_symbolÚsymÚpropsrr   rn   ro   rs   rw   s              r   rO   Ú"FileProcessor._process_single_filew   s¾  € à×#Ñ# IÓ.ˆÞØàˆØ×)Ô)ˆCØ�H‰~×(Ñ(¨×-Ó-Ø!�Ùñ *ö
 Ø�K‰K×ÑÐ 5°d¸8±nÐ5EÐFÔGØà×&Ñ& {Ñ3ˆØ�y‰y˜ E×*Ñ*Ø�K‰K×ÑÐ<¸[¸MÐJÔKØà×'Ñ'×:Ñ:¸;ÈYÉÓXˆØ—9‘9˜ZÓ(ˆØ—‘˜8Ó$ˆà˜4 ™<˜.¨¨4°	©?Ð*;¸1¸TÀ'¹]¸OÐLˆà�‰×Ñ˜?¨4°©>Ð*:¸(À8À*ÈJÐW[Ð\dÑWeÐVfÐgÔhà×&Ñ&×=Ñ=ØØ˜‘>ØØØØð >ð 
ˆö Ø�K‰K×ÑÐ"=¸dÀ8¹nÐ=MÐ NÔOð ˆð �K‰K×ÑÐ 7¸¸X¹Ð7GÐHÔIàˆr   )	r   r   r   r   r   r   r   r   r   )r   N)Ú__name__Ú
__module__Ú__qualname__Ú__firstlineno__Ú__doc__Ústrr   Údictr   r   r   r;   rX   ÚlistÚboolrM   rP   rO   Ú__static_attributes__© r   r   r
   r
      s¨   † Ù.ðA Cð A°ð AØ$(ðAØ9=ðAà"ðAà69ðAàCIôAð(¨ð °¸$±ô ô*$5ðL¨ð Àð È$ô ð	L¨ð 	L°ô 	Lð+¨cð +°d÷ +r   r
   )r€   r/   rC   Útypingr   Úbrokers.base_brokerr   Úprocessors.order_processorr   Úutils.file_utilsr   Úutils.loggerr   Úconfig.configr   r
   r†   r   r   Ú<module>r�      s,   ðÙ "ã 	Û 
Ý å *Ý 5Ý &Ý &Ý  ÷Uò Ur   