Files
AlphaFlow-MT5-ML-DL-Trading…/features/__pycache__/feature_engineering.cpython-311.pyc
T

109 lines
20 KiB
Plaintext
Raw Normal View History

2025-03-02 22:25:33 +01:00
§
˜Àg$:ã óJddlZddlZddlZddlZddlmZddlm Z ddl
m Z dej dej fdZ
dej dej fdZdej dej fd „Zd
gd ¢fdej d ed
ededej f
dZdej dej fdZdej d ed
edej fdZdej d edej fdZdej defdZdCdej dedej fdZdej defdZdCdej dedej fdZdedededefdZdDdej dedefdZd ed!edej fd"„ZdDdej dedej fd#„Z dEdej d ed&ed'edej f
d(„Z!dFdej d*edej fd+„Z" dGdej d/ed0ed1edej f
d2„Z#dHdej d ededej fd4„Z$ dIdej d6ed7ed8edej f
d9„Z%dJdej ded8edej fd;„Z&dKdej d ed=edej fd>„Z'dLdej d ededej fd?„Z(dej d@edej fdA„Z)dMdej d ededej fdB„Z*dS)NéN)Úadfuller)Úfft)ÚStandardScalerÚdfÚreturnc ó<tj|dddddd¬¦«}|S)
Adds a wide range of technical analysis indicators to the DataFrame
using the 'ta' library. Modifies the DataFrame in place.
ÚopenÚhighÚlowÚcloseÚ tick_volumeT)r r
r r ÚvolumeÚfillna)ÚtaÚadd_all_ta_features©rs úMc:\Users\moham\OneDrive\AlphaFlow Trading Bot\features\feature_engineering.pyrrs2õ
Ô Ø
˜f¨%°wÀ}Ð]að
ñ
ô
€Bð €Iócóh|d d¬¦« ¦«|d<|S)zR
Example custom feature. For instance, a rolling mean of the close price.
r é
)ÚwindowÚrolling_mean_10)ÚrollingÚmeanrs rÚcreate_custom_featurers5ð˜wœK×/°rÐA€BÐÑØ
€IrcóV| ¦«}|d|dz
|d<|S)zA
Calculates the spread between 'high' and 'low' columns.
r
r Úspread)Úcopy©rÚdf_copys rrr(s-ðgŠg‰iŒi€GØ œ¨'°%¬.Ñ8€GˆØ €Nré2)ééérÚcolÚlagscó°| ¦«}|D]=Š|| ||¬¦« ˆfdd¬¦«|d<Œ>|S)z=
Computes rolling autocorrelation for multiple lags.
)rÚ min_periodscó0| ¬¦«S)N)Úlag)Úautocorr)Úxr+s €rú<lambda>z!auto_corr_multi.<locals>.<lambda>9sø€˜QŸZšZ¨C˜0€rF)ÚrawÚ autocorr_)rrÚapply)rr%r&r'r r+s @rÚauto_corr_multir20sqø€ðgŠg‰iŒi€GØð
ð
ˆà CŒLß
ŠW˜A¨1ˆ
ŠUÐ0°eˆUÑ
 Ð!˜
€NrcóJ| ¦«}d|d<d|j|d|dkdf<tj|d|dz
¦«|d|dz
dzz |d <tj|d|dz
¦«|ddzz |d
<|S) zZ
Adds candle-specific features:
- candle_way
- fill
- amplitude
rÚ
candle_wayr"r r r
r gñh㈵øä>ÚfillÚ amplitude)rÚlocÚnpÚabsrs rÚcandle_informationr:>ðgŠg‰iŒi€GØ€GˆLÑØDE€G„K˜Ô  7¨6¤?Ò2°LÐ Œˆw '¨&¤/Ñ 6Œ?˜W Uœ^Ñ +¨dÑ  ˆF
Œˆw '¨&¤/Ñ 6Œ?˜  ˆð €Nrcó¸| ¦«}tj||¦«|d|<|d| |¬¦«|d|<|S)zB
Log-transform a column + compute % change over 'n' bars.
Úlog_)ÚperiodsÚret_log_)rr8ÚlogÚ
pct_change)rr%r&r s rÚ
log_transformrASs`ðgŠg‰iŒi€GÝœF 7¨3¤<Ñ0€GˆL3ˆLˆØ% l¨S l 3×>ÀqÐI€GˆNqˆNˆØ €Nrcó¢| ¦«}|| ¦«|d<|d ¦«|d<|S)z@
Adds 'velocity' and 'acceleration' for a given column.
ÚvelocityÚ acceleration)rÚdiff)rr%r s rÚmathematical_derivativesrF\sKðgŠg‰iŒi€GØ! #œ,×-€GˆØ% jÔ8€GˆØ €Nrrcót|¦«}|dkr tjStjtj|d|dz ¦«dz¦«}t j|dt jd¦«z|zz ¦«S)Nr"r
r éé)Úlenr8ÚnanÚsumr?ÚmathÚsqrt)rr&Úsum_sqs rÚparkinson_estimatorrPhsnÝ ˆF‰ Œ €A؈1‚u€uÝŒvˆ
Ý
ŒV•B”F˜6 &œ>¨F°5¬MÑ:¸
@€FÝ Œ9V˜q¥4¤8¨A¡;¤;™°Ñ 4réÚ window_sizecó| ¦«}tjd|j¬¦«}t |t |¦«¦«D]+}|j||z
|}t|¦«|j|<Œ,||d<|S)float64©ÚdtypeÚindexÚrolling_volatility_parkinson)rÚpdÚSeriesrWÚrangerJÚilocrP©rrRr Ú rolling_volÚws rÚmoving_parkinson_estimatorraosØgŠg‰iŒi€GÝ”) )°7´A€KÝ
  ¤ Ñ
Ø ŒL˜˜[™¨1Ð Ý1°!Ñ Ô˜ÑÐØ.9€GÐ  €Nrcó.t|¦«}|dkr tjStj|d|dz ¦«dz}tj|d|dz ¦«dz}t jtj||z¦«¦«S)Nr"r
r rHr r )rJr8rKr?rMrNr)rr&Úterm1Úterm2s rÚyang_zhang_estimatorrexs}Ý ˆF‰ Œ €A؈1‚u€uÝŒvˆ
Ý ŒF6˜&”> F¨5¤MÑ 2°aÑ 7€EÝ ŒF6˜'”? V¨F¤^Ñ 4¸Ñ 9€EÝ Œ9•R”W˜U U™]Ñ ,rcó| ¦«}tjd|j¬¦«}t |t |¦«¦«D]+}|j||z
|}t|¦«|j|<Œ,||d<|S)NrTrUÚrolling_volatility_yang_zhang)rrYrZrWr[rJr\rer]s rÚmoving_yang_zhang_estimatorrhsØgŠg‰iŒi€GÝ”) )°7´A€KÝ
  ¤ Ñ
Ø ŒL˜˜[™¨1Ð Ý2°1Ñ Ô˜ÑÐØ/:€GÐ  €NrÚPextÚ thresholdcó>d}||z
|z }||krd}n || krd}|S)Nrr"éÿÿÿÿ©)rirjrkÚdcÚvars rÚdc_eventrqŒs>Ø
€BØ ˆt‰8
€CØ
ˆÐØ
ˆˆØ 
Ò Ð Ø
ˆØ
€Irç{®Gáz„?có”| ¦«}|dj}gg}}|d}d}tdt|¦«¦«D]x}||} t | ||¦«}
|
dkr| |¦«d}| }Œ;|
dkr| |¦«d}| }Œ[|dkr | |kr| }Œj|dkr| |kr| }Œy||fS)Nr rr"rm)rÚvaluesr[rJrqÚappend) rrkr ÚpricesÚ dc_events_upÚdc_events_downrjÚ directionr_riÚdc_flags rÚ calculate_dcr{ØgŠg‰iŒi€GØ

Ô
$€FØ#% r.€LØ !Œ9€DØ€IÝ
1•c˜&k”kÑ
ðˆØ 1ŒIˆÝ˜1˜d IÑ.ˆØ aŠ<ˆ × Ò  Ñ ˆˆDˆ
˜Š]ˆ]Ø × ! !Ñ ˆI؈DˆDà˜AŠ~ˆ~ ! d¢( (ØØ˜b’ Q¨¢X XØøØ ˜Ð 'rrwrxcóšg}g}| t|¦«¦«| t|¦«¦«||fS©N)ÚextendÚsorted)rwrxrÚtrend_events_downÚtrend_events_ups rÚcalculate_trendr­sPØÐØ€OØ×ÒV NÑ×Ò6 ,Ñ ˜ -rcó*| ¦«}t||¬¦«\}}t|||¦«\}}tj|d<d|j|df<d|j|df<|d ¦« ¦«|d<|S)N)rkÚ
market_regimer"r)rr{rr8rKr7ÚffillÚbfill)rrkr Údc_upÚdc_downÚt_downÚt_ups rÚmarket_regime_dcr´s”ØgŠg‰iŒi€GÝ! '°YÐ?N€Eˆ" 5¨'°7Ñ;L€Fˆ!œv€GˆØ)*€G„K&Ø+,€G„K˜Ð& Ô7×?×G€GˆOÑØ €Nrr rÚn1Ún2cóH| ¦«}|| |d¬¦« ¦«}|| |d¬¦« ¦«}||z
|d<|ddk t¦«|d<|S)NF)ÚspanÚadjustÚ kama_diffrÚ
kama_trend)rÚewmrÚastypeÚint)rr%rr Ú
short_kamaÚ long_kamas rÚkama_market_regimer˜¾s•ØgŠg‰iŒi€Gؘ×! r°%Ð?€Jؘ×! r°%Ð?€IØ%¨ Ñ1€GˆKÑØ$ 1°QÒ6×>½sÑC€GˆØ €Nrr"Úlookbackcóþ| ¦«}tj|d<tj|d<tj|d<tj|d<tj|d<tj|d<t|t |¦«¦«D]ð}|dj||z
}|dj||z
}|dj|}|dj|}||krH||j|j|df<||j|j|df<||z
|j|j|df<||krH||j|j|df<||j|j|df<||z
|j|j|df<Œñ|S) NÚBullish_gap_infÚBullish_gap_supÚBullish_gap_sizeÚBearish_gap_infÚBearish_gap_supÚBearish_gap_sizer
r )rr8rKr[rJr\ÚatrW)rr™r r_Ú prev_highÚprev_lowÚ curr_highÚcurr_lows rÚ
gap_detectionr¦És†ØgŠg‰iŒi€GÝ!#¤€GÐ ÑÝ!#¤€GÐ ÑÝ"$¤&€GÐ ÑÝ!#¤€GÐ ÑÝ!#¤€GÐ ÑÝ"$¤&€GÐ ÑÝ
8S ™\œ\Ñ
Tð TˆØ˜F”OÔ¨X©Ô6ˆ ؘ5”>Ô& q¨8¡|Ô4ˆØ˜F”OÔÔ+ˆ ؘ5”>Ô& )ˆØ  Ð Ø>GˆGŒJw”} 'Ð):Ð ;Ø>FˆGŒJw”} 'Ð):Ð ;Ø?GÈ)Ñ?SˆGŒJw”} 'Ð);Ð  Ð Ø>GˆGŒJw”} 'Ð):Ð ;Ø>FˆGŒJw”} 'Ð):Ð ;Ø?GÈ)Ñ?SˆGŒJw”} 'Ð);Ð <øØ €NrÚstandardçÚ
type_rangeÚstrenghtÚperiodcó¢| ¦«}|dkr'tj|d|dz
¦«|d<n<|dkr'tj|d|dz
¦«|d<ntd¦«tj|d|dz d z
¦«|d
<|d |¦« ¦«|d <d |d