Perguntas de Iniciantes MQL5 MT5 MetaTrader 5 - página 1356

 
Vladimir I conhece a regra da comparação. Então não pode ser feito sem quaisquer condições adicionais?
 
Oleg Kolesov #:
Vladimir, eu conheço a regra da comparação. Então não pode ser feito sem quaisquer condições adicionais?

Quais são os extras?


Pode fazer ainda melhor do que isso, sem comparação:

      //---------------------------------------------+
      levelcol1[i]=1.0;
      if(level1[i]>level1[i+PeriodSh])
        {
         levelcol1[i]=0.0;
         continue;
        }
      /*if(CompareDoubles(level1[i],level1[i+PeriodSh]))
        {
         levelcol1[i]=1.0;
         continue;
        }*/
      if(level1[i]<level1[i+PeriodSh])
        {
         levelcol1[i]=2.0;
         continue;
        }
     }  //--- Возвращаемое значение prev_calculated для следующего вызова
 
Obrigado pela sua ajuda.
 
Vladimir Karputov #:

Quais são os extras?


E pode fazer ainda melhor, sem comparação:

O mesmo é verdade se se comparar numa base de igualdade sem normalização.

 
A questão principal continua por resolver. Como colorir o tampão com duas cores. >= Azul a <= Vermelho.
 
Oleg Kolesov #:
A questão principal continua por resolver. Como colorir o tampão com duas cores. >= Azul a <= Vermelho.

E no caso de igual, como saber se é mais ou menos igual ou igual? Esse é o desafio, não é?)

 
Oleg Kolesov #:
Qual é a tarefa? Loop?ArrayBsearch? ArraySortar? Por que meios?

Silêncio hussardos!

Este é o apocalipse.

A mente deve ser tratada.

 
Vou fazer uma pausa. Obrigado.
 

Por favor, ajude a remover um indicador da janela principal.

Por exemplo, são colocados vários indicadores de MA personalizados, cada um é chamado pelo iCustom(handleMA,...,...,...).

Assim, uma dúzia de médias móveis são afixadas no gráfico.

Depois, estes indicadores devem ser recalculados utilizando um temporizador.

A ordem é a seguinte - o temporizador dispara, os indicadores antigos são removidos, o cálculo e o desenho de novas médias móveis têm lugar.

Agora, o próprio problema: as linhas antigas permanecem na tabela a cada nova iteração.

Tentei removê-los de duas maneiras:

Graph_MA[i] = iCustom(_Symbol,Timeframe,"MA", /*параметры индикатора*/);   
for(int i=0; i < kol_Lines; i++) 
     {
      res = IndicatorRelease(Graph_MA[i]);
     }

Neste caso, a variável res é sempre igual a True, mas os indicadores extra não são removidos do gráfico.

A segunda via:

name_MA[i]=StringFormat("MA_Line # %d", i);
IndicatorSetString(INDICATOR_SHORTNAME,name_MA[i]);
res = ChartIndicatorDelete(0, 0, name_MA[i]);

Em vão: res é sempre falso.

 
qadexys #:

Por favor, ajude a remover um indicador da janela principal.

Por exemplo, são colocados vários indicadores de MA personalizados, cada um é chamado pelo iCustom(handleMA,...,...,...).

Assim, uma dúzia de médias móveis são afixadas no gráfico.

Depois, estes indicadores devem ser recalculados utilizando um temporizador.

A ordem é a seguinte - o temporizador dispara, os indicadores antigos são removidos, o cálculo e o desenho de novas médias móveis têm lugar.

Agora, o próprio problema: as linhas antigas permanecem na tabela a cada nova iteração.

Tentei removê-los de duas maneiras:

Neste caso, a variável res é sempre igual a True, mas os indicadores extra não são removidos do gráfico.

A segunda via:

Em vão: res é sempre falso.

Estas são as características do IndicatorRelease() - não é a eliminação de um indicador, mas é a notificação do terminal de que o indicador já não é necessário. Além disso, o terminal decide por si próprio quando deve ser removido. Normalmente, fá-lo após alguns segundos.

Talvez haja alguns truques - não sei. Talvez tentar mudar a tabela.

Razão: