Gracias por los comentarios. Todavía no sé cómo comprobar los parámetros, estoy aprendiendo programación. Por lo que he logrado entender - en el código el Asesor Experto llama al método GetZigZagData().
La primera vez con los parámetros GetZigZagData(h_zz,l_zz,t_zz),
la segunda vez con diferentes parámetros GetZigZagData(zz_handle_current,_Symbol,_Period,start_time_in,stop_time_in).
El archivo de inclusión tiene ambas opciones
void CZigZagModule::GetZigZagData(constdouble &zz_h[],constdouble &zz_l[],constdatetime &time[])
{
int h_total =::ArraySize(zz_h);
int l_total =::ArraySize(zz_l);
int total =h_total+l_total;
//--- Puesta a cero de las variables ZZ
ZeroZigZagData();
//--- Vamos a recorrer los valores ZZ copiadosfor(int i=0; i<total; i++)
{
//--- Si ya hemos obtenido el número necesario de máximos y mínimos de ZZ, salimos del bucleif(m_counter_highs==m_copy_extremums && m_counter_lows==m_copy_extremums)
break;
//--- Control de desbordamiento de matrizif(i>=h_total || i>=l_total)
break;
//--- Llena el array de máximos hasta que hayamos copiado el número necesario de máximosif(zz_h[i]>0 && m_counter_highs<m_copy_extremums)
{
m_zz_high[m_counter_highs] =zz_h[i];
m_zz_high_bar[m_counter_highs] =i;
m_zz_high_time[m_counter_highs] =time[i];
//--- Aumentar el contador de máximos
m_counter_highs++;
}
//--- Rellena el array de mínimos hasta copiar el número deseadoif(zz_l[i]>0 && m_counter_lows<m_copy_extremums)
{
m_zz_low[m_counter_lows] =zz_l[i];
m_zz_low_bar[m_counter_lows] =i;
m_zz_low_time[m_counter_lows] =time[i];
//--- Aumenta la cuenta mínima.
m_counter_lows++;
}
}
//--- Determinar la dirección del movimiento del precio
m_direction=(m_zz_high_time[0]>m_zz_low_time[0])? 1 : -1;
}
//+------------------------------------------------------------------+//|| Obtiene los datos ZZ del manejador pasado ||//+------------------------------------------------------------------+void CZigZagModule::GetZigZagData(constint handle,int buffer_num_highs,int buffer_num_lows,
conststring symbol,constENUM_TIMEFRAMES period,
constdatetime start_time,constdatetime stop_time)
{
//--- Vamos a obtener los datos inicialesint times_total =::CopyTime(symbol,period,start_time,stop_time,m_zz_time_temp);
int highs_total =::CopyBuffer(handle,buffer_num_highs,start_time,stop_time,m_zz_highs_temp);
int lows_total =::CopyBuffer(handle,buffer_num_lows,start_time,stop_time,m_zz_lows_temp);
//--- Número máximo de extremosint max_items =(int)::fmax((double)highs_total,(double)lows_total);
//--- Si no es suficiente, vamos a intentarlo de nuevo.if(times_total<max_items)
{
while(true)
{
::Sleep(100);
times_total=::CopyTime(symbol,period,start_time,stop_time,m_zz_time_temp);
if(times_total>=max_items)
break;
}
}
//--- Contadoresint lows_counter =0;
int highs_counter =0;
//--- Calcular los máximosint h_total=::ArraySize(m_zz_highs_temp);
for(int i=0; i<h_total; i++)
{
if(m_zz_highs_temp[i]>0)
highs_counter++;
}
//--- Calcular los mínimosint l_total=::ArraySize(m_zz_lows_temp);
for(int i=0; i<l_total; i++)
{
if(m_zz_lows_temp[i]>0)
lows_counter++;
}
//--- Obtener el número de extremosint copy_extremums=(int)::fmin((double)highs_counter,(double)lows_counter);
CopyExtremums(copy_extremums);
//--- Vamos a recorrer los valores ZZ copiados
GetZigZagData(m_zz_highs_temp,m_zz_lows_temp,m_zz_time_temp);
}
escritas una tras otra.
Cargado archivos antiguos, luego los nuevos, borrado MT5 en general, instalado uno nuevo desde cero, nada ayuda, el error de la pantalla de arriba - persiste.
Алексей Тарабанов: ZY: ¿Por qué programas en C si no estás seguro de poder abordar una función con diferentes parámetros?
No te entiendo muy bien. ¿Tengo muchas opciones sobre qué programar? Tengo MT5, está en MQL5, y estoy intentando aprenderlo.
Creo que se puede acceder a una función con diferentes parámetros, incluso he leído que se llama sobrecarga. Pero no entiendo como manejarlo. Por otra parte, estoy seguro de que no es el error del autor aquí en absoluto, lo más probable es que yo estoy cometiendo un error, la única pregunta es dónde exactamente ????.
Cambié los nombres de estas funciones en el archivo de inclusión y les añadí los números 1 y 2 respectivamente.
Encontré todas las referencias a ellas en el Asesor Experto y las edité. El antiguo error desapareció, pero apareció uno nuevo. Efectivamente - algún problema con los tipos de datos. El traductor escribió lo siguiente:
'stop_time_in' - incapaz de convertir la enumeración TestZZ_03.mq5 77 78
El tercero y el cuarto siguen sin compilar.
"GetZigZagData" - no se puede aplicar ninguna de las sobrecargas a la llamada de función TestZZZ_03.mq5 77 15
"Get ZigZag Data" - ninguna de las sobrecargas se puede aplicar a la llamada a la función test z_03.mq5 77 15
---------------------
podría ser una de 2 función(es) TestZZZ_03.mq5 77 15
podría ser una de 2 función(es) TestZZ_03.at MQL5 77 15
---------------------
void CZigZagModule::GetZigZagData(const int,int,int,const string,const ENUM_TIMEFRAMES,const datetime,const datetime) ZigZagModule.mqh 52 22
______________
Es decir, el compilador jura que se inicia una misma función con diferentes parámetros.
El tercero y el cuarto siguen sin compilar.
Compruebe los parámetros transmitidos. O bien su número o tipos son incorrectos. Esto ocurre al llamar a GetZigZagData.
Gracias por los comentarios. Todavía no sé cómo comprobar los parámetros, estoy aprendiendo programación. Por lo que he logrado entender - en el código el Asesor Experto llama al método GetZigZagData().
La primera vez con los parámetros GetZigZagData(h_zz,l_zz,t_zz),
la segunda vez con diferentes parámetros GetZigZagData(zz_handle_current,_Symbol,_Period,start_time_in,stop_time_in).
El archivo de inclusión tiene ambas opciones
escritas una tras otra.
Cargado archivos antiguos, luego los nuevos, borrado MT5 en general, instalado uno nuevo desde cero, nada ayuda, el error de la pantalla de arriba - persiste.
ZY: ¿Por qué programas en C si no estás seguro de poder abordar una función con diferentes parámetros?
No te entiendo muy bien. ¿Tengo muchas opciones sobre qué programar? Tengo MT5, está en MQL5, y estoy intentando aprenderlo.
Creo que se puede acceder a una función con diferentes parámetros, incluso he leído que se llama sobrecarga. Pero no entiendo como manejarlo. Por otra parte, estoy seguro de que no es el error del autor aquí en absoluto, lo más probable es que yo estoy cometiendo un error, la única pregunta es dónde exactamente ????.
CopyExtremums(copy_extremums); //--- Vamos a recorrer los valores ZZ copiados GetZigZagData(m_zz_highs_temp,m_zz_lows_temp,m_zz_time_temp);Creo que está aquí.Cambié los nombres de estas funciones en el archivo de inclusión y les añadí los números 1 y 2 respectivamente.
Encontré todas las referencias a ellas en el Asesor Experto y las edité. El antiguo error desapareció, pero apareció uno nuevo. Efectivamente - algún problema con los tipos de datos. El traductor escribió lo siguiente:
'stop_time_in' - incapaz de convertir la enumeración TestZZ_03.mq5 77 78