Errores, fallos, preguntas - página 1429

 
Vladimir Pastushak:

Sobrecarga de funciones

...¿y luego qué?
 
Joo Zepper:
...¿y luego qué?

Has declarado dos métodos idénticos, lo que no está permitido, en caso de sobrecarga los métodos deben responder el uno al otro con un conjunto de parámetros internos.

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

Has declarado dos métodos idénticos, lo que no está permitido; en el caso de la sobrecarga, los métodos deben responder el uno al otro con un conjunto de parámetros internos.

Soy consciente de la sobrecarga. Pero no me refería a eso: el compilador de ME no nota el error, a diferencia del compilador de consola.
 
Joo Zepper:
Soy consciente de la sobrecarga. Pero no me refería a eso: el compilador de ME no nota el error, a diferencia del compilador de consola.
Sí, es cierto, yo también lo he notado.
 
Joo Zepper:
Soy consciente de la sobrecarga. Pero no me refería a eso: el compilador de ME no nota el error, a diferencia del compilador de consola.
No se nota el error hasta que se declara el cuerpo de este método. Es decir, no tiene ningún efecto en la ejecución del programa.
 
Ilya Malev:
No detecta un error hasta que se declara el cuerpo de esa función. Es decir, no tiene ningún efecto en la ejecución del programa.
Sin embargo, esto no significa que no sea necesario arreglar el comportamiento del compilador ME.
 
Joo Zepper:
Sin embargo, esto no significa que no sea necesario arreglar el comportamiento del compilador ME.
En efecto, el compilador acepta la precarga - si se arregla, se emitirá un error.
 

¿Cómo puede ser esto?

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

Y un "indicador" instalado en la ventana de prueba del 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);
  }
//+------------------------------------------------------------------+

El resultado del trabajo en la pantalla:

Prueba de ticks01

El resultado del trabajo en troncos (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

Los valores mostrados en el EA y el indicador son diferentes.

Parece que el EA toma los datos del probador y el indicador toma los datos actuales del instrumento en el que se prueba el EA.

Liberación 902.

Archivos adjuntos:
 
Yury Kirillov:

¿Cómo puede ser esto?

Hay una "EA":

Y un "indicador" instalado en la ventana de prueba del EA:

El resultado aparece en la pantalla:

El resultado del trabajo en troncos (fragmento):

Los valores mostrados en el EA y el indicador son diferentes.

Parece que el EA toma los datos del probador y el indicador toma los datos actuales del instrumento en el que se ha probado el EA.

Liberación 902.

Gracias por sus comentarios. Arreglado.
 

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

Gracias por su respuesta.

¿Se ha arreglado ya?

¿O está en la próxima versión?