PPZ-Berechnung - Hilfe zur Verfeinerung - Seite 2

 
Es ist ein bisschen schwer für einen EA, aber es ist eine gute Idee. Vielleicht können wir es leichter machen, aber ich bezweifle, dass es viel für den visuellen Handel als zusätzliche Analyse tun wird.
 
Was die Optimierung betrifft. Meiner Meinung nach sollten Sie das resultierende Array Fr0[j] sortieren und dann darauf tanzen, das Ergebnis wird nur ein Durchgang sein.
 

Dieser Code berücksichtigt keine Balken mit zwei Fraktalen zur gleichen Zeit:


j=0;
for(i = loopbegin; i > Nfirst; i--) {
f0 = -1.0;
f0 = iFractals(NULL,0,MODE_UPPER,i);
if (f0<=0.0 ) f0 = iFractals(NULL,0,MODE_LOWER,i);
wenn (f0>0.0) {
Fr0[j]=f0;
Ind0[j]=i;
j++;
}
}
Nmax = j;


Und hier braucht man nicht alle Fraktale durchzugehen, es ist egal, ob man Fraktal Nr. 1 mit Nr. 2 oder Nr. 2 mit Nr. 1 vergleicht.
Die Lösung lautet folgendermaßen:


for(i = 0; i < Nmax; i++) {
f0 = Fr0[i];
for(j = i+1; j < Nmax; j++) {
f1=Fr0[j];
if(MathAbs(Ind0[i]-Ind0[j])>minBars) {
for(k = j+1; k < Nmax; k++) {
f2 = Fr0[k];
if(MathAbs(Ind0[i]-Ind0[k])>minBars && MathAbs(Ind0[k]-Ind0[j])>minBars) {
for(l = k+1; l < Nmax; l++) {
f3 = Fr0[l];
if (MathAbs(Ind0[i]-Ind0[l])>minBars && MathAbs(Ind0[j]-Ind0[l])>minBars && MathAbs(Ind0[k]-Ind0[l])>minBars) {
p0 = (f0+f1+f2+f3)/4,0;
s0 = (f0-p0)*(f0-p0)+(f1-p0)*(f1-p0)+(f2-p0)*(f2-p0)+(f2-p0)*(f2-p0);
wenn (s0<smin) {
smin=s0;
pmin=p0;
imin=i;
jmin=j;
kmin=k;
lmin=l;
}
}
}
}
}
}
}
}

Und dieser Code sollte in die Funktion eingefügt und 4 Mal verwendet werden, anstatt den Code zu kopieren. Die Fraktale in Fr0 sollten auf Null gesetzt werden, damit sie beim nächsten Durchgang nicht mehr mitmachen.



 

Warum bei jeder Iteration durch Fraktale gehen? Ist es nicht einfacher, es einmal zu tun und es dann später zu analysieren? Außerdem sollte der Vergleich zu einem Dreieck konvergieren, nicht zu einem Quadrat (es macht keinen Sinn, die Fraktale 1 und 2 zweimal zu vergleichen, und dann 2 und 1). Ich habe es ein wenig anders gemacht - der Indikator sucht sequentiell nach Divergenzen ab 0 Pips und darüber, bis er vier Niveaus findet. Ich habe den Abstand zwischen den Ebenen nicht begrenzt:


Dateien:
 
Scriptong писал(а) >>

Warum bei jeder Iteration durch Fraktale gehen? Ist es nicht einfacher, es einmal zu tun und es dann später zu analysieren? Außerdem sollte der Vergleich zu einem Dreieck konvergieren, nicht zu einem Quadrat (es macht keinen Sinn, die Fraktale 1 und 2 zweimal zu vergleichen, und dann 2 und 1). Ich habe es ein wenig anders gemacht - der Indikator sucht sequentiell nach Divergenzen ab 0 Pips und darüber, bis er vier Niveaus findet. Ich habe den Abstand zwischen den Ebenen nicht begrenzt:

Großartig! Die Geschwindigkeit ist völlig anders... :)

Kann ich die Werte der empfangenen Pegel auch in den Puffern des Indikators speichern? Um sie später von Expert Advisor aus bearbeiten zu können.

 

Ich werde selbst einen Experten machen. Ich habe einige Ideen. Aber vielleicht hat jemand eine interessantere Idee? Ich werde einen erstellen und ihn in Code Base veröffentlichen.

 
Scriptong писал(а) >>

Ich werde selbst einen Experten machen. Ich habe einige Ideen. Aber vielleicht hat jemand eine interessantere Idee? Ich werde sie erstellen und in Code Base veröffentlichen.

Sie können versuchen, sie auf diese Weise hinzuzufügen:

if (period == 0) {period = WindowBarsPerChart();}
Und irgendwo auf dem Bildschirm die Anzahl der zu berechnenden Balken anzeigen...

 
mikola2 >>:

if (period == 0) {period = WindowBarsPerChart();}
И выводить где-нибудь на экране количество баров для расчета...

Das habe ich nicht gemeint :)

Ideen zum Expert Advisor. Es liegt auf der Hand, dass der Indikator selbst noch viel mehr zu bieten hat

 
Irgendwelche Ideen, es in eine Funktion zu verwandeln, ich meine die Logik des Truthahns, können Sie das tun?
 
qwerewq >>:
Идеи есть, сделайте его в виде функции, логику индюка имею в виду, сможете?


es ist bereits in Form von Funktionen...