Errori, bug, domande - pagina 1429

 
Vladimir Pastushak:

Sovraccarico di funzioni

...e poi?
 
Joo Zepper:
...e poi?

Avete dichiarato due metodi identici, il che non è permesso; in caso di sovraccarico, i metodi devono rispondere l'uno all'altro con un insieme di parametri interni.

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

Avete dichiarato due metodi identici, il che non è permesso; nel caso dell'overloading, i metodi devono rispondere l'uno all'altro con un insieme di parametri interni.

Sono consapevole del sovraccarico. Ma non è quello che intendevo - il compilatore ME non nota l'errore, a differenza del compilatore della console.
 
Joo Zepper:
Sono consapevole del sovraccarico. Ma non è quello che intendevo - il compilatore ME non nota l'errore, a differenza del compilatore della console.
Sì, è vero, l'ho notato anch'io.
 
Joo Zepper:
Sono consapevole del sovraccarico. Ma non è quello che intendevo - il compilatore ME non nota l'errore, a differenza del compilatore della console.
Non nota l'errore finché non si dichiara il corpo di questo metodo. Cioè, non ha alcun effetto sull'esecuzione del programma.
 
Ilya Malev:
Non rileva un errore finché non si dichiara il corpo di quella funzione. Cioè, non ha alcun effetto sull'esecuzione del programma.
Tuttavia, questo non significa che non ci sia bisogno di correggere il comportamento del compilatore ME.
 
Joo Zepper:
Tuttavia, questo non significa che non ci sia bisogno di correggere il comportamento del compilatore ME.
In effetti, il compilatore accetta per il prefetching - correggetelo, verrà emesso un errore.
 

Come può essere?

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

E un "indicatore" installato nella finestra di test dell'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);
  }
//+------------------------------------------------------------------+

Il risultato del lavoro sullo schermo:

TickTest01

Il risultato del lavoro in tronchi (frammento):

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

I valori visualizzati nell'EA e nell'indicatore sono diversi.

Sembra che l'EA prenda i dati dal tester e l'indicatore prenda i dati attuali dello strumento su cui l'EA viene testato.

Rilascio 902.

 
Yury Kirillov:

Come può essere?

C'è un "EA":

E un "indicatore" installato nella finestra di test dell'EA:

Il risultato è sullo schermo:

Il risultato del lavoro in tronchi (frammento):

I valori visualizzati nell'EA e nell'indicatore sono diversi.

Sembra che l'EA prenda i dati dal tester e l'indicatore prenda i dati attuali dello strumento su cui l'EA è stato testato.

Rilascio 902.

Grazie per il vostro feedback! Fisso.
 

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

Grazie per la vostra risposta!

È già stato riparato?

O è nella prossima versione?