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

 
-Aleks-:
Não, não preciso dele no testador, mas quando o terminal funciona realmente num gráfico - só funcionará lá se o histórico contiver menos do que o número máximo de barras, ou estarei eu errado?

E em tempo real as taxas_total e Bars() irão aumentar quando o indicador estiver a funcionar. Não poderá obter taxas_total no OnInit(), porque o parâmetro não é passado para a função. Deve verificar o histórico em qualquer caso em OnCalculate().

 
Bom dia a todos! Por favor, ajudem-me a encontrar um consultor especializado. Preciso de uma caixa (box) com tempo de sessão de definição, dividida em três ordens em cada direcção, funções de seguimento e paragem de perda. Já me afoguei na minha busca nos espaços abertos. Estou quase à beira de um precipício, só mais um pouco e vou começar a aprender a língua e o editor para me escrever!!!! AJUDA!!!
 
Alexey Kozitsyn:

E em tempo real as taxas_total e Bars() irão aumentar quando o indicador estiver a funcionar. Não poderá obter taxas_total no OnInit(), porque o parâmetro não é passado para a função. O histórico deve ser verificado em qualquer caso em OnCalculate().

Por outras palavras, devemos criar um indicador, onde verificamos o número de barras e, se tudo estiver bem, então preencher o buffer do gráfico com uma, e depois esperar na EA até obtermos uma do indicador, e só depois continuar a funcionar, certo?
 
-Aleks-:
Isto é, temos de fazer um indicador separado, onde verificamos o número de barras e, se tudo estiver bem, então preenchemos o buffer do gráfico com uma, e depois esperamos na EA até obtermos uma do indicador, e só depois disso continuarmos a trabalhar, certo?
Claro que não... Porque seria tão complicado... Vamos tentar novamente. Qual é o objectivo? Para obter todo o histórico disponível para os cálculos?
 
Alexey Kozitsyn:
Claro que não... Porquê complicar tanto... Vamos fazê-lo novamente. Qual é o objectivo? Para obter todo o histórico disponível para cálculo?

A situação é que para que a EA funcione correctamente, precisa de calcular a história uma vez. Assim, acontece que quando se liga o terminal com este EA, há um histórico e, consequentemente, a inicialização e o cálculo são efectuados, mas este histórico pode não ser todo, e um novo será carregado após a ligação ao terminal.

Penso que podemos localizar a ligação com o terminal e depois, se estiver disponível, verificar se há alterações da última barra em HLCO e, se estiver disponível, esperamos, e se não estiver disponível em x segundos, efectuamos o cálculo.

 
-Aleks-:

A situação é que para que a EA funcione correctamente, precisa de calcular a história uma vez. Assim, acontece que quando se liga o terminal com este EA, há um histórico e, consequentemente, a inicialização e o cálculo são efectuados, mas este histórico pode não ser todo, e um novo será carregado após a ligação ao terminal.

Penso que podemos rastrear a ligação com o terminal e depois, se estiver disponível, verificar as alterações da última barra pela HLCO e, se estiver disponível, esperamos, mas se não estiver disponível em x segundos, efectuamos o cálculo.

O Expert Advisor utiliza algum indicador personalizado?

Por exemplo, pode fazer o seguinte: verificar o tamanho do histórico através de Bars(). Depois ver se Bars() > prev_bars+1 (o tamanho do histórico no tick anterior) - então reinicia todos os dados guardados e faz um recálculo completo do Expert Advisor a partir do zero. Esta construção deve ser inserida em primeiro lugar em OnTick().

Não há necessidade de se preocupar com a ligação ao terminal, pausas, etc. A opção mais simples é muitas vezes a melhor.

 
Alexey Kozitsyn:

O Expert Advisor utiliza algum indicador personalizado?

Por exemplo, pode fazer isto: verificar o tamanho do histórico através de Bars(). Depois ver se Bars() > prev_bars+1 (o tamanho do histórico no tick anterior) - então reinicia todos os dados guardados e faz um recálculo completo do Expert Advisor a partir do zero. Esta construção deve ser inserida em primeiro lugar em OnTick().

Não há necessidade de se preocupar com a ligação ao terminal, pausas, etc. A variante mais simples é, na maioria das vezes, a melhor.

O Expert Advisor utiliza muitas coisas, incluindo indicadores.

Compreendo que a variante sugerida irá recalcular em todos os bares, ou estou errado?

 
-Aleks-:

O Expert Advisor utiliza muitas coisas, incluindo indicadores.

Compreendo que esta variante será recalculada em todos os bares, ou estou errado?

Não, porquê em todos os bares? O Expert Advisor só será recalculado completamente se mais de 1 barra for adicionada à história! Se for adicionada 1 barra (forma-se uma nova barra), o recálculo completo não será efectuado.

Se utilizar indicadores, e estes tiverem variáveis globais, então devem ser zerados quando os executa pela primeira vez. Caso contrário, os artefactos podem aparecer no gráfico / indicadores podem ser apresentados incorrectamente.

 
Alexey Kozitsyn:

Não, porquê em cada um deles? Um recálculo completo da EA só acontecerá se mais de 1 barra tiver sido adicionada à história! Se for adicionada 1 barra (forma-se uma nova barra), não haverá um recálculo completo.

Se utilizar indicadores, e estes tiverem variáveis globais, então devem ser zerados quando os executa pela primeira vez. Caso contrário, os artefactos podem aparecer no gráfico / indicadores podem ser apresentados incorrectamente.

Não prestou atenção ao +1 , obrigado, penso que não é uma má opção.
 
Pode dizer-me porque é que isto pode acontecer?

duplo A;
int x, y;

x=100; y=3; A=x/y=33.000