Zickzack-Code
//+------------------------------------------------------------------+ //| 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); } //+------------------------------------------------------------------+
Die Indikatorpuffer enthalten nur hohe und niedrige Werte, ich fülle die Zwischendaten in der Schleife und konvertiere sie in 1 - steigend auf dem aktuellen Bar, -1 fallend. Scheint korrekt zu sein, aber wenn es Fehler gibt, korrigieren Sie mich bitte
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; } }
Super! Nur wenn Sie es auf die reale, ändern Sie die Positionen der Kauf-und Verkaufssignale.
Und warum? )
Das Omen ist dies. Nach dem Test.
Nein, im Ernst... lass uns darüber reden, wenn du etwas hast.) Ich bin ja nicht hier, um Spiele zu spielen :)
- Stimmen: 33
- 2012.06.01
- Serj
- www.mql5.com
Ich brauche einen Vektor von Eingabedaten für das Training, und hier sind die Signale unterbrochen - dann kaufen, dann verkaufen, dann überspringt... und ich weiß nicht, wie man sie ausfüllen, nicht mit Nullen... Ich weiß nicht, wie man sie mit Nullen füllt... Zigzag liefert meiner Meinung nach Eingaben, die nicht weniger perfekt sind, aber ich kann mich irren... Ich habe noch nicht viel Erfahrung mit neuronalen Netzen...
Ich brauche einen Vektor von Eingabedaten für das Training, und hier sind die Signale unterbrochen - dann kaufen, dann verkaufen, dann überspringt... und ich weiß nicht, wie man sie ausfüllen, nicht mit Nullen... Ich weiß nicht, wie man sie mit Nullen füllt, es ist nicht klar... Zigzag, meiner Meinung nach, bietet nicht weniger perfekte Eingaben, aber ich kann mich irren... Ich bin noch nicht sehr erfahren in neuronalen Netzen...
Der Anzeiger verfügt über zwei Arten von Signalen, diskret und analog, aus denen Sie wählen können. Füllen Sie die Lücken mit Nullen auf.
Handelt es sich bei dem Bild im ersten Beitrag um das Ausbildungsmuster? Wenn es aus der Stichprobe herausfällt, dann ist es interessant zu sehen, wie das Netz bei so vielen Neuronen alle Eingabedaten auswendig lernen sollte.
Es gibt zwei Arten von Signalen im Indikator: diskrete und analoge. Füllen Sie die Lücken mit Nullen auf.
Handelt es sich bei dem Bild im ersten Beitrag um ein Übungsbeispiel? Wenn die Stichprobe nicht ausreicht, ist es interessant, sich die Trainingsstichprobe anzusehen, denn bei so vielen Neuronen sollte sich das Netz alle Eingabedaten auswendig merken können.
Die Trainingsstichprobe sind die letzten 1000 Balken, oder besser gesagt die ersten, wenn man von der Zeitreihe 0 ausgeht, alles davor ist außerhalb der Stichprobe.
Ich werde es morgen ausprobieren und sehen, was dabei herauskommt. So weit geschraubt die zweite Zickzack, größere, schauen, wie es funktioniert auf 2 Ausgänge. Bislang nichts Außergewöhnliches, funktioniert im Durchschnitt bei Null :)
funktioniert im Durchschnitt bei Null :)
Deshalb wurde Ihnen vorgeschlagen, von Kaufen auf Verkaufen umzusteigen.
Ich habe noch von niemandem gehört, der mit neuronalen Netzen dauerhaft Geld verdient, es ist sehr instabil. Die einfachsten TS auf den muwings - und sie wirken stabiler.
- Freie Handelsapplikationen
- Über 8.000 Signale zum Kopieren
- Wirtschaftsnachrichten für die Lage an den Finanzmärkte
Sie stimmen der Website-Richtlinie und den Nutzungsbedingungen zu.
Im Forum gibt es nur wenige Informationen über fertige Lösungen und die Wirksamkeit neuronaler Netze für den Handel auf dem Markt. Ich schlage vor, hier zu diskutieren und Erfahrungen auszutauschen. Wenn es bereits einen Diskussionsstrang gibt, verlinken Sie ihn bitte.
Ich verwende Klassen von hier, einfache mehrschichtige Perspectron. Ich hoffe, die Klassen zählen richtig, ich verlasse mich auf die Erfahrung des Autors. Habe angefangen zu experimentieren, interessant :)
Im Moment habe ich 11 Indizes am Eingang, der Ausgang ist ein Zickzack, um 1 Takt in die Zukunft verschoben.
Dies sind die Ergebnisse meines 8-monatigen Rasters. Ich trainiere mit 1000 Balken, 10000 Epochen, 70 Neuronen in einer versteckten Schicht. Die Signale werden umgekehrt und rein durch das neuronale Netz, ohne zusätzliche Filter, verarbeitet. 15 min tf.