[WARNUNG GESCHLOSSEN!] Alle Fragen von Neulingen, um das Forum nicht zu überladen. Fachleute, gehen Sie nicht vorbei. Ohne dich kann ich nirgendwo hingehen. - Seite 333

 

Ich werde mich nicht streiten! Wenn Sie es ausprobieren, werden Sie sehen, was falsch ist. Ich schreibe nur für diejenigen, die auf dieses Problem stoßen werden. Es ist zeitlich umgekehrt, also ist auch das Diagramm zeitlich umgekehrt. Ich poste den Text des Indikators. BEREIT. Schauen Sie sich das Diagramm an, mit dem sehr interessante Eingaben erkannt werden können. Ich habe den Eindruck, dass es früher und genauer als das MASD eintritt.

#property indicator_separate_window
#Eigenschaft indicator_buffers 1
#property indicator_color1 Rot

double Buf_0[1000],Bears_array[1000],Bulls_array[1000],Line1[1000],Line2[1000];
int init()
{
SetIndexPuffer(0,Buf_0);
SetIndexStyle(0,DRAW_HISTOGRAM,STYLE_SOLID,2);
Rückkehr;
}
extern double PeriodPower=13;
extern double MA_Period=5;

int start()
{
int i=Bars-IndicatorCounted()-1;
while(i>=0)
{
Bulls_array[i]=iBullsPower(NULL,0,PeriodPower,PRICE_CLOSE,i);
Bears_array[i]=iBearsPower(NULL,0,PeriodPower,PRICE_CLOSE,i);
ArraySetAsSeries(Bears_array,true); // Angewandt zur Synchronisierung der Indizierung in der Funktion iMAOnArray
ArraySetAsSeries(Bulls_array,true);
Zeile1[i]=iMAOnArray(Bären_Array,0,MA_Periode,0,MODE_SMMA,i);
Line2[i]=iMAOnArray(Bulls_array,0,MA_Period,0,MODE_SMMA,i);
Buf_0[i]=(Line2[i]+Line1[i])/Point/10;

i--;
}
Rückkehr;
}


 
Stepan241 писал(а) >>

Ich werde mich nicht streiten! Wenn du es versuchst, wirst du sehen, was falsch ist. Ich schreibe nur für diejenigen, die auf dieses Problem stoßen werden. Es ist zeitlich umgekehrt, also ist auch das Diagramm zeitlich umgekehrt. Ich poste den Text des Indikators. BEREIT. Schauen Sie sich das Diagramm an, mit dem sehr interessante Eingaben erkannt werden können. Ich habe den Eindruck, dass sie früher und genauer als die MASD eintritt.

#property indicator_separate_window
#Eigenschaft indicator_buffers 1
#property indicator_color1 Rot

double Buf_0[1000],Bears_array[1000],Bulls_array[1000],Line1[1000],Line2[1000];
int init()
{
SetIndexPuffer(0,Buf_0);
SetIndexStyle(0,DRAW_HISTOGRAM,STYLE_SOLID,2);
Rückkehr;
}
extern double PeriodPower=13;
extern double MA_Period=5;

int start()
{
int i=Bars-IndicatorCounted()-1;
while(i>=0)
{
Bulls_array[i]=iBullsPower(NULL,0,PeriodPower,PRICE_CLOSE,i);
Bears_array[i]=iBearsPower(NULL,0,PeriodPower,PRICE_CLOSE,i);
ArraySetAsSeries(Bears_array,true); // Angewandt zur Synchronisierung der Indizierung in der Funktion iMAOnArray
ArraySetAsSeries(Bulls_array,true);
Zeile1[i]=iMAOnArray(Bären_Array,0,MA_Periode,0,MODE_SMMA,i);
Line2[i]=iMAOnArray(Bulls_array,0,MA_Period,0,MODE_SMMA,i);
Buf_0[i]=(Line2[i]+Line1[i])/Point/10;

i--;
}
Rückkehr;
}

Man kann versuchen, damit zu spielen, aber man kann es auch richtig machen.

Der Indikator kann bis zu 8 Puffer enthalten. Einige von ihnen können für Zwischenberechnungen verwendet werden.

Wenn die Leistung jedoch nicht kritisch ist, können Sie es auf diese Weise tun.

 
Vinin >> :

Sie können damit herumspielen oder es ganz normal tun.

Der Indikator kann bis zu 8 Puffer enthalten. Einige von ihnen können für Zwischenberechnungen verwendet werden.

Wenn es aber für Sie selbst und die Leistung nicht entscheidend ist, können Sie es so machen.

Der Begriff "normal" ist relativ. Das gilt auch für den Begriff des Rechts. Dies ist eher eine philosophische Frage. Ich habe versucht, den Algorithmus auf eine OPTIMALE Weise zu implementieren. Um einen Indikator in EINEM Zyklus zu erstellen. Meiner Meinung nach ist das die geringste Belastung für die Hardware, während Sie das gleiche Ergebnis erzielen können.

>> Und was die Tatsache betrifft, dass es 8 Puffer gibt, und in Kriegszeiten kann ihre Zahl 54 und ein halbes erreichen, so weiß das jeder Pionier. :-)

 
Stepan241 писал(а) >>

Normal ist relativ. Das gilt auch für den Begriff des Rechts. Dies ist eher eine philosophische Frage. Ich habe versucht, den Algorithmus auf eine OPTIMALE Weise zu implementieren. Damit der Indikator in EINEM Zyklus aufgebaut wird. Meiner Meinung nach belastet es die Hardware am wenigsten, wenn das Ergebnis trotzdem korrekt ist.

Etwa 8 Puffer, und ihre Zahl kann in Kriegszeiten bis zu 54 und eine Hälfte erreichen, jeder Ingenieur weiß das. :-)

Es ist möglich, alles in einer Schleife zu erledigen und eine minimale Anzahl von Puffern zu verwenden, aber das ist eine andere Geschichte.

Jede Operation mit einem Array (nicht mit einem Puffer) benötigt viel Zeit. Daher war es einfacher und schneller, mehrere Schleifen zu machen, als alles in eine einzige zu packen.

Schneller im Sinne der Bedienung des Indikators.

 
Vinin >> :

Es ist möglich, alles in einem Zyklus zu erledigen und eine minimale Anzahl von Puffern zu verwenden, aber das ist ein ganz anderes Thema.

Jede Operation mit einem Array (nicht einem Puffer) dauert sehr lange. Daher war es einfacher und schneller, mehrere Schleifen zu machen, als alles in eine einzige zu packen.

Schneller im Sinne der Leistung des Indikators.

Sag mal, Vinin, hast du versucht, dir deine Idee anzuschauen und zu sehen, was sie anzieht?

 
Vinin >> :

Es ist möglich, alles in einer Schleife zu erledigen und eine minimale Anzahl von Puffern zu verwenden, aber das ist ein ganz anderes Thema.

Jede Operation mit einem Array (nicht einem Puffer) dauert sehr lange. Daher war es einfacher und schneller, mehrere Schleifen zu machen, als alles in eine einzige zu packen.

Schneller im Sinne der Leistung des Indikators.

Lieber Vinin, hast du versucht, deine Idee zu überprüfen und herauszufinden, wie sie funktioniert?

int start()
{
int i, limit=Bars-IndicatorCounted()-1;
for (i=limit;i>=0;i--){
Bears_array[i]=iBearsPower(NULL,0,PeriodPower,PRICE_CLOSE,i);
Bulls_array[i]=iBullsPower(NULL,0,PeriodPower,PRICE_CLOSE,i);
}
for (i=limit;i>=0;i--){
MA_Bears[i]=iMAOnArray(Bears_array,0,MA_Period,0,MODE_EMA,i);
MA_Bulls[i]=iMAOnArray(Bulls_array,100,MA_Period,0,MODE_SMA,i);
}
Rückkehr;
}

Ich verstehe, dass Sie in der ersten Schleife eine Reihe von Bullen und Bären bilden. Im zweiten Zyklus werden diese beiden Felder geglättet. Wenn es Ihnen so gut gefällt, sehen Sie sich einfach das Ergebnis an und Sie werden alles verstehen.



 


Schauen Sie sich die AGRAPHIC GRAPHIC genau an

 
Stepan241 писал(а) >>

Ich habe über diese Art von Indikatorcode im Allgemeinen gesprochen.

Dateien:
test.mq4  2 kb
 
Vergleichen Sie die Geschwindigkeit meiner und Ihrer Version
 

Ich stimme zu. Die Ausgabe ist in Ordnung und alles ist korrekt. Ich musste nur die folgende Ausgabe anzeigen

Buf_0[i]=(Line2[i]+Line1[i])/Point/10;

Dies sollte in einer separaten Schleife geschehen. Ich bevorzuge Ihre Version, weil ich die FOR-Schleife bevorzuge. Ich danke Ihnen für Ihre Hilfe und Aufmerksamkeit.

Grund der Beschwerde: