Erros, bugs, perguntas - página 378

 

Porquê a expressão "if(ichi.TenkanSen(i)< ichi.KijunSen(i))" SEMPRE (em todas as velas) retorna falso, mesmo quando "if(ichi.TenkanSen(i)> ichi.KijunSen(i))"? Parece uma falha na biblioteca padrão. O código completo está no ficheiro.

Comment(DoubleToString(ichi.TenkanSen(0),5));

Sobre o euro-dólar, produz

Arquivos anexados:
Ich_1.mq5  3 kb
 
Graff:

Porquê a expressão "if(ichi.TenkanSen(i)< ichi.KijunSen(i))" SEMPRE (em todas as velas) retorna falso, mesmo quando "if(ichi.TenkanSen(i)> ichi.KijunSen(i))"? Parece ser uma falha na biblioteca padrão. Código completo no ficheiro

Primeiro, TerminalInfoInteger(TERMINAL_MAXBARS) - não se pode fazer isso.

substituir por taxas_total


Segundo, sim, há um erro que m_data_total o tempo todo =0. Por conseguinte, não temos valores.

 
sergeev:

primeiro TerminalInfoInteger(TERMINAL_MAXBARS) - não pode fazer isto.

substituir por taxas_total

Substituí-o por for(int i=0; i<=rates_total-1; i++), de facto, nada mudou.
 
Em segundo lugar, sim, há um erro, m_data_total =0 o tempo todo. É por isso que não existem valores.
 
sergeev:

Em segundo lugar, sim, há um erro, m_data_total =0 o tempo todo. Por conseguinte, não existem valores.
Tentou alterar os valores em Comentário( ichi.TenkanSen(3),5); em 1,2,3 em Comentário é constantemente a mesma coisa. Talvez fazer esse ajuste funcionar, e a correcção oficial não esperar por nenhuma oportunidade.
 
Graff:
Tentei alterar os valores em Comentário(ichi.TenkanSen(3),5); para 1,2,3 em Comentário, a mesma coisa continua a aparecer. Pode sugerir que se afinem para que funcione, depois a correcção oficial não espera por nenhuma oportunidade.
Não utilizar esta classe. Segure o cabo habitual.
 
sergeev:
Não utilize esta aula. Pegue no cabo normal.

Não se sente muito confortável a usá-lo...

OK, obrigado pela vossa atenção, à espera da correcção.

 
Graff:

Não é muito confortável de usar...

OK, obrigado pela vossa atenção, à espera da correcção.

não acha que é confortável? :)

int ich;

//+------------------------------------------------------------------+
int OnInit()
  {
   ich=iIchimoku(_Symbol,_Period, TenkanSen, KijunSen, SenkoSpan);
   return(0);
  }
//+------------------------------------------------------------------+
void OnDeinit(const int reason)
  {
    IndicatorRelease(ich);
  }
//+------------------------------------------------------------------+
int OnCalculate(const int rates_total,
                const int prev_calculated,
                const datetime &time[],
                const double &open[],
                const double &high[],
                const double &low[],
                const double &close[],
                const long &tick_volume[],
                const long &volume[],
                const int &spread[])
  {
   double ten[]; CopyBuffer(ich, 0, 0, rates_total, ten);
   double kij[]; CopyBuffer(ich, 1, 0, rates_total, kij);
   for(int i=0; i<rates_total; i++)
     {
      if(ten[i]<kij[i]) { up.Create(0,"Tenkan>Kijun"+IntegerToString(i),0,time[i],low[i]); up.Color(clrLimeGreen); }
      else { down.Create(0,"Tenkan<Kijun"+IntegerToString(i),0,time[i],high[i]); down.Color(clrTomato); }
     }
   return(rates_total);
  }
 
sergeev:

isso não é confortável? :)


Não sou um programador e não estou muito à vontade com este arranjo.

Faz sentido mudar

CopyBuffer(ich, 1, 0, rates_total, kij);

Substituir taxas_total por BarsCalculated(ich)?

PS: E de que cidade é, se não de um segredo?

 
Graff:


OK, obrigado pela atenção, à espera da correcção.

A propósito, tem a certeza de que não precisa de chamar nenhuma função adicional?

A biblioteca tem tanto o Refresh como o BufferResize. Parece-me que eles são necessários para um funcionamento normal.