§
    ¦†"j‡  ã                  óR   — d dl mZ d dlmZ d dlZd dlmZmZ d dlm	Z	 dd
„Z
dd„ZdS )é    )Úannotations)ÚPathN)Úbuild_strategy_envÚbuild_strategy_command_plan)ÚStrategyPresetÚtmp_pathr   ÚreturnÚNonec                ó  — t          ddddddddd	d
ddddœ
¬¦  «        }t          || ¦  «        }|d         t          | dz  dz  ¦  «        k    sJ ‚|d         dk    sJ ‚|d         dk    sJ ‚|d         dk    sJ ‚|d         dk    sJ ‚|d         dk    sJ ‚|d         dk    sJ ‚|d         dk    sJ ‚|d         d k    sJ ‚|d!         d
k    sJ ‚|d"         d#k    sJ ‚|d$         d%k    sJ ‚|d&         d'k    sJ ‚|d(         d)k    sJ ‚d S )*NÚdemoÚDemoÚunitg      @é   g      )@g      "@Úvolatility_squeeze_breakoutg333333ó?Úriskg     @@g      è?)ÚWLDÚSUI)
Úflash_crash_trigger_pctÚdead_fish_time_limit_minsÚtrade_size_usdÚcrash_roe_trigger_pctÚstrategy_familyÚsqueeze_breakout_pctÚposition_sizing_modeÚwallet_equity_usdcÚrisk_per_trade_pctÚallowed_coins©Ústrategy_idÚlabelÚsourceÚ
parametersÚCTB_RUNTIME_DIRÚexperimentsÚCTB_PAPER_TRADINGÚtrueÚCTB_DRY_RUNÚfalseÚCTB_FLASH_CRASH_TRIGGER_PCTz5.5ÚCTB_DEAD_FISH_TIME_LIMIT_MINSÚ22ÚCTB_TRADE_SIZE_USDz12.5ÚCTB_CRASH_ROE_TRIGGER_PCTz9.0ÚCTB_STRATEGY_FAMILYÚCTB_SQUEEZE_BREAKOUT_PCTz1.2ÚCTB_POSITION_SIZING_MODEÚCTB_WALLET_EQUITY_USDCz500.0ÚCTB_RISK_PER_TRADE_PCTz0.75ÚCTB_ALLOWED_COINSzWLD,SUIÚPYTHONUNBUFFEREDÚ1)r   r   Ústr)r   ÚpresetÚenvs      ú%tests/test_multi_strategy_launcher.pyÚ8test_build_strategy_env_maps_parameters_to_ctb_variablesr:   
   sÐ  € ÝØØØØ/2ÐQSÐgkð  GJð  _|ð  VYð  syð  QVð  nrð  ESð  Tð  Tð	ñ ô €Fõ ˜V XÑ
.Ô
.€CàÐ Ô!¥S¨°MÑ)AÀFÑ)JÑ%KÔ%KÒKÐKÐKÐKØÐ"Ô# vÒ-Ð-Ð-Ð-Øˆ}Ô Ò(Ð(Ð(Ð(ØÐ,Ô-°Ò6Ð6Ð6Ð6ØÐ.Ô/°4Ò7Ð7Ð7Ð7ØÐ#Ô$¨Ò.Ð.Ð.Ð.ØÐ*Ô+¨uÒ4Ð4Ð4Ð4ØÐ$Ô%Ð)FÒFÐFÐFÐFØÐ)Ô*¨eÒ3Ð3Ð3Ð3ØÐ)Ô*¨fÒ4Ð4Ð4Ð4ØÐ'Ô(¨GÒ3Ð3Ð3Ð3ØÐ'Ô(¨FÒ2Ð2Ð2Ð2ØÐ"Ô# yÒ0Ð0Ð0Ð0ØÐ!Ô" cÒ)Ð)Ð)Ð)Ð)Ð)ó    c                ó.  — t          dddi ¬¦  «        t          dddi ¬¦  «        t          dddi ¬¦  «        g}t          || d	¬
¦  «        }d„ |D ¦   «         ddgk    sJ ‚t          d„ |D ¦   «         ¦  «        sJ ‚t          d„ |D ¦   «         ¦  «        sJ ‚d S )NÚaÚAr   r   ÚbÚBÚcÚCé   )Úmax_parallelc                ó   — g | ]	}|j         ‘Œ
S © )r   ©Ú.0Úitems     r9   ú
<listcomp>zNtest_build_strategy_command_plan_limits_parallel_processes.<locals>.<listcomp>-   s   € Ð.Ð.Ð. ˆDÔÐ.Ð.Ð.r;   c              3  óD   K  — | ]}|j         t          j        d gk    V — ŒdS )zAutoTrader.pyN)ÚcommandÚsysÚ
executablerG   s     r9   ú	<genexpr>zMtest_build_strategy_command_plan_limits_parallel_processes.<locals>.<genexpr>.   s0   è è € ÐRÐRÀTˆtŒ|¥¤°Ð@Ò@ÐRÐRÐRÐRÐRÐRr;   c              3  ó8   K  — | ]}|j         d          dk    V — ŒdS )r%   r&   N)r8   rG   s     r9   rO   zMtest_build_strategy_command_plan_limits_parallel_processes.<locals>.<genexpr>/   s/   è è € ÐHÐH¸4ˆtŒxÐ+Ô,°Ò6ÐHÐHÐHÐHÐHÐHr;   )r   r   Úall)r   ÚpresetsÚplans      r9   Ú:test_build_strategy_command_plan_limits_parallel_processesrT   $   sÊ   € å 3¨c¸&ÈRÐPÑPÔPÝ 3¨c¸&ÈRÐPÑPÔPÝ 3¨c¸&ÈRÐPÑPÔPð€Gõ ' w°ÀqÐIÑIÔI€Dà.Ð.¨Ð.Ñ.Ô.°3¸°*Ò<Ð<Ð<Ð<ÝÐRÐRÈTÐRÑRÔRÑRÔRÐRÐRÐRÝÐHÐHÀ4ÐHÑHÔHÑHÔHÐHÐHÐHÐHÐHr;   )r   r   r	   r
   )Ú
__future__r   Úpathlibr   rM   Úmulti_strategy_launcherr   r   Ústrategy_registryr   r:   rT   rF   r;   r9   ú<module>rY      s”   ðØ "Ð "Ð "Ð "Ð "Ð "à Ð Ð Ð Ð Ð Ø 
€
€
€
à SÐ SÐ SÐ SÐ SÐ SÐ SÐ SØ ,Ð ,Ð ,Ð ,Ð ,Ð ,ð*ð *ð *ð *ð4Ið Ið Ið Ið Ið Ir;   