Erreurs, bugs, questions - page 950

 
tol64:

Et la taille du tableau doit être obtenue indépendamment de l'événement qui s'est produit ?

J'ai d'abord écrit l'indicateur, puis j'ai tout réduit à un simple exemple.
Il s'avère que oui - sur n'importe quel événement, et les journaux qui sont donnés sont répétés à chaque ligne.

En changeant le code par le suivant :

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

c'est devenu encore plus amusant. Résultat 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

Testeur :

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:

J'ai d'abord écrit l'indicateur, puis j'ai tout réduit à un simple exemple.
Il s'avère que oui - en tout cas, avec les journaux donnés répétant chaque ligne.

...

Je n'ai pas réussi à le reproduire. Je teste ce 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));
  }
//+------------------------------------------------------------------+

//---

Testé l'indicateur en mode visualisation.

 
tol64:

...

Testé l'indicateur en mode visualisation.

Dans le même ordre d'idée.
 
fyords:
De même, je suis en train de le découvrir.
Pour autant que je sache, les événements d'interaction avec les horaires sont actuellement ignorés dans le testeur. Les événements personnalisés peuvent être gérés.
Документация по MQL5: Стандартные константы, перечисления и структуры / Константы графиков / Типы событий графика
Документация по MQL5: Стандартные константы, перечисления и структуры / Константы графиков / Типы событий графика
  • www.mql5.com
Стандартные константы, перечисления и структуры / Константы графиков / Типы событий графика - Документация по MQL5
 
tol64:
Pour autant que je sache, les événements liés à l'interaction avec le graphique sont ignorés pour le moment dans le testeur. Les événements personnalisés peuvent être gérés.

Je ne me soucie pas vraiment de savoir lesquels, du moment qu'ils viennent :)

Il est également intéressant de noter que votre code donne un résultat nul, c'est-à-dire que l'erreur persiste.
PS. Win7 x64 + UAC et non portable.

 
fyords:

Je ne me soucie pas vraiment de savoir lesquels, du moment qu'ils viennent :)

Il est également intéressant de noter que votre code me donne le résultat 0, c'est-à-dire que l'erreur persiste.
PS. Win7 x64 + UAC et non portable.

Je n'obtiens aucun événement avec ce code. À quels événements le message est-il imprimé dans le testeur ? Je me suis même demandé, c'est pour ça que je voulais savoir. )) J'ai besoin d'un code pour le reproduire.

 
tol64:

Je n'obtiens aucun événement avec ce code. À quels événements le message est-il imprimé dans le testeur ? Je me suis même demandé, c'est pourquoi j'ai demandé. )) J'ai besoin d'un code pour le reproduire.

Je ne le comprends pas non plus - il ne fonctionne plus ;)).
C'est étrange, car l'événement CHARTEVENT_CHART_CHANGE devrait arriver de toute façon dans le testeur. N'est-ce pas ?
 

fyords:
... 

C'est bizarre, car l'événement CHARTEVENT_CHART_CHANGE devrait arriver de toute façon dans le testeur. N'est-ce pas ?
En temps réel, cet événement est généré lorsque le graphique défile et que les fenêtres/sous-fenêtres sont redimensionnées. Dans le testeur, cet événement ne fonctionne pas encore (et peut-être ne le feront-ils pas du tout). De tous les événements, seuls les événements utilisateur provenant d'autres programmes peuvent être surveillés pour le moment.
 

J'ai testé le conseiller expert standard ExpertMACD dans le testeur de stratégie, qui est livré avec MT5, il génère des erreurs :

2013.03.30 19:18:09 Core 2 genetic pass (0, 15) testé avec l'erreur "OnInit failed" en 46 ms

2013.03.30 19:18:08 Core 1 genetic pass (0, 13) testé avec l'erreur "OnInit failed" en 32 ms

2013.03.30 19:18:07 Core 2 genetic pass (0, 5) testé avec l'erreur "OnInit failed" en 0 ms

J'ai découvert en cherchant que l'erreur se trouve dans le module : "SignalMACD" lors de l'optimisation des périodes MACD rapide et lente (en cochant les cases dans les paramètres du testeur de stratégie).

Quelqu'un a-t-il rencontré un tel problème et comment y faire face ? (Lorsqu'il n'y a qu'un seul tic, cela fonctionne tant bien que mal, mais il y a des erreurs dès que l'on vérifie deux tics).

 
Est-il possible d'écrire une fonction avec un nombre variable de paramètres dans MQL5 ? Par exemple, comme dans StringConcatenate(...) ou Print(...) ?