Fehler, Irrtümer, Fragen - Seite 3034

 

Auf den Seiten für freiberufliche Tätigkeiten ist heute ein Fehler aufgetreten:

Chrome-Browser. Womit hat das zu tun?

 
Aleksey Vyazmikin:

Verstehe ich das richtig, wenn ein EA, der auf M1 arbeitet, einen Indikator auf M1 (oder einem anderen TF?) verwendet, der Daten aus dem oberen TF bezieht, dann kann er beim ersten Tick eines neuen Balkens auf keinen Fall den aktuellen Wert zurückgeben, weil es n Ticks dauert, bis der obere TF berechnet ist?


Eigentlich ist OnTick nicht mit OnCalculate durch dasselbe Symbol synchronisiert. Theoretisch kann OnTick zu spät kommen und bei seinem Start werden alle Indizes aller TFs berechnet?

 
Slava:

Aus dem anderen Zeitraum werden die Daten entnommen, die gerade zur Verfügung stehen. Das heißt, bei der Ausgabe werden alle Daten perfekt synchronisiert.

Warum kann der Indikator sie dann nicht auf die erste Anfrage hin erhalten?

Wie kann ich einen normalen Multi-TF (und idealerweise - Multi-Character) Indikator, ohne einen Timer zu machen?

 
Andrey Khatimlianskii:

Warum kann der Indikator sie dann nicht bei der ersten Anfrage abrufen?

Wie macht man einen normalen Multi-TF (und idealerweise Multi-Character) Indikator, ohne einen Timer zu verwenden?

+

Ich befürchte, dass Verzögerungen beim Signalempfang durch den EA bei der derzeitigen Architektur leider unvermeidlich sein werden.

 
Hallo

Bei der Optimierung mit Mql Cloud tritt ein Fehler auf:

2021.05.31 18:24:57.348 MQL5 Cloud Europe pass 34 tested with error "critical runtime error 0 in OnInit function (error code 0, module Experts\Advisors\123 expert.ex5, file 65535, line 1, col 1)" in 0:00:00.001 (PR 274)


Was könnte das Problem sein?

Beim Optimieren ohne Mql Cloud funktioniert alles. Das Problem trat am 29.05. auf, davor war alles in Ordnung.

 
Marat Bayburin:
Hallo

Bei der Optimierung mit Mql Cloud tritt ein Fehler auf:

2021.05.31 18:24:57.348 MQL5 Cloud Europe pass 34 tested with error "critical runtime error 0 in OnInit function (error code 0, module Experts\Advisors\123 expert.ex5, file 65535, line 1, col 1)" in 0:00:00.001 (PR 274)


Was könnte das Problem sein?

Beim Optimieren ohne Mql Cloud funktioniert alles. Das Problem begann am 29.05. Davor war alles in Ordnung.

Ich denke, das Problem liegt beim Compiler-Build. Ich erhalte die gleichen Fehler.
D.h. wir haben mit einem neuen Build kompiliert, aber die Agenten sind noch auf dem alten, .... Etwa so.
 
Marat Baiburin:
Also einfach auf die Aktualisierung durch die Agenten warten?

Wenn es sich um Fehler handelt, die auf unterschiedliche Builds von Agenten und Ihrem Desktop-PC zurückzuführen sind, dann warten Sie bitte. Meine Agenten sind zum Beispiel immer noch 2949, nicht auf 2950 aktualisiert.

 
Andrey Khatimlianskii:

Warum kann der Indikator sie dann nicht bei der ersten Anfrage abrufen?

Wie macht man einen normalen Multi-TF (und idealerweise Multi-Character) Indikator ohne einen Timer zu verwenden?

Bei der ersten Anfrage kann der Indikator die Daten von seinem Symbol nicht erhalten, aber für einen anderen Zeitrahmen nur aus einem Grund - die gewünschte Zeitreihe wurde nicht aufgebaut oder wurde bereits nach einiger Zeit zerstört, als es keine Anfragen gab.

Nach einer erfolglosen Anfrage senden Sie einfach einen Befehl an Ihr Diagramm, um es zu aktualisieren, und beenden OnCalculate sofort. Es ist garantiert, dass OnCalculate aufgerufen wird und die Zeitreihe zu diesem Zeitpunkt fertig ist

Документация по MQL5: Операции с графиками / ChartSetSymbolPeriod
Документация по MQL5: Операции с графиками / ChartSetSymbolPeriod
  • www.mql5.com
ChartSetSymbolPeriod - Операции с графиками - Справочник MQL5 - Справочник по языку алгоритмического/автоматического трейдинга для MetaTrader 5
 
Slava:

Bei der ersten Anfrage kann der Indikator nur aus einem Grund keine Daten von seinem Symbol, sondern von einem anderen Zeitrahmen erhalten - die benötigte Zeitreihe ist noch nicht aufgebaut oder wurde bereits nach einiger Zeit zerstört, als es keine Anfragen gab.

Nach einer erfolglosen Anfrage senden Sie einfach einen Befehl an Ihr Diagramm, um es zu aktualisieren, und beenden OnCalculate sofort.
Es ist garantiert, dass OnCalculate aufgerufen wird und dass die benötigten Zeitreihen zu diesem Zeitpunkt vorbereitet sind.


Beim ersten Aufruf des Indikators wird die Berechnung in einer Schleife über alle Daten durchgeführt.

//Расчёт количества просчитываемых баров
int limit = rates_total-prev_calculated;
   
//Если первый запуск
if(limit > 1)
{
   //какая нибудь инициализация
   
}

//================================================================
for(int i=limit; i>=0 && !IsStopped(); i--)
{
   ...  

Wenn in dieser Schleife eine Anfrage fehlgeschlagen ist, was soll dann zurückgegeben werden?
Limit+1, bei dem sie nicht erfolgreich war?
Oder was? Ich verstehe diesen Punkt nicht.

 
Roman:


Bitte sagen Sie mir, dass beim ersten Aufruf des Indikators die Berechnung in einer Schleife über alle Daten läuft.

Und wenn eine Anfrage in dieser Schleife fehlgeschlagen ist, was soll dann zurückgegeben werden?
Limit+1, bei dem sie nicht erfolgreich war?
Oder was? Ich verstehe diesen Punkt nicht.

Können Sie das nicht selbst überprüfen?