Excluir indicador

 

Boa tarde a todos,

Pessoal, estou querendo excluir meu próprio indicador através de um botão que coloquei no gráfico. A ideia é fazer essa operação de forma semelhante à remoção de um Script (aquele ícone no canto superior direito da tela), ou seja, sem ter que abrir a janela de indicadores (Ctrl+I).

A função ExpertRemove() não funcionou. Utilizei OnDeinit(REASON_REMOVE) e deletou todos meus objetos (está programada para isso), mas o indicador continuou na janela de indicadores.

É possível fazer essa exclusão via código?

Abraços

García

 
Drmqlbrazil5:

Boa tarde a todos,

Pessoal, estou querendo excluir meu próprio indicador através de um botão que coloquei no gráfico. A ideia é fazer essa operação de forma semelhante à remoção de um Script (aquele ícone no canto superior direito da tela), ou seja, sem ter que abrir a janela de indicadores (Ctrl+I).

A função ExpertRemove() não funcionou. Utilizei OnDeinit(REASON_REMOVE) e deletou todos meus objetos (está programada para isso), mas o indicador continuou na janela de indicadores.

É possível fazer essa exclusão via código?

Abraços

García

Olá,

veja se esse código atende!

 void OnDeinit(const int reason)
  {
 

   long total_windows;
   if(ChartGetInteger(0,CHART_WINDOWS_TOTAL,0,total_windows))
      for(int i=0;i<total_windows;i++)
        {
         long total_indicators=ChartIndicatorsTotal(0,i);
         for(int j=0;j<total_indicators;j++)
           {
            ChartIndicatorDelete(0,i,ChartIndicatorName(0,i,0));
           }
        }

   }
 
Rogerio Giannetti Torres:

Olá,

veja se esse código atende!

Perfect!

Contudo, esse código eliminaria todos os indicadores.

Já tinha visto a função ChartIndicatorDelete(), mas estava evitando por causa do "nome do indicador". Resolvi colocando em OnInit a função IndicatorSetString(INDICATOR_SHORTNAME,"meunome") e depois, ao clicar no botão: ChartIndicatorDelete(0, 0, "meunome").

Resolvido !

Abraços

Razão: