Discusión sobre el artículo "El poder del ZigZag (Parte I). Desarrollando la clase base del indicador" - página 7

 
Sergey Voytsekhovsky:

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.

 
TestZZZ_03 y TestZZZ_04 no aparecen entre los EA cargados, por lo que TestZZ_04 tampoco se compila.
 
Anatoli Kazharski:

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++;

}

}


 
Sergey Voytsekhovsky:
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í.

 
Anatoli Kazharski:

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);

}

 
Sergey Voytsekhovsky:

...

Inserte el código correctamente:

//---

Este es el método equivocado. Este es el que tiene esta lista de parámetros:

//+------------------------------------------------------------------+
//|| Obtiene los datos ZZ del manejador pasado ||
//+------------------------------------------------------------------+
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)
 

Ambos métodos se escriben en un archivo inline.

Primera página 217.

Segunda p 258

 
Sergey Voytsekhovsky:

...

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

Обсуждение статьи "ZigZag всему голова (Часть I). Разработка базового класса индикатора"
Обсуждение статьи "ZigZag всему голова (Часть I). Разработка базового класса индикатора"
  • 2019.02.03
  • www.mql5.com
Опубликована статья ZigZag всему голова (Часть I). Разработка базового класса индикатора: Автор: Anatoli Kazharski...
 
borrado todo, descargado un nuevo archivo, sólo hay la carpeta Archivos, ahora tanto 1 y 2 variantes de la EA se han ido. .... ¿O he borrado demasiado ??? ?
 
Si borro MT5 de mi ordenador e instalo uno nuevo, ¿qué tengo que descargar? ¿El archivo antiguo y encima uno nuevo? ¿Solo uno nuevo? Hay algo que me confunde completamente con los archivos. El viejo pone 1 y 2 opciones, pero no correctamente. El nuevo no pone nada, deberia funcionar correctamente, pero obviamente no es suficiente. Perdonad mi analfabetismo sobre archivos, pero no encuentro una explicación o instrucción normal sobre qué archivos en MT5 son responsables de qué.