
    btj                      &   S r SSKrSSKrSSKrSSKrSSKr\R                  " S5        \R                  R                  S\R                  R                  \R                  R                  \5      5      5        SSKr\R                  " S5        SSSS.r\" \R%                  5       5      r\R(                  R+                  5       r\R(                  R/                  5         \R(                  R1                  \5        SS	KJrJrJr  SS
KJrJrJrJ r J!r!  SSK"J#r#  SSK$r%SSK&r&Sr'Sr(\R                  " 5       r)\*" SS 35        \*" S\' S35        \*" S S35        \" \'5      r+\+RY                  SSSS9r-\-(       d  \*" S5        \R\                  " S5        \/" \+SS5      r0\+Rb                  Re                  SS5      r3\+Rb                  Re                  SS5      r4\+Rj                  r6\*" S\0S S\3S S\4S 35        \*" S 5        \" \'5      r7\7b  \8" \75      S!:  a  \*" S"5        \R\                  " S5        \" 5       r9\9 V s/ s H  o \7Rt                  ;   d  M  U PM     sn r;\+Rx                  R{                  5       r>\#" \8" \;5      S#9r?\?R                  \7\;SSS$9  \?R                  " \>6   \?R                  \7\;5      rC\ " \7\C\?\;\6S%9rD\R                  " \7S&   R                  \7S'   R                  /5      rG\H" \8" \D5      \8" \G5      5      rI\D\I* S \G\I* S srDrG\!" \75      R                  \8" \D5      * S rJ\K" \JR                  5       5      rMS(\G\J'   \7S&   R                  \8" \D5      * S R                  5       rO\7S'   R                  \8" \D5      * S R                  5       rP\*" S)\M S*\8" \J5       S+\M\8" \J5      -  S S,\OS S-\PS 3
5        S.S/SS0S0S1S2S3S4SS5S6.rQ\QR+                  5       rR\H" \S" \8" \G5      \GSS2S4   R                  5       -
  \S" \GSS2S4   R                  5       S5      -  S25      S75      \RS8'   \%R                  " S0 \RD6R                  \D\GSS2S4   5      rV\QR+                  5       rW\GSS2S4   R                  5       rX\8" \G5      \X-
  rY\H" \S" \Y\S" \XS5      -  S25      S75      rZ\Z\Rd                  " \'\5      -  rZ\Z\WS8'   \%R                  " S0 \WD6R                  \D\GSS2S4   5      r[\?\+l<        \V\+l\        \[\+l]        S\+l^        \3\4S9.\+l1        \6\+l5        \0\+l0        \0\+l_        \;\+l`        \8" \;5      \+la        \R                  R                  \\'R                  5        S:\( S;35      rd\+R                  \d5        \*" S<\d S+\R                  " 5       \)-
  S= S>35        \*" S?5        \" \'5      rf\+R                  \f5      rh\8" \h5      ri\fS@   R                  \i* S rj\fSA   R                  \i* S rk\fSB   R                  \i* S rl\fSC   R                  \i* S rmSDu  rnrorp/ rqSrrS(rsSrtSEruS(rvS(rw\x" \i5       GH  ry\hR                  \y   SF   r{\j\y   r|\k\y   r}\r(       a  \y\t-
  r~\l\y   r\m\y   rSr\|r\uSG:X  a  \\w:  a  SH\wsrrO#\\v::  a  SI\vsrrO\\w::  a  SH\wsrrO\\v:  a  SI\vsrr\c  \~\p:  a  SJ\|srr\(       a2  \uSG:X  a  \\s-
  \s-  O\s\-
  \s-  r\qGR	                  \u\SK-  \\~SL.5        Srr\r(       a  M  \{SM;   d  M  \{SN:X  a  SGOSOru\|rs\yrtSrr\}\n-  r\}\o-  r\uSG:X  a  \|\-
  O\|\-   rv\uSG:X  a  \|\-   O\|\-
  rwGM     \8" \q5      r\L" SP \q 5       5      r\\S" \S5      -  SK-  r\L" SQ \q 5       5      r\(       a0  \R                  " \q Vs/ s H  oSR   S:  d  M  USR   PM     sn5      OSr\\-
  (       a0  \R                  " \q Vs/ s H  oSR   S:  d  M  USR   PM     sn5      OSr\" \L" SS \q 5       5      \S" \" \L" ST \q 5       5      5      SU5      -  5      r\GR                  " \q Vs/ s H  oSR   PM	     sn5      r\S:  ac  \R                  5       \S" \GR#                  5       SU5      -  \GR$                  " SV\R                  " \q Vs/ s H  oSW   PM	     sn5      -  5      -  OSr\L" SX \q 5       5      r\L" SY \q 5       5      r\L" SZ \q 5       5      r\*" S[S\ 35        \*" S]\' S^35        \*" S_S\ 35        \*" S`\0S 35        \*" Sa\OS Sb35        \*" Sc\PS Sb35        \*" Sd\ 35        \*" Se\Sf Sg\ S*\ Sh35        \*" Si\ Sj\ Sj\ 35        \*" Sk\Sl Sm35        \*" Sn\S Sm35        \*" So\S Sm35        \*" Sp\S 35        \*" Sq\S 35        \*" Sr\R                  " 5       \)-
  Ss-  Sf St35        \*" S_S\ 35        \*" Su5        \*" S_SvSw SxSySz SxS{Sz 35        \*" S_S| SxS} SxS} 35        S~S\0S 4SS\OS 4SS\PS 4SS\" \5      4SS\Sf Sm34SHS\" \5      4SIS\" \5      4SS\Sl Sm34SS\S 4SS\S 44
 H  u  rrr\*" S_\Sw Sx\Sz Sx\Sz 35        M     \R(                  R/                  5         \R(                  R1                  \5        \*" 5         gs  sn f s  snf s  snf s  snf s  snf )u{   
Эксперимент: SBER с SL=6×ATR, TP=12×ATR (RR 1:2, x2 шире).

Запуск:
  python3 experiment_rr_x2.py
    Nignoretrain      @      (@,  )atr_mult_slatr_mult_tpmax_bars)SAVE_DIRTICKER_SHORT_WEIGHTSDEFAULT_SHORT_WEIGHT)MultiTimeframeMoE_prepare_df_get_feature_cols_build_dataset
_flat_mask)ExpertEnsembleSBER	_rr1x2_x2
u   ████████████████████████████████████████████████████████████u     ЭКСПЕРИМЕНТ: u    SL=6×ATR, TP=12×ATR (RR 1:2)TF)limitverboseretrain_on_fullztrain() failed   oos_val_acclongg?shortz
  OOS: val_acc=z.1%u   , L≥z.2fu   , S≥u   
  Retrain на 100%...   zno data)
n_features)r   epochs)keep_expertsoutcome_longoutcome_shortg        u     Флет: /z (z), SR: long=z, short=   gQ?gffffff?g?g      ?   *   )	max_depthlearning_raten_estimators	subsamplecolsample_bytree	reg_alpha
reg_lambdamin_child_weightrandom_state	verbosityn_jobsg      @scale_pos_weight)r   r   _moe_v12z.joblibu   
  ✓ Сохранено: z.0fu   с)u   
  ── БЭКТЕСТ ──CloseatrHighLow)r   r   r    signalLONGTPSL	TIME_STOPd   )dirpnl_pctreasonbars)BUYSELLrE   SHORTc              #   :   #    U  H  oS    S:  d  M  Sv   M     g7f)rB   r   r   N .0ts     experiment_rr_x2.py	<genexpr>rN      s     
1f)q 011f   	c              #   *   #    U  H	  oS    v   M     g7f)rB   NrI   rJ   s     rM   rN   rN      s     -f)fs   rB   c              #   @   #    U  H  oS    S:  d  M  US    v   M     g7frB   r   NrI   rJ   s     rM   rN   rN      s     <6ay\!^\Qy\6   c              #   @   #    U  H  oS    S:  d  M  US    v   M     g7frR   rI   rJ   s     rM   rN   rN      s%     Jzag\]mvkwxyky<1Y<agrS   g{Gz?i8"  rD   c              #   :   #    U  H  oS    S:X  d  M  Sv   M     g7f)rC   r=   r   NrI   rJ   s     rM   rN   rN           
2f(T 111frO   c              #   :   #    U  H  oS    S:X  d  M  Sv   M     g7f)rC   r>   r   NrI   rJ   s     rM   rN   rN      rV   rO   c              #   :   #    U  H  oS    S:X  d  M  Sv   M     g7f)rC   r?   r   NrI   rJ   s     rM   rN   rN      s     
9f([ 811frO   z
  z2==================================================u     РЕЗУЛЬТАТЫ: u    SL=6×ATR TP=12×ATRz  z  OOS val_acc:     z  Success Rate L:  z  (breakeven: 33.3%)z  Success Rate S:  u     Сделок всего:    z  WinRate:         z.1fz% ()z  TP / SL / TS:    z / u!     Сумм доходность: z+.2f%u!     Средняя прибыль: u      Средний убыток:  z  Profit Factor:   z  Sharpe:          u     Время:           <   u    минu-   
  СРАВНЕНИЕ С RR 1:2 (SL=3, TP=6):u   Параметрz<25 u   3×/6×z<18u   6×/12×z-------------------------z------------------val_accz55.17%zSuccess Rate Lz34.9%zSuccess Rate Sz31.8%u   Сделок285WinRatez56.1%157123u   Доходностьz+371.86%zProfit Factorz2.69Sharpez4.87rI   )__doc__sysostimewarningsnumpynpfilterwarningspathinsertdirnameabspath__file__config
cfg_module
set_device
TARGET_CFGlistkeysTARGET_KEYSTARGET_CONFIGcopyold_cfgclearupdater   r   r   
models.moer   r   r   r   r   models.expertsr   xgboostxgbjoblibTICKERsuffixt0printmoer   okexitgetattrr   optimal_thresholdsgetoos_long_thoos_short_thselected_expertsoos_selecteddf_fulllenall_featurescolumns	availableensembleget_norm_stats
norm_statsensemble_full	train_allset_norm_statspredict_allsignals_fullX_fullcolumn_stackvaluesy_fullminmin_len	flat_maskintsumn_flatmeanlong_srshort_sr
params_xgbplmaxXGBClassifierfitxgb_longpspos_sneg_sscale_s	xgb_shortrf_longrf_shortrf_modelr]   feature_colsn_base_featuresjoinlower	save_pathsavedfpredict_proba_alignedresultn_res
close_valsatr_vals	high_valslow_valssl_multtp_multr
   tradesin_tradeentry_price	entry_idx	directionsl_pricetp_pricerangeiilocr;   closer7   	bars_heldhighlowhit
exit_pricepnlappendsl_disttp_disttotalwinswr	total_retavg_wavg_labspfarrayreturnsstdsqrtsharpetp_csl_cts_cstrparamval_36val_612)crL   s   00rM   <module>r      s         ! 277??277??8#<= >  
  g  

 :??$%

"
"
'
'
) 
       
    
 + G G d d )  			YY[ 8*o  "6(*IJ K 
"o  YYT4Y?		
HHQKc=!,$$((6%%))'48## +c*&S0AUXGYZ [   "
f

?c'lS(	)HHQK "$=1W__(<Q=	\\((*
#i.9   D  F   j )(()<	}iVb	c	'.188'/:R:Y:YZ	[
c&k3v;
'	"FG89$5w&&F|}5		Y]]_	y 
.
!
(
(#f+
7
<
<
>?#**CK<=9>>@ VHAc)n-Rs9~0Ec/J K#hxn6 7 T3#CQQ"	
 __S#f+fQqSkoo.?"?VAaC[__EVWXAY!Y[^_ade "r"&&vvad|<__q!tFe
c%#eQ-'-s
3 ##F,@A A  ##''q!t=	"-E #  )n GGLLflln%5XfXW#MN	   $YKr$))+b.1ESI J ( *		"	"2	&F[(
e9UFG$vJufg&	e9UFG$+ (				uA[[^H%FqME
1+C	M	|qk
x4jD(/#zh$Z!T8?3
;90)5OC@IV@SJ,;[fis[s  xC  [CCMM)C3XabcH8/1$oF7		--&/6&957?uw&/6&957?uwE 
H 	F

1f
11	#eA,s-f--	EIv@v!9a9v@AqEJ4Zv@v!9a9v@AUV<6<	<s3sJzagJzGzC{  ~B  @C  
C  D
((&1&QiL&1
2hmnohoGKKM$/	/rww[aGb[aVW&	[aGb?c8c0d	duv

2f
22

2f
22

9f
99 VHo   (=> ? 6(m  K,- . GC=(<= > HS>)=> ? &ug. / Bs83tfAeWA6 7 D6TF#dV4 5 ))D)9; < )%A6 7 (s15 6 Bs8$ % F3<( )  $))+b."!4S 9A B 6(m  6 8 c
"!Ic?!Js3CD E 6(!F81VH% &[-/w73-1w8C.2UCJ'Bs81&	5#d)	5#d)ZId+;1)=>fC*v&'E67 
BuSk6#,a}
56        
     ( E >f A@1Gbs0   5i:i:2i?	i?.j>	jj	4j