Emulação de carrapatos de um EA/indicador - página 2

 
Meat:

Seu código, antes de tudo, não apenas emula um tick, mas força o gráfico a ser atualizado com o histórico correspondente a cada tick. Você às vezes até mesmo olha para o arquivo de registro? À sua vontade, dê uma olhada e veja o que está acontecendo lá. E estimar o que estará lá em um dia ou algo assim. Para não mencionar a carga em seu sistema e canal de Internet.

Se, em vez de atualizar a tabela em seu código, emularmos o carrapato, isso levará a loops (ou seja, o indicador começará sem parar), e, conseqüentemente, o terminal ficará pendurado.

Por que eu preciso me atualizar sem histórico de carga? A atualização forçada da tabela é uma emulação de carrapatos.

Aqui está o registro depois de 2500 ticks:

00:51:32 Check_UpdateChart EURUSD,M1: carregado com sucesso
00:52:48 Check_UpdateChart EURUSD,M1: uninit reason 1
00:52:48 Check_UpdateChart EURUSD,M1: removido

Nada está pendurado. A emulação é feita para que o indicador faça loop. Em outras palavras, ela se desencadeia a si mesma.
 
Zhunko:

Por que você precisa atualizar sem histórico de carga? Forçar o gráfico a ser atualizado é emulação de carrapatos.

Aqui está o registro depois de 2500 ticks:

00:51:32 Check_UpdateChart EURUSD,M1: carregado com sucesso
00:52:48 Check_UpdateChart EURUSD,M1: uninit reason 1
00:52:48 Check_UpdateChart EURUSD,M1: removido

Nada está pendurado. A emulação é feita para que o indicador faça loop. Ou seja, ela começa por si mesma.


Pensei tê-lo escrito claramente: "diário de bordo". Então por que você me mostra os logs dos especialistas? Aparentemente, eu estava certo, você nunca olha lá. Eu não ficaria surpreso se você tivesse metade do seu disco rígido preenchido com esses logs :)

A atualização do histórico e a emulação de carrapatos são coisas diferentes. Os carrapatos recebidos do servidor não atualizam o histórico (ou seja, barras anteriores). Se isso estivesse acontecendo, o terminal estaria desperdiçando muito tráfego e recursos.

Portanto, não está claro porque você precisa atualizá-lo a cada tick, o que repõe o IndicatorCounted() a zero, e assim requer a verificação de todo o histórico em cada tick. Isso é um desperdício de muitos recursos.

 
Meat:

Os tiquetaques que chegam do servidor não atualizam o histórico (ou seja, barras anteriores). Se o fizessem, o terminal consumiria muito tráfego e recursos.

O que fazer, se por exemplo 1 barra = 2 carrapatos )))))? No meu caso, carrapatos atualizam o histórico ?
 
IgorM:

colocado após

Consegui isso no diário de bordo:

23:39:01 teste EURUSD,H1: carregado com sucesso
23:39:01 teste EURUSD,H1: PostMsgAddr =1977398342
23:39:01 teste EURUSD,H1: inicializado
23:39:01 teste EURUSD,H1: ciclo completo

Sim, não está claro o que está acontecendo... Tente isto então: Na seção de importação #importar"user32.dll" adicionar uma função:

CallWindowProcA(int lpPrevWndFunc[], int hWnd, int Msg, int wParam, int lParam);

E ao final da função SetMyTimer adicionar uma linha: CallWindowProcA(code,0,0,0,0,0);

E com alguma verificação do indicador de funcionamento paralelo se um tick é gerado neste momento.

 
solar:
E se eu tiver por exemplo 1 barra = 2 carrapatos ))))) No meu caso, os carrapatos atualizam o histórico ?
Claro que a barra atual é sempre atualizada, mas estávamos falando de história em geral.
 
Meat:


Eu o escrevi claramente: "o tronco". Então por que você está me mostrando o registro do Expert Advisor? Aparentemente eu estava certo, você nunca olha lá - não me surpreende se metade do seu disco rígido já estiver recheado com esses registros :)

E não confunda os conceitos.Atualização da história e emulação de carrapatos são coisas diferentes. Os tiquetaques recebidos do servidor não atualizam o histórico (ou seja, barras anteriores). Se o fizessem, o terminal comeria enormes quantidades de tráfego e recursos.

Portanto, não está claro porque você precisa atualizá-lo a cada tick, o que repõe o IndicatorCounted() a zero, e assim requer a verificação de todo o histórico em cada tick. Isso é um desperdício de muitos recursos.

O tronco também está vazio, mas por alguma outra razão. Eu uso o limpador de console após a troca do histórico. Eu tenho meu próprio diário de bordo.

O registro MT4 não me incomoda em nada. A Metacquotes tem afirmado repetidamente que o corte de madeira é a última coisa a ser feita. Não é uma prioridade. Não consome nenhum recurso. Só precisa ser limpa a tempo, só isso.

Quanto ao IndicatorCounted()... Eu não o uso. Meus Indicadores são caixas vazias para retirar informações do Expert Advisor. Acho prejudicial o uso de indicadores no MT4. Os fios de interface são lentos e funcionam 3 vezes mais lentamente do que os Expert Advisors.

Destacado está correto, é claro, mas vale tanto a pena se preocupar com a separação?

Aqui está o diário de bordo para 415 atualizações:

03:00:44 Indicador personalizado Check_UpdateChart EURUSD,M1: carregado com sucesso
03:00:46 HistoryCenter: sincronizar o 'EURUSD1
03:00:46 HistoryCenter: 2 barras importadas em 'EURUSD1'.
03:00:47 HistoryCenter: sincronizar o 'EURUSD1'.
03:00:47 HistoryCenter: 2 barras importadas em 'EURUSD1'.
03:00:47 HistoryCenter: sincronizar o 'EURUSD1'.
03:00:47 HistoryCenter: 2 barras importadas em 'EURUSD1'.
03:00:48 HistoryCenter: sincronizar o 'EURUSD1'.
03:00:48 HistoryCenter: 2 barras importadas em 'EURUSD1'.
03:00:48 HistoryCenter: sincronizar o 'EURUSD1'.
03:00:49 HistoryCenter: 2 barras importadas em 'EURUSD1'.
03:00:49 HistoryCenter: sincronizar o 'EURUSD1'.
03:00:49 HistoryCenter: 2 barras importadas em 'EURUSD1'.
03:00:50 HistoryCenter: sincronizar o 'EURUSD1'.
03:00:50 HistoryCenter: 2 barras importadas em 'EURUSD1'.
03:00:51 HistoryCenter: sincronizar o 'EURUSD1'.
03:00:51 HistoryCenter: 2 barras importadas em 'EURUSD1'.
03:00:51 HistoryCenter: sincronizar o 'EURUSD1'.
03:00:52 HistoryCenter: 2 barras importadas em 'EURUSD1'.
03:00:52 HistoryCenter: sincronizar o 'EURUSD1'.
03:00:55 HistoryCenter: 2 barras importadas em 'EURUSD1'.
03:00:55 HistoryCenter: sincronizar o 'EURUSD1'.
03:00:55 HistoryCenter: 2 barras importadas em 'EURUSD1'.
03:00:55 HistoryCenter: sincronizar o 'EURUSD1'.
03:00:55 HistoryCenter: 2 barras importadas em 'EURUSD1'.
03:00:55 HistoryCenter: sincronizar o 'EURUSD1'.
03:00:56 HistoryCenter: 2 barras importadas em 'EURUSD1'.
03:00:56 HistoryCenter: sincronizar o 'EURUSD1'.
03:00:57 Indicador personalizado Check_UpdateChart EURUSD,M1: removido
03:00:59 HistoryCenter: 2 barras importadas em 'EURUSD1'.
03:01:01 MetaTrader build 438 parado

Não me parece importante para testar o desempenho do indicador durante o fim de semana. O tronco pode ser limpo manualmente após o trabalho.

Mas é mais fácil inserir uma linha de código no final do início() do que inserir seu código. Não há sentido em complicar.

 

Eu tenho XP - parece funcionar - então ele quebra o terminal ....

Seja no código indicador - ou no código EA - ou por si só - o resultado é o mesmo - o terminal trava após cerca de 15 - 50 segundos ...

Então, você tem algo errado...

mas não é uma má idéia ...

 

Existe alguma maneira de torná-lo semelhante para um indicador?

Simplesmente apontando o cursor para o ponto no tempo em que eu quero ver a leitura do indicador (nesse ponto)?

 

Zhunko, bem, se tudo não é padrão (seu próprio registro, sua própria implementação de indicadores, etc.), então por que você está começando toda esta conversa? Na verdade, estamos discutindo o trabalho especificamente com o MT4, não com nossos próprios desenvolvimentos.

Em meu primeiro post eu indiquei especificamente que meu código será útil se a tarefa for fazer sem links externos, ou seja, implementar um Expert Advisor/indicador auto-suficiente que usa apenas bibliotecas de sistema. E se você estiver usando seus próprios desenvolvimentos, então ele não é aplicável a você.

E, em geral, não entendo por que tenho que "limpar manualmente o tronco depois do trabalho", se é mais fácil não desarrumá-lo. Afinal, pelo que entendi, você implementa seus desenvolvimentos em DLL. Então o que o impede de instalar ali o mesmo temporizador, como eu sugeri aqui. Mas por alguma razão você prefere todo tipo de dança com pandeiro e limpeza do tronco. Meu código o incomoda, enquanto você é preguiçoso demais para limpar o tronco todos os dias :)

 
elmucon:

Eu tenho XP - parece funcionar - então ele quebra o terminal ....

Seja no código indicador - ou no código EA - ou por si só - o resultado é o mesmo - o terminal trava após cerca de 15 - 50 segundos ...

Então, você tem algo errado...

mas não é uma má idéia ...


Sim, talvez seja um pouco exagerado. Eu não sou muito especialista em montagem, então não me julgue muito severamente :) Vou tentar descobrir qual é o problema.
Razão: