É necessário executar o método Timer4 (destacado a azul) da classe CTestTimer
Não entrou nela.
#property indicator_chart_window#include <Timer.mqh> // https://www.mql5.com/ru/code/31306//+------------------------------------------------------------------+class CTestTimer {
private:
//typedef void (CTestTimer::*TFunc2)(); // так работает в C++, но здесь не работаетpublic:
staticint x4;
CTestTimer() {
//TFunc2 p=CTestTimer::Timer4;//TFunc2 p=Timer4;//timers.NewTimer(700,p);
timers.NewTimer(700,Method2Function); // ошибка 'Timer4' - pointer to this function type is not supported yet
};
~CTestTimer(){};
staticvoid Timer4() {
x4++;
if (x4==7) timers.KillTimer(Method2Function); // удаляем этот таймер
}
};
//+------------------------------------------------------------------+staticint CTestTimer::x4 = 0;
void Method2Function()
{
CTestTimer::Timer4();
}
Obrigado pelo seu tempo. Mas escrevi acima que o método deve ser não-estático. É evidente que isto é possível com métodos estáticos. Um método estático não é de todo um OOP. Obviamente que eu queria demasiado, ou melhor, impossível. Fiquei confuso com o facto de ter sido possível fazê-lo em C++, mas ao examiná-lo, compreendi que tal ponteiro tem uma estrutura totalmente diferente,
Um método de classe não estático tem uma única implementação, que fica algures na memória e afecta todos os objectos da classe. Mas cada objecto tem o seu próprio estado actual único de variáveis internas, pelo que um tal ponteiro para um método não estático deve também ter uma estrutura de parâmetros preenchida do objecto ao qual é aplicado no momento. Peço desculpa a todos pela perda de tempo. Precisamos de procurar outras formas de controlar geralmente objectos de diferentes classes.
A prova de não haver solução é também uma solução.
Parece não ter compreendido o meu problema. Não tem solução.
Porquê bater com a cabeça contra a parede quando há uma porta ao seu lado? O problema do multitemporizador com uma chamada de um manipulador para uma classe externa foi resolvido.
Este colega aqui tem uma solução para o seu problema tal como o vê, mas não pública.
TheXpert: Porquê bater com a cabeça contra a parede quando há uma porta ao seu lado? A tarefa multitemporizada com uma chamada de um manipulador para uma classe externa foi resolvida.
Não se tratava do temporizador. Eu estava apenas a sonhar acordado e estúpido.
É necessário executar o método Timer4 (destacado a azul) da classe CTestTimer
Não entrou nela.
Fórum sobre comércio, sistemas automatizados de comércio e teste de estratégias comerciais
Peculiaridades de mql5, dicas e truques
fxsaber, 2020.05.14 02:57
Consegui-o novamente. Presumo que isto possa ocorrer em situações raras quando se faz um novo registo.
A solução é, se falsa, tentar de novo após uma curta pausa.
Esta é uma má solução. Aqui está uma solução muito melhor.
Se fizer um novo registo manual, esta EA ainda funcionará. Sem a corda realçada, auto-extinguir-se-á.
Não entrou nela.
Obrigado pelo seu tempo. Mas escrevi acima que o método deve ser não-estático. É evidente que isto é possível com métodos estáticos. Um método estático não é de todo um OOP.
Obviamente que eu queria demasiado, ou melhor, impossível.
Fiquei confuso com o facto de ter sido possível fazê-lo em C++, mas ao examiná-lo, compreendi que tal ponteiro tem uma estrutura totalmente diferente,
https://habr.com/ru/post/333334/
E é compreensível.
Um método de classe não estático tem uma única implementação, que fica algures na memória e afecta todos os objectos da classe.
Mas cada objecto tem o seu próprio estado actual único de variáveis internas, pelo que um tal ponteiro para um método não estático deve também ter uma estrutura de parâmetros preenchida do objecto ao qual é aplicado no momento.
Peço desculpa a todos pela perda de tempo.
Precisamos de procurar outras formas de controlar geralmente objectos de diferentes classes.
A prova de não haver solução é também uma solução.
Obrigado pelo seu tempo. Mas escrevi acima que o método deve ser não-estático. É evidente que isto é possível com estática.
Foram-lhe dados dois exemplos acima. um com implementação completa
Parece não ter compreendido o meu problema.
Não tem solução.
Parece não ter compreendido o meu problema.
Não tem solução.
Porquê bater com a cabeça contra a parede quando há uma porta ao seu lado? O problema do multitemporizador com uma chamada de um manipulador para uma classe externa foi resolvido.
Este colega aqui tem uma solução para o seu problema tal como o vê, mas não pública.
Porquê bater com a cabeça contra a parede quando há uma porta ao seu lado? A tarefa multitemporizada com uma chamada de um manipulador para uma classe externa foi resolvida.
Não se tratava do temporizador.
Eu estava apenas a sonhar acordado e estúpido.
Estava apenas a sonhar acordado e estupefacto.
Sou a favor de uma dactilografia completa ou das mesmas ligas em mql, mas é tudo.
É possível distinguir um objecto gráfico criado manualmente de um objecto criado por um indicador ou EA?
Na função
É possível distinguir um objecto gráfico criado manualmente de um objecto criado por um indicador ou EA?
Na função
Pode fazê-lo com o controlo do botão esquerdo do rato.
Por exemplo, como este: