Erros, bugs, perguntas - página 1429

 
Vladimir Pastushak:

Sobrecarga de funções

...e depois o quê?
 
Joo Zepper:
...e depois o quê?

Declarou dois métodos idênticos, o que não é permitido; em caso de sobrecarga, os métodos devem responder um ao outro com um conjunto de parâmetros internos.

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

Declarou dois métodos idênticos, o que não é permitido; em caso de sobrecarga, os métodos devem responder um ao outro com um conjunto de parâmetros internos.

Estou ciente da sobrecarga. Mas não era isso que eu queria dizer - o compilador ME não repara no erro, ao contrário do compilador da consola.
 
Joo Zepper:
Estou ciente da sobrecarga. Mas não era isso que eu queria dizer - o compilador ME não repara no erro, ao contrário do compilador de consolas.
Sim, isso é verdade, também reparei nisso.
 
Joo Zepper:
Estou ciente da sobrecarga. Mas não era isso que eu queria dizer - o compilador ME não repara no erro, ao contrário do compilador da consola.
Não repara no erro até declarar o corpo deste método. Ou seja, não tem qualquer efeito na execução do programa.
 
Ilya Malev:
Não detecta um erro até que declare o corpo dessa função. Ou seja, não tem qualquer efeito na execução do programa.
No entanto, isto não significa que não haja necessidade de corrigir o comportamento do compilador de EM.
 
Joo Zepper:
No entanto, isto não significa que não haja necessidade de corrigir o comportamento do compilador de EM.
De facto, o compilador aceita para pré-fetching - repará-lo, será emitido um erro.
 

Como pode isto ser?

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

E um "indicador" instalado na janela de teste da 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);
  }
//+------------------------------------------------------------------+

O resultado do trabalho no ecrã:

TickTest01

O resultado do trabalho em toros (fragmento):

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

Os valores exibidos na EA e no indicador são diferentes.

Parece que a EA obtém dados do testador e o indicador obtém dados actuais do instrumento em que a EA é testada.

Lançamento 902.

Arquivos anexados:
 
Yury Kirillov:

Como pode isto ser?

Existe uma "EA":

E um "indicador" instalado na janela de teste da EA:

O resultado está no ecrã:

O resultado do trabalho em toros (fragmento):

Os valores exibidos na EA e no indicador são diferentes.

Parece que a EA obtém dados do testador e o indicador obtém os dados actuais do instrumento em que a EA foi testada.

Lançamento 902.

Obrigado pelo seu feedback! Fixo.
 

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

Obrigado pela sua resposta!

Já foi corrigido?

Ou está no próximo lançamento?