Fehler, Irrtümer, Fragen - Seite 950

 
fyords:

Bitte teilen Sie uns mit, ob jemand schon einmal auf so etwas gestoßen ist.

Es gibt einen Code:

In Echtzeit im Terminal funktioniert es: Aber im Testgerät ergibt der gleiche Code ein anderes Ergebnis:

Ist die Größe des Arrays unabhängig davon zu ermitteln, welches Ereignis eingetreten ist?

 
tol64:

Und die Größe des Arrays sollte unabhängig davon ermittelt werden, welches Ereignis eingetreten ist?

Nun, ich habe zuerst den Indikator geschrieben und dann alles auf ein einfaches Beispiel reduziert.
Es stellt sich heraus, ja - auf jeden Fall, und die Protokolle, die gegeben sind, werden jede Zeile wiederholt.

Ändern Sie den Code wie folgt:

//+------------------------------------------------------------------+
double date[];
//+------------------------------------------------------------------+
void OnInit()
{
   ArrayResize(date,3);
   Print(__FUNCTION__," ArraySize(date)=",ArraySize(date));
}
//+------------------------------------------------------------------+
void OnChartEvent(const int id,
                  const long &lparam,
                  const double &dparam,
                  const string &sparam)
{
   Print(__FUNCTION__," ArraySize(date)=",ArraySize(date));
}
//+------------------------------------------------------------------+

hat es noch mehr Spaß gemacht. Ergebnis Terminal:

FD      0       12:57:59        test (EURGBP.m,M5)      OnInit ArraySize(date)=3
JO      0       12:57:59        test (EURGBP.m,M5)      OnChartEvent ArraySize(date)=3
DG      0       12:57:59        test (EURGBP.m,M5)      OnChartEvent ArraySize(date)=3

Tester:

JM      0       12:58:09        test (EURGBP.m,M15)     2013.01.01 00:00:00   OnInit ArraySize(date)=3
FE      0       12:58:09        test (EURGBP.m,M15)     2013.01.01 00:00:00   OnChartEvent ArraySize(date)=0
FR      0       12:58:09        test (EURGBP.m,M15)     2013.01.01 00:00:00   OnChartEvent ArraySize(date)=0
 
fyords:

Nun, ich habe zuerst den Indikator geschrieben und dann alles auf ein einfaches Beispiel reduziert.
Es stellt sich heraus, dass ja - auf jeden Fall, mit den Protokollen gegeben, die jede Zeile wiederholen.

...

Ich habe es nicht geschafft, es zu reproduzieren. Ich teste diesen Code:

//+------------------------------------------------------------------+
//|                                                     !indTEST.mq5 |
//|                        Copyright 2010, MetaQuotes Software Corp. |
//|                                              https://www.mql5.com |
//+------------------------------------------------------------------+
#property copyright "Copyright 2010, MetaQuotes Software Corp."
#property link      "https://www.mql5.com"
#property version   "1.00"
//---
#property indicator_chart_window
#property indicator_buffers 1 
#property indicator_plots   1
#property indicator_type1   DRAW_NONE
//---
double date[];
//---
//+------------------------------------------------------------------+
//| ИНИЦИАЛИЗАЦИЯ                                                    |
//+------------------------------------------------------------------+
void OnInit()
  {
   ArrayResize(date,3);
  }
//+------------------------------------------------------------------+
//| ДЕИНИЦИАЛИЗАЦИЯ                                                  |
//+------------------------------------------------------------------+
void OnDeinit(const int reason)
  {
  }
//+------------------------------------------------------------------+
//| Custom indicator iteration function                              |
//+------------------------------------------------------------------+
int OnCalculate(const int rates_total,
                const int prev_calculated,
                const int begin,
                const double &price[])
  {
   return(rates_total);
  }
//+------------------------------------------------------------------+
//| ChartEvent function                                              |
//+------------------------------------------------------------------+
void OnChartEvent(const int id,
                  const long &lparam,
                  const double &dparam,
                  const string &sparam)
  {
   Print("ArraySize(date)=",ArraySize(date));
  }
//+------------------------------------------------------------------+

//---

Der Indikator wurde im Visualisierungsmodusgetestet.

 
tol64:

...

Der Indikator wurde im Visualisierungsmodusgetestet.

Ähnlich ist es mit dem Herausfinden.
 
fyords:
Ich bin ebenfalls dabei, es herauszufinden.
Soweit mir bekannt ist, werden Zeitplaninteraktionsereignisse im Tester derzeit ignoriert. Benutzerdefinierte Ereignisse können behandelt werden.
Документация по MQL5: Стандартные константы, перечисления и структуры / Константы графиков / Типы событий графика
Документация по MQL5: Стандартные константы, перечисления и структуры / Константы графиков / Типы событий графика
  • www.mql5.com
Стандартные константы, перечисления и структуры / Константы графиков / Типы событий графика - Документация по MQL5
 
tol64:
Soweit ich weiß, werden Ereignisse, die sich auf die Interaktion mit dem Diagramm beziehen, derzeit im Tester ignoriert. Benutzerdefinierte Ereignisse können behandelt werden.

Es ist mir eigentlich egal, welche, Hauptsache sie kommen :)

Interessant ist auch, dass Ihr Code 0 Ergebnisse liefert, d.h. der Fehler bleibt bestehen.
PS. Win7 x64 + UAC und nicht portabel.

 
fyords:

Es ist mir eigentlich egal, welche, Hauptsache sie kommen :)

Interessant ist auch, dass Ihr Code mir das Ergebnis 0 liefert, d.h. der Fehler bleibt bestehen.
PS. Win7 x64 + UAC und nicht portabel.

Mit diesem Code erhalte ich überhaupt keine Ereignisse. Bei welchen Ereignissen wird die Meldung im Prüfgerät ausgegeben? Ich habe mich sogar gewundert, deshalb wollte ich es wissen. )) Ich brauche einen Code, um es zu reproduzieren.

 
tol64:

Mit diesem Code erhalte ich überhaupt keine Ereignisse. Bei welchen Ereignissen wird die Meldung im Prüfgerät ausgegeben? Ich habe mich sogar gewundert, deshalb habe ich gefragt. )) Ich brauche Code, um es zu reproduzieren.

Ich verstehe es auch nicht - es funktioniert nicht mehr )).
Seltsam, denn das Ereignis CHARTEVENT_CHART_CHANGE sollte im Tester auf jeden Fall kommen. Oder?
 

fyords:
... 

Seltsam, denn das CHARTEVENT_CHART_CHANGE-Ereignis sollte im Prüfprogramm ohnehin auftreten. Richtig?
In Echtzeit wird dieses Ereignis erzeugt, wenn das Diagramm gescrollt wird und die Größe von Fenstern/Unterfenstern geändert wird. In der Testversion funktioniert dieses Ereignis noch nicht (und vielleicht werden sie es auch gar nicht tun). Von allen Ereignissen können vorerst nur Benutzerereignisse aus anderen Programmen verfolgt werden.
 

Ich habe den Standard ExpertMACD Expert Advisor im Strategietester getestet, der zusammen mit MT5 ausgeliefert wird, er erzeugt Fehler:

2013.03.30 19:18:09 Core 2 genetic pass (0, 15) getestet mit Fehler "OnInit failed" in 46 ms

2013.03.30 19:18:08 Core 1 genetic pass (0, 13) getestet mit Fehler "OnInit failed" in 32 ms

2013.03.30 19:18:07 Core 2 genetic pass (0, 5) getestet mit Fehler "OnInit failed" in 0 ms

Ich habe durch Suchen herausgefunden, dass der Fehler im Modul liegt: "SignalMACD" bei der Optimierung der schnellen und langsamen MACD-Perioden (beim Ankreuzen der Kästchen in den Parametern des Strategietesters).

Ist jemand auf ein solches Problem gestoßen und wie kann man damit umgehen? (Wenn es nur ein Häkchen gibt, funktioniert es irgendwie, aber es gibt Fehler, sobald man zwei Häkchen überprüft)

Grund der Beschwerde: