Fragen von Anfängern in MQL5. Fachleute kommen nicht vorbei. - Seite 7

 
Artyom Trishkin:

DRAW_NONE == 0

DRAW_LINE == 1

Sie haben also irgendwo etwas anderes. Es soll auch bei Ihnen funktionieren.

Ich kann Ihnen noch nicht sagen, was es ist, aber es funktioniert nicht immer.
 
Kommentare, die sich nicht auf dieses Thema beziehen, wurden nach "Fragen von MQL4 MT4 MetaTrader 4 Anfängern" verschoben.
 
Artyom Trishkin:

Nein, das müssen Sie nicht. Alles wird einmal bei Limit>1 durchgeführt. Dies ist der erste Lauf und das Laden der Historie. Und wenn Sie die Glättungsperiode_sm=10 haben, dann sollte das Limit in diesem Fall um 10 niedriger sein. Dementsprechend ist es:

if(limit>1)
  {
   limit=rates_total-period_sm-1;
   ArrayInitialize(Buffer,InitValue);
  }

InitValue - Wert zur Initialisierung des Puffers - 0 oder EMPTY_VALUE - je nach Bedarf. Oder -100500 ...

wie Sie es in Ihrem Beispiel vorschlagen - das ist nicht der richtige Weg - oder, wenn Sie Sie nicht verstehen, geben Sie eine detaillierte Erklärung.

Die Entscheidung darüber, wie Sie "Dies ist der erste Lauf und die Ladegeschichte" nennen, wird von prev_calculated getroffen

Limit (es ist unklar, was das Limit in Ihrem Fall ist) - wenn es die Anzahl der Balken ist, ab der die Neuberechnung beginnt - dann kann das Limit hier mehr als 1 sein, z.B. 5 Minuten ohne Verbindung - beim Erscheinen der Verbindung auf M1 ist das Limit=5, und es besteht keine Notwendigkeit, den Indikator von Anfang an neu zu berechnen

können Sie in den Standard-Terminal-Beispielen sehen, wie man alles benutzt.

Beispiele aus dem Indikator "Bären":

MQL4 (Nummerierung der Takte vom Anfang bis zum Ende):

   int limit=rates_total-prev_calculated;
//---
   if(rates_total<=InpBearsPeriod)
      return(0);
//---
   if(prev_calculated>0)
      limit++;
   for(int i=0; i<limit; i++)

MQL5 (Nummerierung der Takte vom Ende zum Anfang):

   if(prev_calculated<InpBearsPeriod)
      limit=InpBearsPeriod;
   else limit=prev_calculated-1;
//--- the main loop of calculations
   for(i=limit;i<rates_total && !IsStopped();i++)
 

Hallo zusammen. Früher hatte ich ein Demokonto bei MT-5. Nachdem mein Windows neu installiert wurde, habe ich mein Passwort für die Anmeldung bei MT-5 verloren. Jetzt habe ich es im Webterminal registriert

Mein Demokonto MT-5. Alles in Ordnung. Ich habe ein neues Login und ein neues Passwort für das reguläre MT-5-Home-Terminal eingegeben. Alles funktioniert, nur beim Eröffnen einer neuen Bestellung F9,

in einem neuen Auftragsfenster - die Schaltflächen Kaufen und Verkaufen sind nicht aktiv. Ich kann keine Bestellung aufgeben. Bitte, was soll ich tun?

Es tut mir leid, aber ich muss fragen.

Ich habe keine Aufträge. Danke.

 
Shara1:

Hallo zusammen. Früher hatte ich ein Demokonto bei MT-5. Ich habe mein Passwort für die Anmeldung bei MT-5 verloren, nachdem ich mein Windows neu installiert habe. Jetzt habe ich es im Webterminal registriert

Mein Demokonto MT-5. Alles in Ordnung. Ich habe ein neues Login und ein neues Passwort für das reguläre MT-5-Home-Terminal eingegeben. Alles funktioniert, nur beim Eröffnen einer neuen Bestellung F9,

in einem neuen Auftragsfenster - die Schaltflächen Kaufen und Verkaufen sind nicht aktiv. Ich kann keine Bestellung aufgeben. Bitte, was soll ich tun?

Es tut mir leid, aber ich muss fragen.

Ich danke Ihnen.

Ich habe das Problem verstanden. Ich hatte 0,00 im neuen Auftragsfenster F9 und das Volumen war 0,00. Ich habe 0,01 eingegeben und es hat funktioniert.

 

Hallo, bitte beraten, gibt es diese Zeichenfolgen in einigen Expert Advisors.

  double highest=DBL_MIN,lowest=DBL_MAX;

Frage: Wofür stehen die Variablen, die mit den Konstanten DBL_MIN und DBL_MAX gleichgesetzt werden?

 
refounder83:

Hallo, bitte beraten, gibt es diese Zeichenfolgen in einigen Expert Advisors.

Meine Frage ist - wofür sind die Variablen, die mit diesen Konstanten DBL_MIN und DBL_MAX gleichgesetzt werden?

Um sie mit realen Daten zu vergleichen, die offensichtlich kleiner als DBL_MAX und offensichtlich größer als DBL_MIN sind.

Zum Beispiel:

double x=DBL_MIN;
int total=ArraySize(array);
for(int i=0; i<total; i++)
  {
   double y=array[i];  
   if(y>x) x=y;
  }
Print("x=",DoubleToString(x,Digits()));
 
Danke, ich verstehe.)
 

Wird dieser Vorgang durchgeführt, um die Serverzeit in Sekunden umzurechnen?

datetime time=TimeTradeServer()+60*60*24;
   
  
 
refounder83:

Wird dieser Vorgang durchgeführt, um die Serverzeit in Sekunden umzurechnen?

Dies ist "Serverzeit" plus ein Tag (60 Sekunden * 60 Minuten * 24 Stunden)

Sie können PeriodSeconds() verwenden

Print("PeriodSeconds(PERIOD_D1)=",PeriodSeconds(PERIOD_D1),", PeriodSeconds(PERIOD_H1)*24=",PeriodSeconds(PERIOD_H1)*24,", 60*60*24=",60*60*24);
Grund der Beschwerde: