Fragen von Neueinsteigern zu MQL4 und MQL5, Hilfe und Diskussion über Algorithmen und Codes - Seite 1007

 
Alexey Viktorov:

Zeit minus Zeit geteilt durch PeriodSeconds()

daher könnte die Länge beim Übergang von Freitag auf Montag falsch sein (oder wenn es in der Historie fehlende Balken gibt)

es ist besser, die Punktzeit zu lesen und dann die Balken zu definieren

datetime time1=(datetime)ObjectGetInteger(ExtChartID,name,OBJPROP_TIME,0);
datetime time2=(datetime)ObjectGetInteger(ExtChartID,name,OBJPROP_TIME,1);

int bar1=iBarShift(_Symbol,_Period,time1);
int bar2=iBarShift(_Symbol,_Period,time2);
 
Taras Slobodyanik:

daher könnte die Länge beim Übergang von Freitag auf Montag falsch sein (oder wenn es in der Historie fehlende Balken gibt)

es ist besser, die Zeit der Punkte zu lesen und dann die Balken zu identifizieren

Einverstanden. Es hat mich und mein Gehirn nicht gestört. Dann ist es besser, die Anzahl der Balken zwischen den Daten zu nehmen.

int  Bars( 
   string           symbol_name,     // имя символа 
   ENUM_TIMEFRAMES  timeframe,       // период 
   datetime         start_time,      // с какой даты 
   datetime         stop_time        // по какую дату 
   );
 
int start()
{
  if(Check()==false)
      return;  
      
  int TotalOrders;
  double NewPrice, NewLots, NewTP, NewSL;
  /*****************************************************************************/
  /* Здесь часть кода, которая работает при каждом новом тике                  */ 
  /*****************************************************************************/
  TotalOrders = CountOfOrders(); 
     double sprd = Ask-Bid;
     int tot = CountOfOrders2();
     double spred = spred/Point*(tot-1);

  if(tot > 1)PercCloseDown();


Dieser Teil sagt Fehler



Können Sie mir sagen, wie ich den Roboter starten kann?


 
Ivan Butko:

Dieser Teil schreibt einen Fehler

Wie bringe ich den Roboter zum Starten?

Hier wird die Variable deklariert und sofort geteilt:

double spred = spred/Point*(tot-1); 

Der Fehler zeigt, dass der Compiler diese Variable (spred) als nicht deklariert behandelt. Das ist auch nicht gut, weil sie (Variable) nicht initialisiert ist - da sie keineglobale Variable ist, kann sie einen undefinierten Wert haben...

Versuchen Sie, es früher zu deklarieren und ihm einen Wert zuzuweisen
 
Yevhenii Levchenko:

Hier wird eine Variable deklariert, die sofort freigegeben wird:

Der Fehler zeigt, dass der Compiler diese Variable (spred) als nicht deklariert behandelt. Das ist auch nicht gut, denn sie (die Variable) ist nicht initialisiert - da sie keine globale Variable ist, kann es einen undefinierten Wert geben...

Versuchen Sie, ihn früher zu deklarieren und ihm einen Wert zuzuweisen

Eugene, ich danke dir von ganzem Herzen!
Es geht los, danke.

 

Was ist zu tun, wenn in MQL5 ...

if(BarsCalculated(handle) == -1)

... Es ist etwa eine Minute her und das Problem ist das gleiche. Warum so lange?


Fehler 4806 - Angeforderte Daten nicht gefunden ... - ...wie bringe ich meinen EA dazu, sie zu finden?

 
Ivan Butko:
int start()
{
  if(Check()==false)
      return;  
      
  int TotalOrders;
  double NewPrice, NewLots, NewTP, NewSL;
  /*****************************************************************************/
  /* Здесь часть кода, которая работает при каждом новом тике                  */ 
  /*****************************************************************************/
  TotalOrders = CountOfOrders(); 
     double sprd = Ask-Bid;
     int tot = CountOfOrders2();
     double spred = spred/Point*(tot-1);

  if(tot > 1)PercCloseDown();


Dieser Teil sagt Fehler



Können Sie mir sagen, wie ich den Roboter starten kann?


Linie 61, welche Linie ist das?
 

Wie fange ich den "out of memory"-Fehler ab?


Wodurch könnte diese Meldung überhaupt verursacht werden?


Ich habe ein Programm mit etwa 20 Tausend Zeilengeschrieben. Ich habe eine Menge verschiedener Klassen, Arrays und Strukturen.

Ungefähr alle zwei oder drei Tage erscheint die Meldung "Speicherplatz knapp".

Ich weiß nicht, wie ich herausfinden kann, welche Funktion für das Speicherleck verantwortlich ist.

 
Sergey Likho:

Wie fange ich einen "out of memory"-Fehler ab?


Wodurch könnte diese Meldung überhaupt verursacht werden?


Ich habe ein Programm mit etwa 20 Tausend Zeilengeschrieben. Ich habe eine Menge verschiedener Klassen, Arrays und Strukturen.

Ungefähr alle zwei oder drei Tage erscheint die Meldung "Speicherplatz knapp".

Ich weiß nicht, wie ich es abfangen kann, welche Funktion für das Speicherleck verantwortlich ist.

Vergewissern Sie sich, dass jede neue Datei eine eigene Löschfunktion hat.

Das heißt, nur durch sorgfältiges Lesen Ihres Codes. Damit das Lesen leichter fällt und mehr Spaß macht, können Sie es auskommentieren :-)

Es ist auch eine gute Idee, Testfallskripte für jede Klasse zu schreiben und auf diese Weise Lecks innerhalb der Klassen zu überprüfen.

 
Maxim Kuznetsov:

sicherstellen, dass jedes neue Element eine eigene Löschfunktion hat

Das heißt, man muss den Code nur aufmerksam lesen. Damit das Lesen leichter fällt und mehr Spaß macht, können Sie auch kommentieren :-)

Es ist auch eine gute Idee, Testfallskripte für jede Klasse zu schreiben und auf diese Weise Lecks innerhalb der Klassen zu überprüfen.

Neu, löschen werden nicht verwendet. Die Klassenelemente sind zu Beginn definiert und werden von mir nicht neu erstellt.

Meistens arbeite ich mit Arrays.


Was sindTestfallskripte?

Grund der Beschwerde: