Perguntas de Iniciantes MQL5 MT5 MetaTrader 5 - página 623
Você está perdendo oportunidades de negociação:
- Aplicativos de negociação gratuitos
- 8 000+ sinais para cópia
- Notícias econômicas para análise dos mercados financeiros
Registro
Login
Você concorda com a política do site e com os termos de uso
Se você não tem uma conta, por favor registre-se
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().
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().
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... 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.
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.
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?
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.
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.
duplo A;
int x, y;
x=100; y=3; A=x/y=33.000