Discussão do artigo "O poder do ZigZag (parte I). Desenvolvimento da classe base do indicador" - página 7
Você está perdendo oportunidades de negociação:
- Aplicativos de negociação gratuitos
- 8 000+ sinais para cópia
- Notícias econômicas para análise dos mercados financeiros
Registro
Login
Você concorda com a política do site e com os termos de uso
Se você não tem uma conta, por favor registre-se
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.
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++;
}
}
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á.
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);
}
...
Insira o código corretamente:
//---
Esse é o método errado. Esse é o método com essa lista de parâmetros:
Ambos os métodos são gravados em um arquivo em linha.
Primeira página 217.
Segunda página 258
...
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