Indicador Perguntas Diversas - página 12

 

Não há razão para que essa declaração impressa não deva gerar algo.

Se você adicionar o indicador a um novo gráfico, ele será impresso (sem ter que alterar o prazo)?

Se sim, pode ser uma questão de já ter o indicador em um gráfico e depois recompilar esperando ver a mudança.

 
honest_knave:

Não há razão para que essa declaração impressa não deva gerar algo.

Se você adicionar o indicador a um novo gráfico, ele será impresso (sem ter que alterar o prazo)?

Se sim, pode ser uma questão de já ter o indicador em um gráfico e depois recompilar esperando ver a mudança.


Obrigado por comentar prontamente, agradeço por isso.

Sim! Ele imprime a mensagem abaixo, ou Carregar Modelo ou Adicionar Indicador.

20...   ... EURUSD,M1: This Year1900

Mas como você sabe, esse código poderia me dar " 2017 ".

//--- 2ª vez editado

Quando eu recompilo-a mostra o resultado correto.

Mas não consigo abrir o MetaEditor que recompilo quando tento adicionar indicador e carregar modelo... Espero que você entenda o que quero dizer.

 
Max Enrik:


Obrigado por comentar prontamente, agradeço por isso.

Muito agradecido! Imprime a mensagem abaixo, ou Load Template ou Add Indicator.

Mas como você sabe, esse código poderia me dar "2017".

//--- 2ª vez editado

Quando eu recompilo-a mostra o resultado correto.

Mas não consigo abrir o MetaEditor que recompilo quando tento adicionar indicador e carregar modelo... Espero que você entenda o que quero dizer.


Possivelmente a razão pela qual ele está lhe dando o ano "errado" é que o OnInit() está funcionando antes de você ter se conectado ao seu corretor.

O ano() é baseado no tempo do servidor... se não houver uma conexão, ele não sabe o ano.

Compare-o com:

TimeYear(TimeLocal())
 
honest_knave:


Possivelmente a razão pela qual ele está lhe dando o ano "errado" é que o OnInit() está funcionando antes que você tenha se conectado ao seu corretor.

O ano() é baseado no tempo do servidor... se não há conexão, não sabe o ano.

Compare-a com:


Eu sei com certeza que OnInit() eOnCalculate(...) precisam de um estilo de código diferente...
Vou tentar reescrever meus indicadores novamente.
( é possível que eu desista )

Obrigado por seu comentário.

 

Acho que eu poderia escrever um código para primeiro apagar todos os objetos indicadores e depois reescrevê-los.
Eu tentei como o código abaixo. Mas tenho dúvidas quanto a esse método.

P: Esse método é suficiente para apagar todos os objetos de indicador, por favor?

Qualquer conselho seria melhor, obrigado.

int OnInit()
 {
  ObjectsDeleteAll( 0, prefix );
  
  // then all my indicator code here...
 }
 
Max Enrik:

Acho que eu poderia escrever um código para primeiro apagar todos os objetos indicadores e depois reescrevê-los.
Eu tentei como o código abaixo. Mas tenho dúvidas quanto a esse método.

P: Esse método é suficiente para apagar todos os objetos de indicador, por favor?

Qualquer conselho seria melhor, obrigado.


Essa é a maneira correta de excluir todos os objetos do gráfico atual que começam com 'prefixo'.
 
honest_knave:

Essa é a maneira correta de excluir todos os objetos do gráfico atual que começam com 'prefixo'.

Legal! Obrigado por sua resposta.
Agora, eu só preciso ver como funcionará meu indicador no dia seguinte.

( p.s não gosto de testar meu indicador com o Testador )

 

( Uma vez eu disse )

Eu uso o código do método abaixo para meus poucos indicadores, que os indicadores não têm nenhum problema, mas só têm um problema quando inicio a plataforma MT4, que é que os indicadores precisam reiniciar a plataforma que se atualiza apenas para valores corretos. Enfrento esse problema SOMENTE uma vez por dia.

P: Então, está abaixo de uma parte do código que pode causar um problema que não pode atualizar os valores corretos, por favor?

Agradecemos antecipadamente.

int OnInit()
{
    //---
    datetime a = iTime( Symbol(), 0, 0 );
    int      b = iBarShift( Symbol(), 0, a );
    datetime c = iOpen( Symbol(), 0, b );
    //---
    return(0);
}
 

O código no OnInit() só funciona uma vez.

Quando você reinicia seu terminal, o OnInit() pode terminar antes que você tenha se conectado ao seu corretor.

Sem uma conexão com seu corretor, o tempo será errado.

Eu sugeriria mover seu código para fora do OnInit(), ou pelo menos verificar IsConnected()

 
honest_knave:

Eu sugeriria mover seu código para fora do OnInit(), ou pelo menos verificar IsConnected()

Nunca use este IsConnected(), vou pesquisar sobre isso.

Muito obrigado.

Razão: