Erreurs, bugs, questions - page 1429

 
Joo Zepper:
...et puis quoi ?

Vous avez déclaré deux méthodes identiques, ce qui n'est pas autorisé ; en cas de surcharge, les méthodes doivent se répondre avec un ensemble de paramètres internes.

class C_A
{
  void B(int a);
  void B(double a);
};
 
Vladimir Pastushak:

Vous avez déclaré deux méthodes identiques, ce qui n'est pas autorisé ; dans le cas de la surcharge, les méthodes doivent se répondre l'une l'autre avec un ensemble de paramètres internes.

Je suis conscient de la surcharge. Mais ce n'est pas ce que je voulais dire - le compilateur ME ne remarque pas l'erreur, contrairement au compilateur de la console.
 
Joo Zepper:
Je suis conscient de la surcharge. Mais ce n'est pas ce que je voulais dire - le compilateur ME ne remarque pas l'erreur, contrairement au compilateur console.
Oui, c'est vrai, je l'ai aussi remarqué.
 
Joo Zepper:
Je suis conscient de la surcharge. Mais ce n'est pas ce que je voulais dire - le compilateur ME ne remarque pas l'erreur, contrairement au compilateur de la console.
Il ne remarque pas l'erreur jusqu'à ce que vous déclariez le corps de cette méthode. C'est-à-dire qu'il n'a aucun effet sur l'exécution du programme.
 
Ilya Malev:
Il ne détecte pas d'erreur tant que vous ne déclarez pas le corps de cette fonction. C'est-à-dire qu'il n'affecte en aucune façon l'exécution des programmes.
Toutefois, cela ne signifie pas qu'il n'est pas nécessaire de corriger le comportement du compilateur ME.
 
Joo Zepper:
Toutefois, cela ne signifie pas qu'il n'est pas nécessaire de corriger le comportement du compilateur ME.
En effet, le compilateur accepte la préfabrication - si elle est incorrecte, une erreur sera émise.
 

Comment est-ce possible ?

Il existe un "EA" :

//+------------------------------------------------------------------+
//|                                               Exp_TickTest01.mq4 |
//|                        Copyright 2015, MetaQuotes Software Corp. |
//|                                             https://www.mql5.com |
//+------------------------------------------------------------------+
#property copyright "Copyright 2015, MetaQuotes Software Corp."
#property link      "https://www.mql5.com"
#property version   "1.00"
#property strict
//+------------------------------------------------------------------+
//| Expert initialization function                                   |
//+------------------------------------------------------------------+
int OnInit()
  {
//---
   
//---
   return(INIT_SUCCEEDED);
  }
//+------------------------------------------------------------------+
//| Expert deinitialization function                                 |
//+------------------------------------------------------------------+
void OnDeinit(const int reason)
  {
//---
   
  }
//+------------------------------------------------------------------+
//| Expert tick function                                             |
//+------------------------------------------------------------------+
void OnTick()
  {
//---
   Comment("Exp Ask>>",Ask);
   Print("Exp Ask>>",Ask);
  }
//+------------------------------------------------------------------+

Et un "indicateur" installé dans la fenêtre de test de l'EA :

//+------------------------------------------------------------------+
//|                                               Ind_TickTest01.mq4 |
//|                        Copyright 2015, MetaQuotes Software Corp. |
//|                                             https://www.mql5.com |
//+------------------------------------------------------------------+
#property copyright "Copyright 2015, MetaQuotes Software Corp."
#property link      "https://www.mql5.com"
#property version   "1.00"
#property strict
#property indicator_separate_window
//+------------------------------------------------------------------+
//| Custom indicator initialization function                         |
//+------------------------------------------------------------------+
int OnInit()
  {
//--- indicator buffers mapping
   
//---
   return(INIT_SUCCEEDED);
  }
//+------------------------------------------------------------------+
//| Custom indicator iteration function                              |
//+------------------------------------------------------------------+
int OnCalculate(const int rates_total,
                const int prev_calculated,
                const datetime &time[],
                const double &open[],
                const double &high[],
                const double &low[],
                const double &close[],
                const long &tick_volume[],
                const long &volume[],
                const int &spread[])
  {
//---
   IndicatorShortName("Ind Ask>>"+DoubleToString(Ask,_Digits));
   Print("Ind Ask>>"+DoubleToString(Ask,_Digits));   
//--- return value of prev_calculated for next call
   return(rates_total);
  }
//+------------------------------------------------------------------+

Le résultat du travail sur l'écran :

TickTest01

Le résultat du travail en rondins (fragment) :

2015.11.12 10:07:50.801 2015.11.11 02:17  Ind_TickTest01 EURUSD,M1: Ind Ask>>1.07496
2015.11.12 10:07:50.801 2015.11.11 02:17  Exp_TickTest01 EURUSD,M1: Exp Ask>>1.07429
2015.11.12 10:07:50.737 2015.11.11 02:17  Ind_TickTest01 EURUSD,M1: Ind Ask>>1.07496
2015.11.12 10:07:50.737 2015.11.11 02:17  Exp_TickTest01 EURUSD,M1: Exp Ask>>1.0743
2015.11.12 10:07:50.673 2015.11.11 02:16  Ind_TickTest01 EURUSD,M1: Ind Ask>>1.07496
2015.11.12 10:07:50.673 2015.11.11 02:16  Exp_TickTest01 EURUSD,M1: Exp Ask>>1.0743
2015.11.12 10:07:50.609 2015.11.11 02:16  Ind_TickTest01 EURUSD,M1: Ind Ask>>1.07496
2015.11.12 10:07:50.609 2015.11.11 02:16  Exp_TickTest01 EURUSD,M1: Exp Ask>>1.07429
2015.11.12 10:07:50.545 2015.11.11 02:16  Ind_TickTest01 EURUSD,M1: Ind Ask>>1.07496
2015.11.12 10:07:50.545 2015.11.11 02:16  Exp_TickTest01 EURUSD,M1: Exp Ask>>1.07428
2015.11.12 10:07:50.481 2015.11.11 02:16  Ind_TickTest01 EURUSD,M1: Ind Ask>>1.07496
2015.11.12 10:07:50.481 2015.11.11 02:16  Exp_TickTest01 EURUSD,M1: Exp Ask>>1.07427

Les valeurs affichées dans l'EA et l'indicateur sont différentes.

Il semble que l'EA prenne les données du testeur et que l'indicateur prenne les données actuelles de l'instrument sur lequel l'EA est testé.

Version 902.

Dossiers :
 
Yury Kirillov:

Comment est-ce possible ?

Il y a un "EA" :

Et un "indicateur" installé dans la fenêtre de test de l'EA :

Le résultat s'affiche à l'écran :

Le résultat du travail en rondins (fragment) :

Les valeurs affichées dans l'EA et l'indicateur sont différentes.

Il semble que l'EA prenne les données du testeur et que l'indicateur prenne les données actuelles de l'instrument sur lequel l'EA a été testé.

Version 902.

Merci pour vos commentaires ! Fixe.
 

Alexander:
Спасибо за обращение! Исправлено.

Merci pour votre réponse !

A-t-il déjà été réparé ?

Ou est-ce dans la prochaine version ?

 
Yury Kirillov:

Merci pour votre réponse !

A-t-il déjà été réparé ?

Ou est-ce dans la prochaine version ?

Dans la prochaine version
Raison: