Discussão do artigo "O poder do ZigZag (parte I). Desenvolvimento da classe base do indicador" - página 7

 
Sergey Voytsekhovsky:

Baixei um novo arquivo e tentei compilar o TestZZ_03.mq5

O resultado é o mesmo. Erro e referência à mesma função iniciada duas vezes com parâmetros diferentes.

Mostre o código do método CZigZagModule::GetZigZagData(), no qual os números do buffer devem ser passados.

 
O TestZZZ_03 e o TestZZZ_04 não aparecem entre os EAs carregados, portanto, o TestZZ_04 também não é compilado.
 
Anatoli Kazharski:

Mostre o código do método CZigZagModule::GetZigZagData(), no qual você precisa passar 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;

//--- Zerar variáveis ZZ

ZeroZigZagData();

//--- Vamos fazer um loop pelos valores ZZ copiados

for(int i=0; i<total; i++)

{

//--- Se já tivermos obtido o número necessário de máximos e mínimos de ZZ, saia do loop

if(m_contador_altos==m_copia_extremos && m_contador_baixos==m_copia_extremos)

break;

//--- Controle de superação da matriz

if(i>=h_total || i>=l_total)

break;

//--- Preencher a matriz de máximos até que o número necessário seja copiado

if(zz_h[i]>0 && m_counter_highs<m_copy_extremums)

{

m_zz_high[m_counter_highs] =zz_h[i];

m_zz_alta_barra[m_contador_altas] =i;

m_zz_high_time[m_counter_highs] =time[i];

//--- Aumentar o contador de máximos

m_counter_highs++;

}

//--- Preencha a matriz de mínimos até que tenhamos copiado o número necessário de mínimos

if(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];

//--- Aumentar a contagem de mínimos

m_counter_lows++;

}

}


 
Sergey Voytsekhovsky:
O TestZZZ_03 e o TestZZZ_04 não aparecem entre os Expert Advisors carregados, portanto, o TestZZ_04 também não foi compilado.

Em seguida, tente descobrir por que eles não aparecem. Dei uma olhada no arquivo novamente. Tudo para os testes está lá.

 
Anatoli Kazharski:

Mostra o código do método CZigZagModule::GetZigZagData(), para o qual você precisa passar os números do buffer.

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)

{

//--- Vamos obter os dados iniciais

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

//--- Se não for suficiente, vamos tentar novamente

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;

}

}

//--- Contadores

int lows_counter =0;

int highs_counter =0;

//--- Contagem de máximos

int h_total=::ArraySize(m_zz_highs_temp);

for(int i=0; i<h_total; i++)

{

se(m_zz_highs_temp[i]>0)

highs_counter++;

}

//--- Contar os mínimos

int l_total=::ArraySize(m_zz_lows_temp);

for(int i=0; i<l_total; i++)

{

se(m_zz_lows_temp[i]>0)

lows_counter++;

}

//--- Obter o número de extremos

int copy_extremums=(int)::fmin((double)highs_counter,(double)lows_counter);

CopyExtremums(copy_extremums);

//--- Vamos percorrer os valores ZZ copiados

GetZigZagData(m_zz_highs_temp,m_zz_lows_temp,m_zz_time_temp);

}

 
Sergey Voytsekhovsky:

...

Insira o código corretamente:

//---

Esse é o método errado. Esse é o método com essa lista de parâmetros:

//+------------------------------------------------------------------+
//|| Obtém dados ZZ do identificador passado
//+------------------------------------------------------------------+
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 os métodos são gravados em um arquivo em linha.

Primeira página 217.

Segunda página 258

 
Sergey Voytsekhovsky:

...

Você não substituiu os arquivos. Exclua todos eles. E faça o download novamente do último arquivo: https: //www.mql5.com/ru/forum/299970/page6#comment_10495849

Обсуждение статьи "ZigZag всему голова (Часть I). Разработка базового класса индикатора"
Обсуждение статьи "ZigZag всему голова (Часть I). Разработка базового класса индикатора"
  • 2019.02.03
  • www.mql5.com
Опубликована статья ZigZag всему голова (Часть I). Разработка базового класса индикатора: Автор: Anatoli Kazharski...
 
Excluí tudo, baixei um novo arquivo e só há a pasta Files. Agora, as variantes 1 e 2 do EA desapareceram. .... Ou será que excluí demais??? ?
 
Se eu excluir o MT5 do meu computador e instalar um novo, o que preciso baixar? O arquivo antigo e, em cima dele, um novo? Apenas um novo? Estou completamente confuso com relação aos arquivos. O antigo coloca as opções 1 e 2, mas não corretamente. O novo não coloca nada, deve funcionar corretamente, mas obviamente não é suficiente. Perdoe meu analfabetismo em arquivos, mas não consigo encontrar uma explicação ou instrução normal sobre quais arquivos no MT5 são responsáveis por quê.