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

 
Artyom Trishkin #:

Leute, egal wie ihr es anstellen wollt, wenn ihr euch nicht an den Wert des Schleifenindexes bei der letzten Überprüfung erinnert, dann habt ihr eine Schleife, die durch die gesamte verfügbare Historie läuft. Und je mehr davon, desto länger die Schleife.

nicht sicher.

Ich habe 2 andere EAs mit ähnlichem Design der Überprüfung der Rentabilität und beide von ihnen passieren die gesamte Geschichte in den Tester innerhalb von 15-20 min.

 
законопослушный гражданин #:

Ich bin nicht sicher.

Ich habe 2 andere EAs mit dem gleichen Design der Losprüfung und sie beide passieren die gesamte Geschichte in der Tester in 15-20 Minuten

Nun, es liegt an Ihnen. Ich werde mich nicht streiten.

 
MakarFX #:

Ändern Sie die Reihenfolge der Aufhebung

ähnlich

 
законопослушный гражданин #:

Ja, jedes Paar.

Ich verwende M15 für AUD/USD.

Ich hatte das gleiche Problem mit Ihrem Indikator (im Anhang)

Ich habe durch die Eliminationsmethode herausgefunden, dass diese Sache den Prozess verlangsamt:

Zwischenspeichern der Ergebnisse (in Variablen). Und der Cache sollte aktualisiert werden, wenn sich die Liste der Aufträge geändert hat. Und wenn sich nichts geändert hat, werden einfach die Werte aus dem Cache zurückgegeben.

 
Artyom Trishkin #:

Leute, egal wie ihr es anstellen wollt, wenn ihr euch nicht an den Wert des Schleifenindexes bei der letzten Überprüfung erinnert, dann habt ihr eine Schleife, die durch die gesamte verfügbare Historie läuft. Und je mehr es sind, desto länger dauert die Schleife.

Sie sollten immer damit rechnen, dass es zu einem Stromausfall kommt und so weiter.

Ein EA aus der Historie sollte jederzeit konfiguriert und ausgeführt werden können.

 
Volodymyr Zubov #:

Man muss immer an Stromausfälle denken und so weiter...

Der Berater aus der Geschichte sollte jederzeit konfiguriert sein und funktionieren.

Es gibt einen VPS, der die Lichter am Leuchten hält.

 
Ja, Sie brauchen keine lokale Variable, um die Reihenfolge zu finden
 

Ich verstehe ungefähr, warum es Probleme gibt.

Nun möchte ich Folgendes tun:

bereinigen void OnTick

void OnTick()
{
// Получим значение индикатора
   dMA = iMA(Symbol(), 0,PeriodMA, MovingShift, MODE_SMA, PRICE_CLOSE, 0); // MODE_SMA - простое усреднение , значение 0. PRICE_CLOSE- цена закрытия, значение 0.

// Если нет открытых ордеров, то входим в условие
   if(CountOrders()==0)
   {
  
// Если появился сигнал на покупку, то откроем ордер на покупку
      if(bSignalBuy() == true)
         vOrderOpenBuy();

// Если появился сигнал на продажу, то откроем ордер на продажу
      if(bSignalSell() == true)
         vOrderOpenSell();
   }
}

das Signal, damit es so aussieht:

bool bSignalBuy()
  {
   if (openPrice > Open[1] && openPrice < Close[1]) //Open[1] и Close[1]- цены открытия и закрытия каждого бара текущего графика.
   
  return(true);
   
  return(false);
  }
//+-----------------------------------------------------------------------------------------------+
//|                                                             Функция поиска сигнала на продажу |
//+-----------------------------------------------------------------------------------------------+
bool bSignalSell()
  {
   if(openPrice< Open[1] && openPrice > Close[1])

   return(true);

   return(false);
  }

woopenPrice versucht, es auf diese Weise auszudrücken, aber es gibt einen Fehler aus:

möglicher Datenverlust aufgrund von Typumwandlung

Verwende ich die Funktion void richtig?

  void openPrice()
  {
  int OP=0;
  
  if (GetLotSize()>LotControl) OP = dMA + Deviation * _Point;
  else OP = dMA;
  }
 

Eine Linie folgt dem Mauszeiger nach dem Drücken einer Taste durch Zeichnen und Löschen

void OnChartEvent(const int id, const long &lparam, const double &dparam, const string &sparam)
  {    
    if(ObjectGetInteger(0,"button_bs",OBJPROP_STATE)){
      int      x     =(int)lparam;
      int      y     =(int)dparam;
      datetime dt    =0;
      double   price =0;
      int      window=0;
     
      if(id == CHARTEVENT_MOUSE_MOVE){
        if(ChartXYToTimePrice(0,x,y,window,dt,price)){
            ObjectDelete(0,"H Line");
            ObjectCreate(0,"H Line",OBJ_HLINE,window,dt,price);
            ChartRedraw(0);
        }
      }
    }
    else{
      ObjectDelete(0,"H Line");
    }
  }

Vielleicht gibt es einen anderen Weg? Der Prozessorkühler fängt an, laut zu werden :)

 
Volodymyr Zubov #:

Man muss immer an Stromausfälle denken und so weiter...

Ein Berater aus der Vergangenheit sollte jederzeit konfiguriert und einsatzbereit sein.

Das sollte es auch. Wie wird also verhindert, dass der Schleifenindex nach einem Neustart durch die Geschichte geht?