Code zigzag
//+------------------------------------------------------------------+ //| FastZZ.mq5 | //+------------------------------------------------------------------+ #property copyright "Copyright 2012, Yurich" #property link "https://login.mql5.com/ru/users/Yurich" #property version "1.00" //+------------------------------------------------------------------+ #property indicator_chart_window #property indicator_buffers 2 #property indicator_plots 1 #property indicator_label1 "ZZ" #property indicator_type1 DRAW_ZIGZAG #property indicator_color1 clrRed #property indicator_style1 STYLE_SOLID #property indicator_width1 1 //+------------------------------------------------------------------+ input int Depth=2000; // Minimum points in a ray //+------------------------------------------------------------------+ double zzH[],zzL[]; double depth;//, deviation; int last,direction; //+------------------------------------------------------------------+ void OnInit() { SetIndexBuffer(0,zzH,INDICATOR_DATA); SetIndexBuffer(1,zzL,INDICATOR_DATA); IndicatorSetInteger(INDICATOR_DIGITS,Digits()); PlotIndexSetDouble(0,PLOT_EMPTY_VALUE,0.0); PlotIndexSetDouble(1,PLOT_EMPTY_VALUE,0.0); depth=Depth*_Point; //deviation=10*_Point; direction=1; last=0; } //+------------------------------------------------------------------+ int OnCalculate(const int total, const int calculated, const datetime &time[], const double &open[], const double &high[], const double &low[], const double &close[], const long &tick[], const long &real[], const int &spread[]) { if(calculated==0) last=0; for(int i=calculated>0?calculated-1:0; i<total-1; i++) { bool set=false; zzL[i]=0; zzH[i]=0; //--- if(direction>0) { if(high[i]>zzH[last])//-deviation) { zzH[last]=0; zzH[i]=high[i]; if(low[i]<high[last]-depth) { if(open[i]<close[i]) zzH[last]=high[last]; else direction=-1; zzL[i]=low[i]; } last=i; set=true; } if(low[i]<zzH[last]-depth && (!set || open[i]>close[i])) { zzL[i]=low[i]; if(high[i]>zzL[i]+depth && open[i]<close[i]) zzH[i]=high[i]; else direction=-1; last=i; } } else { if(low[i]<zzL[last])//+deviation) { zzL[last]=0; zzL[i]=low[i]; if(high[i]>low[last]+depth) { if(open[i]>close[i]) zzL[last]=low[last]; else direction=1; zzH[i]=high[i]; } last=i; set=true; } if(high[i]>zzL[last]+depth && (!set || open[i]<close[i])) { zzH[i]=high[i]; if(low[i]<zzH[i]-depth && open[i]>close[i]) zzL[i]=low[i]; else direction=1; last=i; } } } //---- zzH[total-1]=0; zzL[total-1]=0; return(total); } //+------------------------------------------------------------------+
Les tampons de l'indicateur ne contiennent que des valeurs hautes et basses, je remplis les données intermédiaires dans la boucle, en les convertissant en 1 - hausse sur la barre actuelle, -1 baisse. Cela semble correct, mais s'il y a des erreurs, merci de me corriger.
void FillZZarray() { ArrayResize(zz,vector); int lastcountbar = 0; for(int i=0;i<vector;i++) // Заполняем массив выходов { if(zzH[i]>0) { zz[i]=1; lastcountbar = 1; if(i!=0) for(int q=i-1;q>=0;q--) { if(zz[q]==0)zz[q]=lastcountbar; } } if(zzL[i]>0) { zz[i]=-1; lastcountbar = -1; if(i!=0) for(int q=i-1;q>=0;q--) { if(zz[q]==0)zz[q]=lastcountbar; } } if(zzH[i]==0 && zzL[i]==0) zz[i] = lastcountbar; } }
Cool ! Ce n'est que lorsque vous le mettez sur le terrain que vous changez les positions des signaux d'achat et de vente.
Pourquoi ? )
Le présage est le suivant . Après le test.
Non, sérieusement... parlons-en, si vous avez quelque chose à dire). Ce n'est pas comme si j'étais ici pour jouer à des jeux :)

- votes : 33
- 2012.06.01
- Serj
- www.mql5.com
J'ai besoin d'un vecteur de données d'entrée pour la formation, et ici les signaux sont interrompus - puis achat, puis vente, puis sauts... et je ne sais pas comment les remplir, pas avec des zéros... Je ne sais pas comment les remplir de zéros... Le zigzag, à mon avis, fournit des entrées qui ne sont pas moins parfaites, mais je peux me tromper... Je ne suis pas encore très expérimenté dans les réseaux neuronaux...
J'ai besoin d'un vecteur de données d'entrée pour la formation, et ici les signaux sont interrompus - puis achat, puis vente, puis sauts... et je ne sais pas comment les remplir, pas avec des zéros... Je ne sais pas comment les remplir de zéros, ce n'est pas clair... Le zigzag, à mon avis, fournit des entrées non moins parfaites, mais je peux me tromper... Je ne suis pas encore très expérimenté dans les réseaux de neurones...
L'indicateur peut choisir entre deux types de signaux, discret et analogique. Remplissez les trous avec des zéros.
La photo dans le premier message sur l'échantillon de formation ? Si c'est hors échantillon, il est intéressant de voir sur l'échantillon d'entraînement, avec autant de neurones le réseau devrait mémoriser toutes les données d'entrée par cœur.
L'indicateur comporte deux types de signaux, discrets et analogiques, parmi lesquels vous pouvez choisir. Remplissez les trous avec des zéros.
La photo du premier message est-elle un échantillon d'entraînement ? S'il est hors échantillon, il est intéressant de regarder l'échantillon d'entraînement. Avec autant de neurones, le réseau devrait mémoriser toutes les données d'entrée par cœur.
L'échantillon d'entraînement est constitué des 1000 dernières mesures, ou plutôt des premières si vous regardez à partir du 0ème comme dans les séries temporelles, tout ce qui précède est hors échantillon.
Je vais l'essayer demain et voir ce que ça donne. Jusqu'à présent, j'ai vissé le deuxième zigzag, le plus grand, en regardant comment il fonctionne sur 2 sorties. Rien d'exceptionnel jusqu'à présent, fonctionne en moyenne à zéro :)
en moyenne fonctionne à zéro :)
C'est pourquoi on vous a suggéré de passer de l'achat à la vente.
Je n'ai pas encore entendu parler de quelqu'un qui gagne de l'argent de façon stable avec les réseaux neuronaux, c'est très instable. Le TS le plus simple sur les muwings - et ils travaillent plus stable.

- Applications de trading gratuites
- Plus de 8 000 signaux à copier
- Actualités économiques pour explorer les marchés financiers
Vous acceptez la politique du site Web et les conditions d'utilisation
Le forum contient peu d'informations sur les solutions toutes faites et sur l'efficacité des réseaux neuronaux pour les échanges sur le marché. Je vous propose de discuter et de partager votre expérience ici. S'il existe déjà un fil de discussion, veuillez y faire un lien.
J'utilise des classes d'ici, un simple Perspectron multicouche. J'espère que les classes comptent correctement, je compte sur l'expérience de l'auteur. J'ai commencé à expérimenter, c'est intéressant :)
En ce moment, j'ai 11 indices en entrée, la sortie est un zigzag, décalé d'une mesure dans le futur.
Voici les résultats de ma grille de 8 mois. Je m'entraîne sur 1000 barres, 10000 époques, 70 neurones dans une couche cachée. Les signaux sont inversés et purement par le réseau neuronal, sans filtres supplémentaires. 15 min tf.