Discusión sobre el artículo "El poder del ZigZag (Parte I). Desarrollando la clase base del indicador" - página 7
Está perdiendo oportunidades comerciales:
- Aplicaciones de trading gratuitas
- 8 000+ señales para copiar
- Noticias económicas para analizar los mercados financieros
Registro
Entrada
Usted acepta la política del sitio web y las condiciones de uso
Si no tiene cuenta de usuario, regístrese
Descargado un nuevo archivo, trató de compilar TestZZ_03.mq5
El resultado es el mismo. Error y referencia a la misma función iniciada dos veces con diferentes parámetros.
Muestre el código del método CZigZagModule::GetZigZagData(), en el que deben pasarse los números de búfer.
Muestra el código del método CZigZagModule::GetZigZagData(), donde es necesario pasar números de buffer.
void CZigZagModule::GetZigZagData(const double &zz_h[],const double &zz_l[],const datetime &time[])
{
int h_total =::ArraySize(zz_h);
int l_total =::ArraySize(zz_l);
int total =h_total+l_total;
//--- Cero variables ZZ
ZeroZigZagData();
//--- Recorramos en bucle los valores ZZ copiados
for(int i=0; i<total; i++)
{
//--- Si ya hemos obtenido el número necesario de máximos y mínimos ZZ, salimos del bucle
if(m_counter_highs==m_copy_extremums && m_counter_lows==m_copy_extremums)
romper;
//--- Control de desbordamiento del array
if(i>=h_total || i>=l_total)
break;
//--- Llenar el array de máximos hasta copiar el número requerido
if(zz_h[i]>0 && m_counter_highs<m_copy_extremums)
{
m_zz_altos[m_contador_altos] =zz_h[i];
m_zz_high_bar[m_counter_highs] =i;
m_zz_high_time[m_counter_highs] =time[i];
//--- Incrementa el contador de highs
m_contador_altos++;
}
//--- Llena el array de mínimos hasta que hayamos copiado el número necesario de mínimos
if(zz_l[i]>0 && m_contador_bajos<m_copia_extremos)
{
m_zz_low[m_counter_lows] =zz_l[i];
m_zz_low_bar[m_contador_lows] =i;
m_zz_low_time[m_counter_lows] =time[i];
//--- Aumentar el recuento de mínimos
m_contador_lows++;
}
}
TestZZZ_03 y TestZZZ_04 no aparecen entre los Asesores Expertos cargados, por lo que TestZZ_04 tampoco está compilado.
A continuación, tratar de averiguar por qué no aparecen. He mirado de nuevo en el archivo. Todo para las pruebas está allí.
Muestra el código del método CZigZagModule::GetZigZagData(), al que hay que pasar los números de los buffers.
void CZigZagModule::GetZigZagData(const int handle,int buffer_num_highs,int buffer_num_lows,
const string symbol,const ENUM_TIMEFRAMES period,
const datetime start_time,const datetime stop_time)
{
//--- Obtengamos los datos iniciales
int times_total =::CopyTime(symbol,period,start_time,stop_time,m_zz_time_temp);
int highs_total =::CopyBuffer(handle,2,0,times_total,m_zz_highs_temp);
int lows_total =::CopyBuffer(handle,3,0,times_total,m_zz_lows_temp);
//--- Número máximo de extremos
int max_items =(int)::fmax((double)highs_total,(double)lows_total);
//--- Si no es suficiente, intentémoslo de nuevo
if(total_veces<total_máx)
{
while(true)
{
::Sleep(100);
times_total=::CopyTime(symbol,period,start_time,stop_time,m_zz_time_temp);
if(tiempos_total>=máx_elementos)
break;
}
}
//--- Contadores
int lows_counter =0;
int highs_counter =0;
//--- Contador de máximos
int h_total=::ArraySize(m_zz_highs_temp);
for(int i=0; i<h_total; i++)
{
if(m_zz_alturas_temp[i]>0)
contador_altos++;
}
//--- Contar los mínimos
int 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 extremos
int copiar_extremos=(int)::fmin((double)contador_altos,(double)contador_bajos);
CopyExtremums(copy_extremos);
//--- Recorramos en bucle los valores ZZ copiados
GetZigZagData(m_zz_highs_temp,m_zz_lows_temp,m_zz_time_temp);
}
...
Inserte el código correctamente:
//---
Este es el método equivocado. Este es el que tiene esta lista de parámetros:
Ambos métodos se escriben en un archivo inline.
Primera página 217.
Segunda p 258
...
No reemplazaste los archivos. Bórralos todos. Y vuelve a descargar desde el último archivo: https: //www.mql5.com/ru/forum/299970/page6#comment_10495849