Fehler, Irrtümer, Fragen - Seite 1400

 

Nach dem Upgrade auf den neuen Build(1178) erhalte ich beim Laden des EA im Chart folgenden Fehler im Log beim Entladen des Programms aus dem Chart:

2015.10.14 21:04:50.571 TestLibrary (EURUSD,M30)        
2015.10.14 21:04:50.571 TestLibrary (EURUSD,M30)        00: 0x00000000028E1F21
2015.10.14 21:04:50.571 TestLibrary (EURUSD,M30)        
2015.10.14 21:04:50.571 TestLibrary (EURUSD,M30)                      00000000028 E1F37 C6467000          mov        byte [rsi+0x70], 0x0
2015.10.14 21:04:50.571 TestLibrary (EURUSD,M30)                      00000000028 E1F30 C686AD02000000    mov        byte [rsi+0x2ad], 0x0
2015.10.14 21:04:50.571 TestLibrary (EURUSD,M30)        
2015.10.14 21:04:50.571 TestLibrary (EURUSD,M30)                      00000000028 E1F2E 7 CA0              jl         0x28e1ed0
2015.10.14 21:04:50.571 TestLibrary (EURUSD,M30)                      00000000028 E1F2C 39 C3              cmp        ebx, eax
2015.10.14 21:04:50.571 TestLibrary (EURUSD,M30)                      00000000028 E1F26 8 B868B000000      mov        eax, [rsi+0x8b]
2015.10.14 21:04:50.571 TestLibrary (EURUSD,M30)                      00000000028 E1F24 FFC3              inc        ebx
2015.10.14 21:04:50.571 TestLibrary (EURUSD,M30)           crash -->  00000000028 E1F21 FF5728            call       qword near [rdi+0x28]
2015.10.14 21:04:50.571 TestLibrary (EURUSD,M30)        Access violation at 0x00000000028E1F21 read to 0x0000000D5D01E928 in 'D:\#MetaTrader\MetaTrader 5 Test\MQL5\Experts\#TestLibrary\Article02\TestLibrary.ex5'

//---

Soweit ich verstanden habe, tritt diese Situation auf, wenn versucht wird, grafische Objekte mit der MethodeCChartObject::Timeframes(OBJ_NO_PERIODS) auszublenden.

P.S. Obwohl nein, das Problem ist höchstwahrscheinlich auf einen anderen Grund zurückzuführen. Versucht zu lokalisieren, wird in servicedesk fortgesetzt, öffnet eine Anwendung.

 
transcendreamer:
der Autor ist sich dessen bereits bewusst und denkt intensiv darüber nach, wie es dazu gekommen sein könnte

der Autor hat sich Gedanken gemacht und diesen Punkt behoben, er wird in der nächsten Aktualisierung erscheinen

der Fehler war ein nicht erfasstes Merkmal des Maklers

 
1178 bauen. Kompilierungsfehler:'B' - Vorlage stimmt nicht überein
class A { template<typename T> A( T ) {} };
class B;
class B {};
Vorher war alles in Ordnung
 
A100:
1178 bauen. Kompilierungsfehler:'B' - Vorlagenfehlanpassung
aber vorher war alles in Ordnung
Danke, wir werden uns das ansehen.
 
Warum wird das OnTimer-Ereignis bei Indikatoren, die über iCustom aufgerufen werden, nicht ausgelöst?
 
Ilya Malev:
Warum wird das OnTimer-Ereignis in Indikatoren, die über iCustom aufgerufen werden, nicht ausgelöst?
Architektonisch gesehen ist das Timer-Ereignis ein Diagramm-Ereignis, daher können Indikatoren es in diesem Fall nicht empfangen.
 
Anton:
Architektonisch gesehen ist das Timer-Ereignis ein Diagramm-Ereignis, daher können Indikatoren es in diesem Fall nicht empfangen.
Wie kann ich programmatisch dafür sorgen, dass der über iCustom aufgerufene Indikator gezeichnet wird (d.h. einen OnCalculate-Aufruf auslösen), wenn keine Ticks vorhanden sind (z.B. am Wochenende)?
 
Wenn dieser Indikator wiederum andere Indikatoren aufruft, dann werden beim ersten automatischen Aufruf von OnCalculate direkt nach dem Verlassen von OnInit die Daten dieser Indikatoren nicht berechnet, und außerdem kann der Indikator nicht auf ihre Berechnung "warten", ohne OnCalculate zu verlassen. Und es wird keinen nächsten Aufruf von OnCalculate geben, bis zum Ende des Wochenendes, wenn die ersten Ticks beginnen. In diesem Fall funktionieren weder OnTimer noch OnChartEvent in diesem Indikator, um ein neues Bild aufzurufen, wenn die Daten empfangen werden. Am Ende, der einzige Weg, den ich sehen kann - durch DLL zu "Refresh" in der Tabelle aus dem Kontextmenü des Fensters aufrufen - ich glaube nicht, dass die Entwickler diese Methode für die normale Arbeit der Indikatoren in MT5 geplant. Andernfalls muss der Benutzer diese Taste so lange drücken, bis der Indikator angezeigt wird, was ihn kaum erfreuen wird.
 
Ilya Malev:
Wenn dieser Indikator wiederum andere Indikatoren aufruft, dann werden beim ersten automatischen Aufruf von OnCalculate direkt nach dem Verlassen von OnInit die Daten dieser Indikatoren nicht berechnet, und außerdem kann der Indikator nicht auf ihre Berechnung "warten", ohne OnCalculate zu verlassen. Und es wird keinen nächsten Aufruf von OnCalculate geben, bis zum Ende des Wochenendes, wenn die ersten Ticks beginnen. In diesem Fall funktionieren weder OnTimer noch OnChartEvent in diesem Indikator, um ein neues Bild aufzurufen, wenn die Daten empfangen werden. Am Ende, der einzige Weg, den ich sehen kann - durch DLL zu "Refresh" in der Tabelle aus dem Kontextmenü des Fensters aufrufen - ich glaube nicht, dass die Entwickler diese Methode für die normale Arbeit der Indikatoren in MT5 geplant. Andernfalls muss der Benutzer vor dem Diagramm warten, bis der Indikator gerendert wird, was ihn kaum glücklich machen wird.

Wenn für MT4:

dies nicht funktionieren wird? https://www.mql5.com/ru/code/11678

ChartRefresh
ChartRefresh
  • Stimmen: 11
  • 2014.08.13
  • Alexandr Bryzgalov
  • www.mql5.com
Скрипт для принудительно обновления текущего графика.
 
Alexandr Bryzgalov:
funktioniert es nicht so? https://www.mql5.com/ru/code/11678

Dieses Skript ist für MetaTrader 4 :)

In MT4 werden alle Daten vom Terminal berechnet, bevor sie in mql4-Programmen empfangen werden.

Grund der Beschwerde: