Jede Anfängerfrage, um das Forum nicht zu überladen. Fachleute, gehen Sie nicht vorbei. Nirgendwo ohne dich - 6. - Seite 43

 

Helfen Sie mir, eine Funktion zu schreiben, die den maximalen ATR-Wert unter den im Fenster sichtbaren Balken zurückgibt. Ich habe das ganze Internet durchsucht, konnte aber nichts Ähnliches finden.

Ich danke Ihnen,

 
dr.Vasgenich :

Helfen Sie mir, eine Funktion zu schreiben, die den maximalen ATR-Wert unter den im Fenster sichtbaren Balken ermittelt. Ich habe das ganze Internet durchsucht, konnte aber nichts Ähnliches finden.

Ich danke Ihnen,

/

extern int p = 4; // ATR-Periode

//------

int start()

{

int i;

Doppel-M;

while( i < WindowBarsPerChart() - p )

{

double a = iATR( NULL, 0, p, i );

wenn ( m < a )

{

m = a;

}

i++;

}

Alert( " Der maximale ATR-Wert in Pips für die sichtbare Anzahl von Balken ist ", m / Punkt ); //

/////

zurück(0);

}

 

Boeing747 Vielen Dank. Ich hätte hier sofort schreiben sollen.

Die endgültige Variante der Funktion in meiner Version sieht also wie folgt aus

double ATR_Max() {
int i;
Doppel-M;
while( i < WindowBarsPerChart() - p ) {
double a = iATR( NULL, 0, p, i );
wenn ( m < a ) {
m = a;
}
i++;
}
Alert( " Der maximale ATR-Wert für die sichtbare Anzahl von Balken ist - ", m );
zurück(m);
}

 
dr.Vasgenich :

Boeing747 Vielen Dank. Ich hätte es gleich hier schreiben sollen.

Die endgültige Variante der Funktion in meiner Version sieht also so aus

double ATR_Max() {
int i;
Doppel-M;
while( i < WindowBarsPerChart() - p ) {
double a = iATR( NULL, 0, p, i );
wenn ( m < a ) {
m = a;
}
i++;
}
Alert( " Der maximale ATR-Wert für die sichtbare Anzahl von Balken ist - ", m );
zurück(m);
}

Ich muss einen Fehler in while( i < WindowBarsChart() - p ) gemacht haben.

höchstwahrscheinlich berechnet die Funktion iATR( NULL, 0, p, i ); Werte für alle Balken im Diagramm, und Sie können oder sollten vielleicht

korrigiert zu while( i < WindowBarsChart() ). Ich habe noch nie mit iATR() gearbeitet; ich sollte es einmal ausprobieren.

Sie können Ihre Funktion auch ohne die Funktion iATR() schreiben, sozusagen in ihrer reinen Form.

 
Boeing747 :

Ich muss einen Fehler in while( i < WindowBarsChart() - p ) gemacht haben.

Höchstwahrscheinlich berechnet die Funktion iATR( NULL, 0, p, i ); die Werte für alle Balken im Diagramm.

korrigiert zu while( i < WindowBarsChart() ). Ich habe noch nie mit iATR() gearbeitet; ich sollte es einmal ausprobieren.

Im Grunde kann ich Ihre Funktion auch ohne iATR() schreiben, sozusagen in Reinform.


Ich dachte jetzt auch, dass der Zeitraum nichts damit zu tun hat. Es wäre wahrscheinlich besser, sie zu entfernen.

Kann man das nicht über ein Array machen? Sammeln Sie in einem Array die Werte aller APR im Fenster und finden Sie dann das Maximum mit dieser Funktion - ArrayMaximum Ich fürchte, meine Kenntnisse reichen nicht aus.




 
dr.Vasgenich :

Ich habe mir überlegt, dass der Zeitraum nichts damit zu tun hat. Es ist wahrscheinlich besser, sie zu entfernen.

Kann dies nicht über ein Array geschehen? Sammeln Sie in einem Array die Werte aller APR im Fenster und finden Sie dann das Maximum mit dieser Funktion - ArrayMaximum Ich fürchte, meine Kenntnisse reichen dafür nicht aus.




Ja, Sie können durch iATR() blättern; in der Schleife, um Arrays zu bewerten und dann mit ArrayMaximum, um den maximalen Wert der ATR zu extrahieren. Aber immer noch buttrig, wie es immer noch notwendig ist, um den Zyklus zu verwenden, um Arrays wie in der ersten Option zu bewerten . aber in der ersten Version des maximalen wurde in den Prozess der Scrollen der Schleife, die viel wirtschaftlicher als mit der Option ArrayMaximum berechnet. Sie brauchen nicht viel darüber zu wissen, Sie können detaillierte Informationen über ArrayMaximum in einem Lehrbuch oder in einem Nachschlagewerk finden.
 
Boeing747 :
Ja, es ist möglich, iATR(); in einer Schleife zu scrollen, um damit Arrays zu bewerten und dann mit ArrayMaximum den Maximalwert ATR zu extrahieren. Aber trotzdem stellt sich heraus, dass es notwendig ist, speziell für diesen Zweck eine Schleife zu verwenden, um Arrays zu bewerten, wie in der ersten Variante . aber in der ersten Variante wurde das Maximum während des Scrollens einer Schleife berechnet, die viel sparsamer ist als mit der Variante ArrayMaximum. Sie brauchen keine speziellen Kenntnisse, Sie können detaillierte Beschreibungen über ArrayMaximum in einem Lehrbuch oder Nachschlagewerk finden.

Danke, ich werde morgen versuchen, das zu überprüfen. Noch eine Frage: Wie kann ich in dieser Funktion Tester-Ressourcen sparen, so dass der Maximalwert nach dem Erscheinen eines neuen Balkens berechnet wird und nicht bei jedem Tick?
 
dr.Vasgenich :

Danke, ich werde morgen versuchen, den Vorgang zu überprüfen. Noch eine Frage: Wie kann ich die Ressourcen des Testers in dieser Funktion speichern, so dass der Maximalwert berechnet wird, wenn ein neuer Balken erscheint und nicht bei jedem Tick?

Für den Anfang können Sie Folgendes versuchen

auf einer globalen Ebene erklären t

und über die Schleife schreiben

wenn ( t != Time[0] )

{

t = Zeit[0];

// Schleife, in der ATRmax berechnet wird

}

auf diese Weise wird die Berechnung in der Schleife einmal bei der Eröffnung eines neuen Taktes durchgeführt. vielleicht gibt es noch andere, cleverere Varianten...

 

Boeing747, dr.Vasgenich, Leute, könnt ihr nicht die "SRC"-Taste benutzen oder ist das für euch in Ordnung?

 
Zhunko :

Boeing747, dr.Vasgenich, Leute, könnt ihr nicht die "SRC"-Taste benutzen oder ist das für euch in Ordnung?

Ich vergesse immer wieder, die "SRC"-Taste zu benutzen. Das muss eine Gewohnheit sein. Mit 60 ist es schwer, seine Meinung zu ändern. Ich werde morgen versuchen, Ihre Taste zu benutzen.