MetaEditor build 1463 - page 14

 
Renat Fatkhullin:

Nulle part encore.

ArrayPrint - similaire.
 
Le problème est le suivant .
void OrderSend( int ) {}  // no problem
void Print( MqlTick& ) {} // 'Print' - override system function

Par exemple, la classe externe ": :" ne permet pas la surcharge, mais toute classe interne le permet.

C'est pourquoi nous devons béquiller la restriction

class PRINTCLASS
{
public:  
  template <typename T>
  static void MyPrint( const T &Value )
  {
    T Array[1];
    
    Array[0] = Value;
    
    ::ArrayPrint(Array);
  }
  
  template <typename T>
  static void MyPrint( const T Value )
  {
    ::Print(Value);
  }
};

#define Print(A) PRINTCLASS::MyPrint(A)

void OnStart()
{
  MqlTick Tick;
  
  SymbolInfoTick(_Symbol, Tick);

  Print(Tick);
  
  int i = 5;
  
  Print(i);
}
ZS ArrayPrint n'est pas mis en avant sur le site.
 
La version 1467 est maintenant disponible. Quels sont les changements ?
 
 

J'ai trouvé un problème avec mon indicateur dans le testeur. Depuis la version 1463, le testeur se bloque lors du test de l'indicateur, presque immédiatement après le démarrage. C'est le testeur qui se bloque, pas l'indicateur. En effet, lors de la compilation avec l'ancien ou le nouveau compilateur, le problème demeure, mais dans l'ancien testeur, tout est testé normalement.

L'endroit dans le code, qui conduit à un hang, n'a pas pu être trouvé. J'ai essayé de faire des commentaires dans différentes lignes de code, mais ça se bloque toujours à différents endroits. En général, une sorte de testeur d'erreurs internes.

 
Alexey Navoykov:

J'ai trouvé un problème avec mon indicateur dans le testeur. Depuis la version 1463, le testeur se bloque lors du test de l'indicateur, presque immédiatement après le démarrage. C'est le testeur qui se bloque, pas l'indicateur. En effet, lors de la compilation avec l'ancien ou le nouveau compilateur, le problème demeure, mais dans l'ancien testeur, tout est testé normalement.

L'endroit dans le code, qui conduit à un hang, n'a pas pu être trouvé. J'ai essayé de faire des commentaires dans différentes lignes de code, mais ça se bloque toujours à différents endroits. Donc, une sorte de bug interne dans le testeur.

Donc, ça bloque toujours ou dans le testeur, vous avez juste réglé la vitesse maximale du test ?

Ajouté : Je n'ai pas rencontré ce problème auparavant, il est donc très souhaitable de revoir votre code.

 
Alexey Navoykov:

L'endroit du code qui cause le blocage n'a pas pu être trouvé.

Réglez-le pour enregistrer en permanence la totalité de l'écran dans la vidéo. Lorsque vous rencontrez un bug, arrêtez l'enregistrement et coupez tout ce qui n'est pas nécessaire dans la vidéo.
 
Vladimir Karputov:

Est-ce qu'il se bloque, ou est-ce que vous l'avez réglé sur la vitesse maximale du testeur ?

Ajouté : Je n'ai pas rencontré ce problème auparavant, il est donc très souhaitable de revoir votre code.

Il se fige à n'importe quelle vitesse. La fenêtre StrategyTestVisualization ne répond pas. Malheureusement, je ne peux pas vous montrer tout le code, c'est un produit commercial.

Il ne dépend pas non plus du mode de test et du délai.

 
Alexey Navoykov:

Il se fige à n'importe quelle vitesse. La fenêtre StrategyTestVisualization ne répond pas aux demandes. Malheureusement, il n'est pas possible de montrer le code entier, c'est un produit commercial.

La seule façon de montrer le code est d'utiliser ServiceDesk. Cependant, il y a un soupçon de boucle infinie dans l'indicateur...
 
fxsaber:
2016.11.10 11:07:42.764 Test (EURUSD,M1)                         [time]   [bid]   [ask]  [last] [volume]    [time_msc] [flags]
2016.11.10 11:07:42.764 Test (EURUSD,M1)        [0] 2016.11.10 11:10:11 1.09207 1.09217 1.09207   500000 1478776211595       2

La seule chose qui manque est un ArrayToString. Ensuite, la sortie pourrait être modifiée. Par exemple, time_msc et flags.

Veuillez changer MqlTick en
struct MqlTick
  {
   datetime     time;          // Время последнего обновления цен
   double       bid;           // Текущая цена Bid
   double       ask;           // Текущая цена Ask
   double       last;          // Текущая цена последней сделки (Last)
   ulong        volume;        // Объем для текущей цены Last
   datetime_msc time_msc;      // Время последнего обновления цен в миллисекундах
   uint         flags          // Флаги тиков
  };
C'est-à-dire introduire un nouveau type datetime_msc.