Suponha que trabalho com vários símbolos num Expert Advisor ou indicador, ou melhor, com todos os símbolos que são exibidos na janela do Market Watch.
A tarefa é apanhar o momento de um novo tique em qualquer um dos símbolos.
Até agora só vejo um par de opções:
Através de um temporizador com sondagem de todos os símbolos. (claro, só se pode sondar o novo valor deTimeCurrent(), mas neste caso o erro será de 1 segundo, porque esta função retorna um valor em segundos)
em cada símbolo no OnTick (ou OnCalculate) para gerar um evento personalizado através do EventChartCustom
A desvantagem da primeira opção é a não optimização em termos de recursos e relevância dos dados. O OnTimer martelará principalmente em modo inativo, e quando apanha uma nova citação, o erro da hora de chegada será igual à periodicidade do temporizador.
A desvantagem da segunda variante é a complexidade, especialmente se houver dezenas de símbolos.
Compreendo correctamente que não existem outras opções (mais simples e mais elegantes)? Ou (espero) estarei eu errado?
Suponha que trabalho com vários símbolos num Expert Advisor ou indicador, ou melhor, com todos os símbolos que são exibidos na janela do Market Watch.
A tarefa é apanhar o momento de um novo tique em qualquer um dos símbolos.
Até agora, só consigo ver algumas opções:
Através de um temporizador com sondagem de todos os símbolos. (claro, só se pode sondar o novo valor deTimeCurrent(), mas neste caso o erro será de 1 segundo, porque esta função retorna um valor em segundos)
em cada símbolo no OnTick (ou OnCalculate) para gerar um evento personalizado através do EventChartCustom
A desvantagem da primeira opção é a não optimização em termos de recursos e relevância dos dados. O OnTimer martelará principalmente em modo inativo, e quando apanha uma nova citação, o erro da hora de chegada será igual à periodicidade do temporizador.
A desvantagem da segunda variante é a complexidade, especialmente se houver dezenas de símbolos.
Compreendo correctamente que não existem outras opções (mais simples e mais elegantes)? Ou (espero) estarei eu errado?
Instrumentos sintéticos com citações em tempo real
A plataforma de negociação permite-lhe criar instrumentos financeiros sintéticos - instrumentos baseados em um ou mais instrumentos existentes. Basta definir uma fórmula para calcular as citações e a plataforma irá gerar as carraças do instrumento sintético em tempo real e também criar o seu histórico minucioso. Como funciona
Cria-se um instrumento sintético e define-se a fórmula para ele. A plataforma calculará as suas carraças com uma frequência de 10 vezes por segundo (e apenas se o preço de pelo menos um instrumento na fórmula mudar).
Instrumentos sintéticos com citações em tempo real
A plataforma de negociação permite-lhe criar instrumentos financeiros sintéticos - instrumentos baseados em um ou mais instrumentos existentes. Basta especificar a fórmula de cálculo das cotações e a plataforma gerará as carraças do instrumento sintético em tempo real e criará o seu histórico minucioso. Como funciona
Cria-se um instrumento sintético e define-se a fórmula para ele. A plataforma calculará as suas carraças com uma frequência de 10 vezes por segundo (e apenas se o preço de pelo menos um instrumento na fórmula tiver mudado).
Sim, é claro, essa variante também tem direito à vida. Obrigado! Mas, na realidade, é o mesmo que a minha variante #1 com periodicidade de 100 ms e com as mesmas desvantagens.
A opção 2 parece-me, no entanto, mais racional.
A propósito, lembrei-me que a opção 2 já foi aqui discutida.
Sim, é claro, esta variante também tem direito à vida. Obrigado! No entanto, em essência, é o mesmo que a variante #1 acima com período de tempo de 100 ms.
Não seria mais fácil fazer uma EA ligada ao símbolo sobre o qual está a trabalhar. Em seguida, abrir todos os símbolos e aplicar o modelo com esta EA a cada gráfico.
SEM: Não seria mais fácil fazer uma EA ligada ao símbolo sobre o qual está a trabalhar. Depois abrir todos os símbolos, e para cada gráfico aplicar um modelo com esta EA.
É evidente que o podemos fazer. A questão é que eu não sei alguma coisa e é possível traçar o momento exacto de chegada da citação para outro símbolo através do código de apenas uma EA multimoeda. Mas parece que a variante 2, através de interrupções personalizadas, é a única solução racional.
Sim, é evidente que pode ser feito dessa forma. A questão é que não sei algo, e é possível apanhar o momento exacto da citação de outro símbolo através do código de apenas um Expert Advisor multimoedas. Mas parece que a variante 2, através de interrupções personalizadas, é a única solução racional.
via temporizador com sondagem de todos os caracteres. (Claro, poderia apenas sondar o novo valor deTimeCurrent(), mas neste caso o erro seria de 1 segundo, porque esta função devolve um valor em segundos).
Estou correcto ao assumir que não há outras opções (mais simples e mais elegante)? Ou (espero) estarei eu errado?
O temporizador Millisecond + SymbolInfoTick() receberá o tempo em milissegundos.
Sim, já dei este link para a vossa implementação no correio 22214. Volto a dizê-lo - penso que esta variante é a mais razoável até agora. E parece não haver melhor implementação em termos de carga mínima de CPU e relevância do momento resultante de um novo tick.
через таймер c опросом всех символов. (можно, конечно, только опрашивать новое значение функции TimeCurrent(), но в этом случае погрешность будет равна 1 секунде, т.к. эта функция возвращает значение в секундах)
Я правильно понимаю, что других вариантов (более простых и изящных) не существует? Или (надеюсь) я не прав?
Millisecond timer + SymbolInfoTick() obtêm o tempo em milissegundos.
Alexey Kozitsyn:
Millisecond timer + SymbolInfoTick() obtêm tempo em milissegundos.
É a variante 1. referia-se a tal construção (Millisecond timer + SymbolInfoTick() loop). MencioneiTimeCurrent() porque devolve"a hora de chegada da última cotação para qualquer símbolo disponível na janela do Market Watch", não só para o símbolo actual, mas infelizmente devolve apenas segundos, o que é muito rude para carraças. Objectivamente, a variante com interrupções do utilizador é mais razoável, porque não há necessidade de organizar um loop com a cara função SymbolInfoTick constantemente, mesmo quando as aspas estão a dormir, carregando assim o processador com tempo de inactividade. Além disso, o erro de cálculo de um novo tick pode ser igual à periodicidade do temporizador, e todas as ticks serão perdidas entre a execução do OnTimer, se tais ticks forem mais de 1.
SZZ Estamos a falar de mql5. Em mql4, as interrupções do utilizador não funcionam correctamente. Portanto, o mql4 só pode utilizar o temporizador.
Reprodução estável ? Que construção?
Pergunta.
Suponha que trabalho com vários símbolos num Expert Advisor ou indicador, ou melhor, com todos os símbolos que são exibidos na janela do Market Watch.
A tarefa é apanhar o momento de um novo tique em qualquer um dos símbolos.
Até agora só vejo um par de opções:A desvantagem da primeira opção é a não optimização em termos de recursos e relevância dos dados. O OnTimer martelará principalmente em modo inativo, e quando apanha uma nova citação, o erro da hora de chegada será igual à periodicidade do temporizador.
A desvantagem da segunda variante é a complexidade, especialmente se houver dezenas de símbolos.
Compreendo correctamente que não existem outras opções (mais simples e mais elegantes)? Ou (espero) estarei eu errado?
Pergunta.
Suponha que trabalho com vários símbolos num Expert Advisor ou indicador, ou melhor, com todos os símbolos que são exibidos na janela do Market Watch.
A tarefa é apanhar o momento de um novo tique em qualquer um dos símbolos.
Até agora, só consigo ver algumas opções:A desvantagem da primeira opção é a não optimização em termos de recursos e relevância dos dados. O OnTimer martelará principalmente em modo inativo, e quando apanha uma nova citação, o erro da hora de chegada será igual à periodicidade do temporizador.
A desvantagem da segunda variante é a complexidade, especialmente se houver dezenas de símbolos.
Compreendo correctamente que não existem outras opções (mais simples e mais elegantes)? Ou (espero) estarei eu errado?
Talvez isto ajude? https://www.metatrader5.com/ru/terminal/help/trading_advanced/custom_instruments
Instrumentos sintéticos com citações em tempo realA plataforma de negociação permite-lhe criar instrumentos financeiros sintéticos - instrumentos baseados em um ou mais instrumentos existentes. Basta definir uma fórmula para calcular as citações e a plataforma irá gerar as carraças do instrumento sintético em tempo real e também criar o seu histórico minucioso.
Como funciona
Cria-se um instrumento sintético e define-se a fórmula para ele.
A plataforma calculará as suas carraças com uma frequência de 10 vezes por segundo (e apenas se o preço de pelo menos um instrumento na fórmula mudar).
Talvez isto ajude? https://www.metatrader5.com/ru/terminal/help/trading_advanced/custom_instruments
Instrumentos sintéticos com citações em tempo realA plataforma de negociação permite-lhe criar instrumentos financeiros sintéticos - instrumentos baseados em um ou mais instrumentos existentes. Basta especificar a fórmula de cálculo das cotações e a plataforma gerará as carraças do instrumento sintético em tempo real e criará o seu histórico minucioso.
Como funciona
Cria-se um instrumento sintético e define-se a fórmula para ele.
A plataforma calculará as suas carraças com uma frequência de 10 vezes por segundo (e apenas se o preço de pelo menos um instrumento na fórmula tiver mudado).
Sim, é claro, essa variante também tem direito à vida. Obrigado!
Mas, na realidade, é o mesmo que a minha variante #1 com periodicidade de 100 ms e com as mesmas desvantagens.
A opção 2 parece-me, no entanto, mais racional.
A propósito, lembrei-me que a opção 2 já foi aqui discutida.
Sim, é claro, esta variante também tem direito à vida. Obrigado!
No entanto, em essência, é o mesmo que a variante #1 acima com período de tempo de 100 ms.
Não seria mais fácil fazer uma EA ligada ao símbolo sobre o qual está a trabalhar. Em seguida, abrir todos os símbolos e aplicar o modelo com esta EA a cada gráfico.
Não seria mais fácil fazer uma EA ligada ao símbolo sobre o qual está a trabalhar. Depois abrir todos os símbolos, e para cada gráfico aplicar um modelo com esta EA.
É evidente que o podemos fazer. A questão é que eu não sei alguma coisa e é possível traçar o momento exacto de chegada da citação para outro símbolo através do código de apenas uma EA multimoeda.
Mas parece que a variante 2, através de interrupções personalizadas, é a única solução racional.
Sim, é evidente que pode ser feito dessa forma. A questão é que não sei algo, e é possível apanhar o momento exacto da citação de outro símbolo através do código de apenas um Expert Advisor multimoedas.
Mas parece que a variante 2, através de interrupções personalizadas, é a única solução racional.
Implementação.
Estou correcto ao assumir que não há outras opções (mais simples e mais elegante)? Ou (espero) estarei eu errado?
O temporizador Millisecond + SymbolInfoTick() receberá o tempo em milissegundos.
Implementação.
Я правильно понимаю, что других вариантов (более простых и изящных) не существует? Или (надеюсь) я не прав?
Millisecond timer + SymbolInfoTick() obtêm o tempo em milissegundos.
Alexey Kozitsyn:
Millisecond timer + SymbolInfoTick() obtêm tempo em milissegundos.
Objectivamente, a variante com interrupções do utilizador é mais razoável, porque não há necessidade de organizar um loop com a cara função SymbolInfoTick constantemente, mesmo quando as aspas estão a dormir, carregando assim o processador com tempo de inactividade. Além disso, o erro de cálculo de um novo tick pode ser igual à periodicidade do temporizador, e todas as ticks serão perdidas entre a execução do OnTimer, se tais ticks forem mais de 1.