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

 
Was, wenn Sie den höchsten Wert in einer bestimmten Anzahl von letzten Balken finden müssen?
 

Es handelt sich also um ein statisches Array

//--- создадим массив 
   double array[]; 
   int size=772; 
   ArrayResize(array,size); 
   //---  заполним его значениями индикатора 
   for(int i=0;i<size;i++) 
     { 
      array[i]=iATR(NULL,0,14,i);
     }
   //--- найдем позицию максимального элемента в массиве 
   int max_position=ArrayMaximum(array,772,0); 
   //--- теперь получим само максимальное значение в массиве 
   double max=array[max_position];
 

Also, in der Tat schreibe ich direkt - autodidaktisch, nicht weit im Verständnis der Feinheiten der Wahrnehmung des Programmierers Wesen (Und das Thema heißt: Jede Frage eines Anfängers...). Ich gebe ein Beispiel, das nicht vorgeworfen werden, dass alle wollen kostenlos zu bekommen, ohne Anstrengung, und auf der anderen Seite versuchen, die Aufgabe klar zu definieren (nicht zu sagen, dass wir nicht lesen können Köpfe der anderen).

Noch einmal, wie man den maximalen Wert des Indikators für die gegebene Menge der letzten Balken aus dem gegebenen Code oder vielleicht durch die Gnade des Verständnisses in der persönlichen Erklärung der Kodierung zu bekommen?

Mit aufrichtigem Respekt, Achtung und Verständnis dafür, dass Programmierer Menschen aus einer anderen Welt sind und eine solch heikle Erklärung nicht die Tatsache ist, dass alles oben Genannte noch einmal umrissen werden muss, vielleicht mehr als einmal, um das gewünschte Ergebnis zu erzielen.

//--- Array erstellen double array[]; int size=772; ArrayResize(array,size); //---mit Indikatorwerten füllen for(int i=0;i<size;i++) { array[i]=iATR(NULL,0,14,i);
} //--- Finde die Position des maximalen Elements im Array int max_position=ArrayMaximum(array,772,0); //--- Jetzt wollen wir den maximalen Wert im Array selbst ermitteln double max=array[max_position];
 

Ich habe alles gesucht, was ich konnte, aber ich konnte keine Lösung finden, letzte Hoffnung auf euch Jungs :)

Die allgemeine Aufgabe bestand darin, einen Indikator zu erstellen, der, wenn er auf ein Diagramm geworfen wird, d.h. er funktioniert bereits, wir drücken die angegebene Taste und die Trendlinie (Datum1=Datum2, Preis1=Preis2) erscheint unter der aktuellen Cursorposition

Das Problem entstand, als ichif(id==CHARTEVENT_MOUSE_MOVE) nicht dazu bringen konnte, die Koordinaten des Zeigers anif(id==CHARTEVENT_KEYDOWN) zu übergeben, und der Code unten will sie auch nicht übergeben. Ich weiß nicht, wie man das macht, aber es gibt auch eine andere Möglichkeit, dieses Problem zu lösen. Vielleicht weiß jemand, wenn man den Indikator auf den Chart wirft, erscheint das Anfangsmenü.

#property strict
#define  VK_D             0x44 


int OnInit()
  {
//---
   ChartSetInteger(0,CHART_EVENT_MOUSE_MOVE,true);

   return(INIT_SUCCEEDED);
  }

//+------------------------------------------------------------------+
void OnChartEvent(const int id,
                  const long &lparam,
                  const double &dparam,
                  const string &sparam)
{    
 
if(id==CHARTEVENT_MOUSE_MOVE)

{     int      x     =(int)lparam;
      int      y     =(int)dparam; 
      datetime dt    =0; 
      double   price =0; 
      int      window=0;
      ChartXYToTimePrice(0,x,y,window,dt,price); 


  if(id==CHARTEVENT_KEYDOWN)
{ 
  switch(int(lparam)) 
{ case VK_D:
   
   ObjectCreate("Trend Line",OBJ_TREND,0,dt,price,dt,price);
   ObjectSetInteger(0,"Trend Line",OBJPROP_SELECTED,true); 
}   
} 
}    
}
 
Craft:

Also, in der Tat schreibe ich direkt - autodidaktisch, nicht weit im Verständnis der Feinheiten der Wahrnehmung des Programmierers Wesen (Und das Thema heißt: Jede Frage eines Anfängers...). Ich gebe ein Beispiel, das nicht vorgeworfen werden, dass alle wollen kostenlos zu bekommen, ohne Anstrengung, und auf der anderen Seite versuchen, die Aufgabe klar zu definieren (nicht zu sagen, dass wir nicht lesen können Köpfe der anderen).

Noch einmal, wie man den maximalen Wert des Indikators für die gegebene Menge der letzten Balken aus dem gegebenen Code oder vielleicht durch die Gnade des Verständnisses in der persönlichen Erklärung der Kodierung zu bekommen?

Mit aufrichtigem Respekt, Ehrfurcht und Verständnis dafür, dass Programmierer Menschen aus einer anderen Welt sind und eine solch heikle Erklärung nicht die Tatsache ist, dass all das oben Genannte noch einmal umrissen werden muss, vielleicht mehr als einmal, um das gewünschte Ergebnis zu erzielen.


Also kehren Sie die Schleife um und das war's.

Von rates_total-1 bis rates_total minus die gewünschte_Anzahl_der_Bälle. Wenn in EA, von Bars()-1 bis Bars() minus...

 
K_i_r_i_t_o:

Ich habe so viel gesucht, wie ich konnte, aber ich konnte keine Lösung finden. Ich habe keine Hoffnung für euch :)

Die allgemeine Aufgabe bestand darin, einen Indikator zu erstellen, der, wenn er auf ein Diagramm geworfen wird, d.h. er funktioniert bereits, wir drücken die angegebene Taste und die Trendlinie (Datum1=Datum2, Preis1=Preis2) erscheint unter der aktuellen Cursorposition

Das Problem entstand, wenn ich nicht bekommen kann,if(id==CHARTEVENT_MOUSE_MOVE) zu übergeben Koordinaten des Zeigers zuif(id==CHARTEVENT_KEYDOWN), und der Code unten auch nicht wollen, um sie zu übergeben, ich weiß nicht, wie es zu implementieren, gibt es eine andere Option, aber es ist auch ein Problem, wenn jemand weiß, wenn Sie den Indikator auf dem Diagramm werfen das anfängliche Menü erscheint, so kann ich es irgendwie sperren, um den Indikator auf dem Diagramm sofort zeigen?

Achten Sie auf die variable Sichtbarkeit.

Ich habe mich nicht eingehend damit befasst, aber mir ist aufgefallen, dass die Variablen innerhalb der Bedingung deklariert werden. Dies sollte nicht der Fall sein.

 
AlexeyVik:

Achten Sie auf die Sichtbarkeit der Variablen.

Ich habe mich nicht allzu sehr damit befasst, aber mir ist aufgefallen, dass die Variablen innerhalb der Bedingung deklariert werden. Dies sollte nicht der Fall sein.

Das ist also das Problem, wie man Variablen von einem if zu einem anderen übergibt, viele Varianten ausprobiert, will nicht funktionieren...
 
K_i_r_i_t_o:
Das ist also das Problem, wie kann man Variablen von einem if zu einem anderen weitergeben, ich habe viele Varianten ausprobiert, es will nicht funktionieren...

Sie können ihn hier lesen.

Wie viele Varianten? Variablen auf globaler Ebene sind in jedem Teil des Programms sichtbar, dies ist ein Extremfall.

 
AlexeyVik:

Lesen Sie es hier.

Was sind die vielen Varianten? Variablen auf globaler Ebene sind in jedem Teil des Programms sichtbar, dies ist ein Extremfall.

Ich habe alles gelesen, das ist das Problem, ich kann die Variablenwerte nicht in eine andere Funktion übertragen, und es gibt keine Möglichkeit, sie in einer Funktion zu sammeln, ich bin ratlos, aber was ist mit dem Indikatormenü?
 
Craft:

Guten Tag, meine Herren.

Frage zu Arrays. Wie findet man den größten Wert des Indikators auf der gewünschten Anzahl der letzten Balken des Diagramms, und nicht auf dem ersten?

Es wurde schon oft diskutiert (ich kann es nicht finden), aber ich habe selten Arrays verwendet.

Könnten Sie beraten, wie das Problem mit der Indizierung zu lösen, vielleicht durch die Verwendung von ArrayMaximum(array) in eine elegantere Weise?

Wenn es irgendwo einen elementaren Fehler gibt, tut es mir leid, ich bin Autodidakt.

Der Fluss der Fehlerkorrekturen in den MQL4-Builds reißt nie ab, undje einfacher der Code ist, desto zuverlässiger ist er .

Amax=-10000;

iAmax=-1;

for(int i=0;i<size;i++) {

if (array[i]>Amax) {iAmax=i; Amax=array[i];}

}

if (iAmax<0) ...etwas ist falsch

Grund der Beschwerde: