Erros, bugs, perguntas - página 1547
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
Agora preste atenção à questão - como fazer o terminal redesenhar imediatamente os dados que foram calculados desta forma?
Extrai dados de amortecedores que não estão na OnCalculate
OnCalculate tem um tempo mínimo de sorteio de 1 minuto
Indicadores de carrapato desenham cada carrapato
Parece que não.
O ChartRedraw fará 100% do trabalho em quatro, no entanto.
E acabou por ficar bem em cinco também.
Assim, o ChartRedraw funcionará bem em ambas as plataformas.
Quando CHARTEVENT_CHART_CHANGE chega, faço um cálculo que por vezes dura um segundo/evento. Se durante o cálculo, por exemplo, um gráfico é movido, então após o cálculo CHARTEVENT_CHART_CHANGE é chamado novamente da fila.
É possível saber durante o cálculo que existe algo na fila de eventos? Então não poderia fazer um cálculo que já não é relevante, interrompê-lo e iniciar um novo cálculo?
Por exemplo, se mesmo uma parte de cálculo muito pesada tiver uma verificação para IsStopped(), então o fecho do Expert Advisor seria instantâneo, sem esperar pelo cálculo.
Aqui seria algo semelhante, mas não com o evento de encerramento, mas com ChartEvent.
Quando CHARTEVENT_CHART_CHANGE chega, faço um cálculo que por vezes dura um segundo/evento. Se durante o cálculo, por exemplo, um gráfico é movido, então após o cálculo CHARTEVENT_CHART_CHANGE é chamado novamente da fila.
É possível saber durante o cálculo que existe algo na fila de eventos? Então não poderia fazer um cálculo que já não é relevante, interrompê-lo e iniciar um novo cálculo?
Por exemplo, se mesmo uma parte de cálculo muito pesada tiver uma verificação para IsStopped(), então o fecho do Expert Advisor seria instantâneo, sem esperar pelo cálculo.
Aqui seria algo semelhante, mas não com o evento de encerramento, mas com ChartEvent.
fazer um segundo fio de processamento (sob a forma de um temporizador ms, por exemplo)
e exactamente ali para efectuar o cálculo, desde que a bandeira do contador==XXX esteja definida, incrementada em CHARTEVENT_CHART_CHANGE.
Assim, rapidamente vai buscar toda a fila ChartEvent, coloca uma bandeira e, em paralelo com esta, o temporizador verifica esta bandeira e calcula-a.
---
No mesmo temporizador, verificar o valor do contador de bandeiras. É possível parar o cálculo se o valor actual do contador for superior ao valor em que o cálculo foi iniciado. Assim, é como IsNewChanged
por isso, agarra toda a fila ChartEvent muito rapidamente, coloca uma bandeira, e em paralelo o temporizador puxa essa bandeira e calcula-a.
O Service Desk fez esta declaração
SetIndexBuffer делается однократно на вызове OnInit
Alguém usa SetIndexBuffer não no OnInit e/ou repetidamente? No MT4 utilizo-o a toda a hora. Em MT5 não se pode fazer isto, infelizmente.
Está a dizer que os eventos ChartEvent e Timer decorrem em paralelo?
mesmo que sejam executados sequencialmente - não está impedido de utilizar pelo menos isto.
retira instantaneamente todo o ChartEvent e coloca apenas uma encomenda.
---
sobre o paralelismo do temporizador e dos eventos gráficos é uma questão pertinente.
Pergunte ao servicedesk.
mesmo que sejam executados sequencialmente - não está impedido de utilizar pelo menos isto.
retira instantaneamente todo o ChartEvent e coloca apenas uma encomenda.
---
sobre o paralelismo do temporizador e dos eventos gráficos é uma questão pertinente.
Pergunte no balcão de serviço.
Ninguém lê a documentação...
O terminal do cliente envia os eventos gerados para os gráficos abertos correspondentes. Também os eventos podem ser gerados por gráficos (eventos de gráficos) ou programas mql5 (eventos personalizados). A geração de eventos de criação e eliminação de objectos gráficos num gráfico pode ser activada ou desactivada através da definição das propriedades CHART_EVENT_OBJECT_CREATE e CHART_EVENT_OBJECT_DELETE de um gráfico. Cada programa de mql5 e cada gráfico tem a sua própria fila de eventos, onde todos os novos eventos são armazenados.
O programa recebe eventos apenas do gráfico, no qual está a decorrer. Todos os eventos são processados um a um na ordem de recepção. Se já houver um evento NewTick na fila ou se este evento estiver no estado de processamento, um novo evento NewTick não é colocado na fila do programa mql5. Da mesma forma, se a fila do programa mql5 já contém o evento ChartEvent ou se tal evento estiver a ser processado, um novo evento deste tipo não será enfileirado. Os eventos Temporizador são tratados de acordo com o mesmo esquema - se houver um evento Temporizador na fila ou se o evento Temporizador já for tratado, um novo evento Temporizador não é colocado na fila.
Ninguém lê a documentação...
Ninguém lê a documentação...
Já lá vai muito tempo