Files
profitable-expert-advisor/ai/eurusd1h/__pycache__/main.cpython-312.pyc
T

140 lines
18 KiB
Plaintext
Raw Normal View History

2026-05-02 15:55:04 +02:00
Ë
éüíiç+ãó&dZddlmZddlZddlZddlZddlZddlmZmZddl m
Z
ddl Z ddl
ZddlZddlZddlZddlZddlmZddlmZddlmZdd lmZdd
lmZe
e«j=«j>j>d z Z ejBjEde#e ««dd l$m%Z%m&Z&dd
l'm(Z(m)Z)m*Z*dZ+gd¢Z, ddZ- d ddZ. ddZ/ddZ0ddZ1e2dk(rejfe1««yy)uG
EURUSD H1 — same stack as ai/yt (24 features, 5-class softmax, optional KMeans weights).
MinMaxScaler is fit on **all** feature rows returned by MT5 (full downloaded history).
A chronological **tail** slice (default 12%% of sequences) is used only for val_loss /
EarlyStopping; all earlier sequences are used for training.
é)Ú annotationsN)ÚdatetimeÚ timedelta)ÚPath)ÚKMeans)Ú MinMaxScaler)Úkeras)Úlayers)ÚtqdmÚ xauusd_h1)Ú NUM_FEATURESÚprepare_features_full)Ú
atr_seriesÚ
class_weightsÚcompute_action_labelsé)ÚHOLDÚBUYÚ
SELL_SHORTÚ
CLOSE_LONGÚ CLOSE_SHORTc ó¼tj«s tdtj««tj|«}|€#tj
«t
d|d«|js8tj|d«s"tj
«t
d|«g}d}|}||kr‡t|t|¬«z|«}tj||||«} | Lt| «dkDr>| D]9}
|j| jjD cic]} | |
| Œ
c} «Œ;|}||krŒ‡|stj
«t
d «t!j"|«} t!j$| d
d ¬ «| d
<| j'd
«j)«} | | j*j-d
¬«} | Scc} w)NzMT5 init failed: zSymbol z
not foundTzCannot select éx)Údayséu>No rates returned — download EURUSD H1 in MT5 History CenterÚtimeÚs)ÚunitÚfirst)Úkeep)Úmt5Ú
initializeÚ RuntimeErrorÚ
last_errorÚ symbol_infoÚshutdownÚ
ValueErrorÚvisibleÚ
symbol_selectÚminrÚcopy_rates_rangeÚlenÚappendÚdtypeÚnamesÚpdÚ DataFrameÚ to_datetimeÚ set_indexÚ
sort_indexÚindexÚ
duplicated)
ÚsymbolÚ timeframeÚ
start_dateÚend_dateÚinfoÚall_rowsÚ
chunk_daysÚcurÚ chunk_endÚratesÚrowÚdfs
úmain.pyÚfetch_mt5_rangerE'ô >‰>Ô ÜÐ.¬s¯~©~Ó/?Ð.@Ð ?‰?˜ "€DØ €|Ü ŒÜ˜7 6 (¨*Ð <Š<¤× 1Ñ 1°&¸$Ô ?Ü ŒÜ˜>¨&¨Ð€HØ€JØ
€CØ
Š.ܘœi¨ZÔ8¸(ÓCˆ Ü×$ V¨Y¸¸YÓØ Ð ¤ U£¨a¢Øò
HذE·K±K×4EÑ4EÖ F¨q  ¡F¡Ò FÕ
Hàˆð
‹.ñ Ü ŒÜÐ €BÜ  6¡
°Ô5€B€v × (Ñ (Ó *€BØ ˆRX‰X×
Ñ
 
Ó
.Ñ /€BØ
€Iùò!GsÄ'
G
cóì|djtj¬«}t|d«jtj¬«}|jj |«}t
|«}t
|«}tj||ftj¬«}tj|t¬«} t|«}
t|«D]˜\} } | dks| |
zt
|«k\rd| | <Œ"tj|| «r|| dkDrt|| «n|| dz}
t|«D]3\}}| |zt
|«k\rd| | <Œ|| |z|| z
|
z || |f<Œ5Œš|| fS)close©r.érFg-Cëâ6?)Úto_numpyÚnpÚfloat64rr5Ú get_indexerr,ÚzerosÚonesÚboolÚmaxÚ enumerateÚisfiniteÚfloat)rCÚ
feat_indexÚhorizonsrGÚatrÚposrBÚvalidÚmax_hÚhs rDÚforward_return_fingerprintsrbNs`ð
ˆw‰K× Ñ ¤r§z¡zÐ Ó 2€EÜ
R˜Ó
×
%¬B¯J©JÐ
7€CØ
(‰(×
Ñ
˜
*€CÜ ˆJ€AÜ ˆH
€AÜ
!QœrŸz™zÔ*€AÜ G‰GAœTÔ "€EÜ M€Eܘ#“ò 4‰ˆˆ1Ø ˆqŠ5‘I¤ U£ÒˆE!‰HØ ÜŸ[™[¨¨Q©Ô0°S¸±V¸a²ZŒE#a&ŒMÀUÈ1ÁXÐPTÁ_ˆÜ˜ 4‰DˆAˆ1‰uœ˜E
Ò aÙØ˜Q ™U‘| e¨A¡hÑ.°!Ñ3ˆAˆaˆdŠGñ  
ˆeˆ8€OócóÔggg}}}tt|dz
t|««d¬«D]_}|||z
dz|dzj«}|ddd}|j |«|j ||«|j ||«Œat j |t
j¬«t j |t
j¬«t j |«fS)NrÚ sequences)ÚdescéÿÿÿÿrH) r Úranger,Úcopyr-rKÚasarrayÚfloat32Úint64) ÚtimesÚlookbackÚxsÚysÚt_endr^Úwindows rDÚcreate_sequencesruh𠘘BˆEˆ€BÜ
”%˜ 1™ ¤c¨!£fÓ-°KÔ
ˆØ1x< # a¨!¡eÐ,ר˜"˜ˆØ
Ø
!AØ
U˜1‘XÕð ô
2œRŸZ™ZÔ
2œRŸX™XÔ
ð ðrccó tj||f¬«}tjdd¬«|«}tjd«|«}tjd«|«}tjd«|«}tjdd¬ «|«}tjt
d
d ¬ «|«}t
j||«}|jt jjd
«ddg¬«|S)N)Úshapeé`T)Úreturn_sequencesgÐ?é0é Úrelu)Ú
activationÚsoftmaxÚ action_probs)r}Únamegü©ñÒMbP?Úsparse_categorical_crossentropyÚaccuracy)Ú optimizerÚlossÚmetrics) r
ÚInputÚLSTMÚDropoutÚDenseÚ NUM_CLASSESr ÚModelÚcompileÚ
optimizersÚAdam)rpÚn_featÚinpÚoutÚmodels rDÚ build_modelr”|Ü
,‰,˜Ð
0€CØ Ô.¨sÓ3€AØŒ˜QÓ€AØŒ B‹˜Ó€AØŒ˜QÓ€AØ R FÔ+¨AÓ.€AØ
NŒ&,‰,”{¨y¸
NÈqÓ
Q€CÜ K‰K˜˜SÓ !€EØ ‡M×"×Ó
 ðôð
€Lrccóºtjjdd«}ttjjdd««}ttjjdd««}ttjjdd««}ttjjd d
««}t tjjd d ««}t t
|d
«d«}tddd«}tddd«}tt«j«jdz }|jdd¬«||dz } ||dz }
td|d|j«d|j«d«td«td« t|t j"||«} t!j$«t'| «dkr td «ytd!t'| «d"| j(d#d$| j(d%«t+| «} t-| «j.| j(}
|
j0j3t4j6«}| j0j3t4j8«}| j(j;«}t5j<|«j?d¬&«|d#k\z|t@kz}||}||}||}tC«}|jE|«|jG|«j3t4j8«}tI||||«\}}}t'|«dkr td'«yt'|«}t|d(|z
z«}t
||d)z«}t ||d*z
«}t5jJ|tL¬+«}d|d||}||||}}||||}}td,t'|«d-t'|«d.d)|zd/d0|«tO|t@«}t5jP|«} t5jR| D!cgc]}!|t||!«Œc}!t4j8¬+«}"|"jU«}#|dkDr/tW| tYjZ|««\}$}%|$|dz
d}&|%|dz
d}'|&| }(|'| })|)t5j<|(«j?d¬&«z}*t|*j]««|d1zk\r t_|d2d3¬4«}+|+jE|(|*«t5j`t'| «d%t4jb¬+«},|+je|(|*«|,|*<t5jJ|t4jf¬+«}-|,D]}.d#|.cxkr|ksŒnŒ|-|.xxd(z
cc<Œ t5jh|-d(«}-t
t|,d#k\j]««d«}/t5jjt'| «t4j8¬+«}0tmt'| ««D]-}1t|,|1«}.|.d#k\sŒt |/||-|.zz «|0|1<Œ/|"|0z}#|#t'|#«t t5j\|#««z z}#td5|d6«n td7«to|tp«}2|2js«|2jE|||#||f||dttjvjyd8d3d¬9«ttjvj{d8d:d;d<¬=«g¬>«|2j}||d#¬?«\}3}4td@|3dAdB|4dA«tj€d|tpft~j8dC¬D«f}5tj„j‡|2|5dE¬F«\}6}7t‰|6t| ««tt| «jdGdH«dI«5}8t“j”||8«ddd«idJ|dKdL“dM|dNttp«dO| jj™«dPt@dQtšdRt| j(d#«t| j(d%«gdSdT“dUdV|t|j]««t|j]««dWœdX|dkDrdY|dZnd[“d\|j™«d]|j™«d^t¡|d_«r|j™«ndd`t |4«dat |3«dbdc“}9t|
ddde¬f«5}8t¥j”|9|8dg¬h«ddd«tdi| «tdj|
«tdktpz«tdlj§dm„|D«««tdlj§dn„|D«««tdo|«y##t!j$«wxYwcc}!w#1swYŒ xYw#1swYŒÇxYw)pNÚ
EUR_SYMBOLÚEURUSDÚ EUR_LOOKBACKÚ48Ú
EUR_EPOCHSÚ40Ú EUR_BATCHÚ64Ú EUR_CLUSTERSÚ12Ú EUR_VAL_FRACz0.12gš™™™™™©?gffffffÖ?iÆré éÚmodelsT)ÚparentsÚexist_okz_H1_action.onnxz_H1_action_meta.jsonzSymbol=z
H1 | fetch [z .. ú]zBScaler: ALL bars | Val: chronological tail for early stopping onlyuFetching MT5 …iôu:ERROR: Not enough H1 bars — check EURUSD history in MT5.zBars: z range: ru → rg)ÚaxiszERROR: Too few sequences.gð?édéÈrHzSequences train=z
val_tail=z (z.1fz
%%) lookback=ré*é
)Ú
n_clustersÚ random_stateÚn_initzKMeans clusters=z (train subset only)z/Skipping KMeans: not enough valid fingerprints.Úval_loss)ÚmonitorÚpatienceÚrestore_best_weightsgà?égíµ ÷ư>)Úfactorr±Úmin_lr)Ú
sample_weightÚvalidation_dataÚepochsÚ
batch_sizeÚverboseÚ callbacks)zTail val_loss=z.4fz val_accuracy=Úinput)r€é
)Úinput_signatureÚopsetz.onnxz _scaler.pklÚwbr7r8ÚH1rpÚ num_featuresÚfeature_columnsÚ num_classesÚ class_namesÚ
mt5_bar_rangeÚ
scaler_fit_onÚ%all_valid_feature_rows_full_mt5_rangeÚvalidation_splitÚchronological_tail_fraction)ÚmodeÚ val_fractionÚtrain_sequencesÚ