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

108 lines
19 KiB
Plaintext
Raw Normal View History

2025-03-02 22:25:33 +01:00
Ë
˜Àg$:ã óddlZddlZddlZddlZddlmZddlm Z ddl
m Z dejdejfdZ
dejdejfdZdejdejfd „Zd
gd ¢fdejd ed
ededejf
dZdejdejfdZdejd ed
edejfdZdejd edejfdZdejdefdZd7dejdedejfdZdejdefdZd7dejdedejfdZdedededefdZd8dejdedefdZdededejfd „Zd8dejdedejfd!„Z d9dejd ed"ed#edejf
d$„Z!d:dejd%edejfd&„Z" d;dejd'ed(ed)edejf
d*„Z#d<dejd ededejfd+„Z$ d=dejd,ed-ed.edejf
d/„Z%d>dejded.edejfd0„Z&d?dejd ed1edejfd2„Z'd@dejd ededejfd3„Z(dejd4edejfd5„Z)dAdejd ededejfd6„Z*y)Bé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.pyrrs+ô
× Ñ Ø
˜f¨%°wÀ}Ð]aô
€Bð €IócóR|djd¬«j«|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_featurers/ð˜w™K×/°rÐA€BÐÑØ
€IrcóB|j«}|d|dz
|d<|S)zA
Calculates the spread between 'high' and 'low' columns.
r
r Úspread)Úcopy©rÚdf_copys rrr(s+ðg‰gi€GØ ¨'°%©.Ñ8€GˆØ €Nré2)ééérÚcolÚlagscó–|j«}|D]2Š||j||¬«jˆfdd¬«|d<Œ4|S)z=
Computes rolling autocorrelation for multiple lags.
)rÚ min_periodscó(|j¬«S)N)Úlag)Úautocorr)Úxr+s €rÚ<lambda>z!auto_corr_multi.<locals>.<lambda>9sø€˜QŸZ™Z¨C˜0rF)ÚrawÚ autocorr_)rrÚapply)rr%r&r'r r+s @rÚauto_corr_multir20sVø€ðg‰g‹i€GÛˆà C‰Lß
‰W˜A¨1ˆ
‰UÓ0°eˆ
 )˜C˜ð €Nrcó|j«}d|d<d|j|d|dkDdf<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€GØ€GˆLÑØDE€G‡KK˜Ñ  7¨6¡?Ñ2°LÐ ˆw '¨&¡/Ñ 6‰?˜W U™^Ñ +¨dÑ  ˆF
ˆw '¨&¡/Ñ 6‰?˜  ˆð €Nrcóž|j«}tj||«|d|<|d|j|¬«|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_transformrASsZðg‰gi€GÜŸF™F 7¨3¡<Ó0€Gˆd3%ˆØ¨S¨E 3×>ÀqÐI€GˆhqcˆØ €Nrcó~|j«}||j«|d<|dj«|d<|S)z@
Adds 'velocity' and 'acceleration' for a given column.
ÚvelocityÚ acceleration)rÚdiff)rr%r s rÚmathematical_derivativesrF\sCðg‰gi€GØ! #™,×-€GˆJÑØ% jÑ8€GˆØ €Nrrcó t|«}|dkrtjStjtj|d|dz «dz«}t j |dt jd«z|zz «S)Nr"r
r éé)Úlenr8ÚnanÚsumr?ÚmathÚsqrt)rr&Úsum_sqs rÚparkinson_estimatorrPhsiÜ ˆF‹ €A؈1‚uÜv‰vˆ
Ü
V‰V”B—FF˜6 &™>¨F°5©MÑ:¸
@€FÜ 9‰9V˜q¤4§8¡8¨A£;™°Ñ 4rÚ window_sizecóú|j«}tjd|j¬«}t |t |««D],}|j ||z
|}t|«|j |<Œ.||d<|S)float64©ÚdtypeÚindexÚrolling_volatility_parkinson)rÚpdÚSeriesrVÚrangerJÚilocrP©rrQr Ú rolling_volÚws rÚmoving_parkinson_estimatorr`osqØg‰gi€GÜ—)‘) )°7·=±=ÔA€KÜ
  Ö
Ø L‰L˜˜[™¨1Ð Ü1°!Ó ×јÒð/:€GÐ  €Nrcót|«}|dkrtjStj|d|dz «dz}tj|d|dz «dz}t j
tj ||z««S)Nr"r
r rHr r )rJr8rKr?rMrNr)rr&Úterm1Úterm2s rÚyang_zhang_estimatorrdxswÜ ˆF‹ €A؈1‚uÜv‰vˆ
Ü F‰F6˜&> F¨5¡MÑ 2°aÑ 7€EÜ F‰F6˜'? V¨F¡^Ñ 4¸Ñ 9€EÜ 9‰9”R—WW˜U U™]Ó ,rcóú|j«}tjd|j¬«}t |t |««D],}|j ||z
|}t|«|j |<Œ.||d<|S)NrSrTÚrolling_volatility_yang_zhang)rrXrYrVrZrJr[rdr\s rÚmoving_yang_zhang_estimatorrgsqØg‰g‹i€GÜ—)‘) )°7·=±=ÔA€KÜ
  Ö
Ø L‰L˜˜[™¨1Ð Ü2°1Ó ×јÒð0;€GÐ  €NrÚPextÚ thresholdcó<d}||z
|z }||k\rd}|S|| krd}|S)Nrr"éÿÿÿÿ©)rhrirjÚdcÚvars rÚdc_eventrpŒs?Ø
€BØ ˆt‰8
€CØ
ˆØ
ˆð €Ið

Ò Ø
ˆØ
€IrcóX|j«}|dj}gg}}|d}d}tdt|««D]e}||} t | ||«}
|
dk(r|j |«d}| }Œ0|
dk(r|j |«d}| }ŒK|dk(r| |kDr| }ŒX|dk(sŒ^| |ksŒd| }Œg||fS)Nr rr"rl)rÚvaluesrZrJrpÚappend) rrjr ÚpricesÚ dc_events_upÚdc_events_downriÚ directionr^rhÚdc_flags rÚ calculate_dcryØg‰g‹i€GØ

×
$€FØ#% r.€LØ !‰9€DØ€IÜ
1”c˜&“kÖ
"ˆØ 1‰IˆÜ˜1˜d Ø aŠ<Ø × Ñ  Ô ˆI؉DØ
˜Š]Ø × ! !Ô ˆI؉Dà˜AŠ~ ! d¢(ØØ˜b“ Q¨£XØð ˜Ð 'rrurvcózg}g}|jt|««|jt|««||fS©N)ÚextendÚsorted)rurvrÚtrend_events_downÚtrend_events_ups rÚcalculate_trendr€­s>ØÐØ€OØ×ÑœV NÓ×Ñœ6 ,Ó ˜oÐ -rcó|j«}t||¬«\}}t|||«\}}tj|d<d|j
|df<d|j
|df<|dj
«j«|d<|S)N)rjÚ
market_regimer"r)rryr€r8rKr7ÚffillÚbfill)rrjr Údc_upÚdc_downÚt_downÚt_ups rÚmarket_regime_dcr‰´s‰Øg‰gi€GÜ! '°YÔ?N€Eˆ" 5¨'°7Ó;L€Fˆ!Ÿv™v€GˆØ)*€G‡KK&Ø+,€G‡KK˜Ð& Ñ7×?×G€GˆOÑØ €NrÚn1Ún2có|j«}||j|d¬«j«}||j|d¬«j«}||z
|d<|ddk\jt«|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€Gؘ×! r°%Ð?€Jؘ×! r°%Ð?€IØ%¨ Ñ1€GˆKÑØ$ 1°QÑ6×>¼sÓC€GˆØ €NrÚlookbackcóh|j«}tj|d<tj|d<tj|d<tj|d<tj|d<tj|d<t|t |««D]}|dj
||z
}|dj
||z
}|dj
|}|dj
|}||kDr]||j |j|df<||j |j|df<||z
|j |j|df<||ksμ||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 )rr8rKrZrJr[ÚatrV)rr—r r^Ú prev_highÚprev_lowÚ curr_highÚcurr_lows rÚ
gap_detectionr¤ÉØg‰g‹i€GÜ!#§¡€GÐ ÑÜ!#§¡€GÐ ÑÜ"$§&¡&€GÐ ÑÜ!#§¡€GÐ ÑÜ!#§¡€GÐ ÑÜ"$§&¡&€GÐ ÑÜ
8œS \×
ؘF‘OרX©Ñ6ˆ ؘ5>×& q¨8¡|Ñ4ˆØ˜FÑ+ˆ ؘ5>×& )ˆØ  Ø>GˆGJ‰Jw—}} 'Ð):Ð ;Ø>FˆGJ‰Jw—}} 'Ð):Ð ;Ø?GÈ)Ñ?SˆGJ‰Jw—}} 'Ð);Ð  Ø>GˆGJ‰Jw—}} 'Ð):Ð ;Ø>FˆGJ‰Jw—}} 'Ð):Ð ;Ø?GÈ)Ñ?SˆGJ‰Jw—}} 'Ð);Ð  €NrÚ
type_rangeÚstrenghtÚperiodcó0|j«}|dk(r"tj|d|dz
«|d<n2|dk(r"tj|d|dz
«|d<n td«tj|d|dz d z
«|d
<|dj |«j «|d <d |d