Errori, bug, domande - pagina 950

 
fyords:

Per favore avvisate se qualcuno ha incontrato qualcosa di simile.

C'è un codice:

In tempo reale nel terminale funziona: ma nel tester lo stesso codice dà un risultato diverso:

La dimensione dell'array deve essere ottenuta indipendentemente da quale evento si è verificato?

 
tol64:

E la dimensione dell'array dovrebbe essere ottenuta indipendentemente da quale evento si è verificato?

Bene, prima ho scritto l'indicatore e poi ho ridotto tutto ad un semplice esempio.
Risulta di sì - su qualsiasi evento, e i registri che sono dati sono ripetuti ogni riga.

Cambiando il codice con il seguente:

//+------------------------------------------------------------------+
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));
}
//+------------------------------------------------------------------+

è diventato ancora più divertente. Risultato terminale:

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:

Bene, prima ho scritto l'indicatore e poi ho ridotto tutto ad un semplice esempio.
Risulta di sì - in ogni caso, con i registri dati ripetendo ogni riga.

...

Non sono riuscito a riprodurlo. Sto testando questo codice:

//+------------------------------------------------------------------+
//|                                                     !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));
  }
//+------------------------------------------------------------------+

//---

Testato l'indicatore in modalità di visualizzazione.

 
tol64:

...

Testato l'indicatore in modalità di visualizzazione.

Allo stesso modo, capire.
 
fyords:
Allo stesso modo, lo sto capendo.
Per quanto ne so, gli eventi di interazione del programma sono attualmente ignorati nel tester. Gli eventi personalizzati possono essere gestiti.
Документация по MQL5: Стандартные константы, перечисления и структуры / Константы графиков / Типы событий графика
Документация по MQL5: Стандартные константы, перечисления и структуры / Константы графиков / Типы событий графика
  • www.mql5.com
Стандартные константы, перечисления и структуры / Константы графиков / Типы событий графика - Документация по MQL5
 
tol64:
Per quanto ne so, gli eventi legati all'interazione con il grafico sono ignorati al momento nel tester. Gli eventi personalizzati possono essere gestiti.

Non mi interessa molto quali, basta che vengano :)

Interessante è anche il fatto che il tuo codice dà 0 risultati, cioè l'errore persiste.
PS. Win7 x64 + UAC e non portatile.

 
fyords:

Non mi interessa molto quali, basta che vengano :)

Interessante è anche che il tuo codice mi dà il risultato 0, cioè l'errore persiste.
PS. Win7 x64 + UAC e non portatile.

Non ricevo nessun evento con questo codice. Quindi a quali eventi viene stampato il messaggio nel tester? Me lo sono anche chiesto, per questo volevo sapere. )) Ho bisogno di un codice per riprodurlo.

 
tol64:

Non ricevo nessun evento con questo codice. Quindi a quali eventi viene stampato il messaggio nel tester? Me lo sono anche chiesto, ecco perché ho chiesto. )) Ho bisogno di codice per riprodurlo.

Non lo capisco nemmeno io - non funziona più )).
Strano, perché l'evento CHARTEVENT_CHART_CHANGE dovrebbe arrivare comunque nel tester. Giusto?
 

fyords:
... 

Strano, perché l'evento CHARTEVENT_CHART_CHANGE dovrebbe arrivare comunque nel tester. Giusto?
In tempo reale, questo evento viene generato quando il grafico viene fatto scorrere e le finestre/sottofinestre vengono ridimensionate. Nel tester, questo evento non funziona ancora (e forse non lo faranno affatto). Di tutti gli eventi, solo gli eventi utente di altri programmi possono essere tracciati per ora.
 

Ho testato l'Expert Advisor standard di ExpertMACD nel tester di strategie, che viene fornito insieme a MT5, genera errori:

2013.03.30 19:18:09 Core 2 genetic pass (0, 15) testato con errore "OnInit failed" in 46 ms

2013.03.30 19:18:08 Core 1 genetic pass (0, 13) testato con errore "OnInit failed" in 32 ms

2013.03.30 19:18:07 Core 2 genetic pass (0, 5) testato con errore "OnInit failed" in 0 ms

Ho scoperto cercando che l'errore è nel modulo: "SignalMACD" quando si ottimizzano i periodi Fast e Slow MACD (quando si spuntano le caselle nei parametri del tester della strategia).

Qualcuno ha incontrato un tale problema e come affrontarlo? (Quando c'è solo una spunta funziona in qualche modo, ma ci sono errori non appena si controllano due spunte)