O problema da transferência do MT4 para o MT5. Ou, mais precisamente, a incapacidade de executar alguns algoritmos no MT5 sem errar. - página 3

 
Eugeni Neumoin:

Eu tentei responder à pergunta. Os dados não estão disponíveis.

O registro está na ponta da ferramenta. O código para a ponta da ferramenta é dado. As séries temporais foram geradas. Um gráfico com W1 Timeseries é construído. O Dostap está ausente. A função iBarShift gera um erro. O mesmo erro não é visto no MT4.

Mais uma vez você ignora o pedido de mostrar o código e o resultado do trabalho.

Favor fornecer um código MQL5 reprodutível.

 
Eugeni Neumoin:

Artem, foi você quem apagou meu post no tópico discutindo o artigo. Onde eu respondi ao pedido de um membro do fórum?

Eu estava apenas tocando no tópico levantado neste tópico do fórum. E eu fiquei indignado com esta atitude cavalheiresca. Por isso, criei este tópico do fórum.

======

Eu já tive desacordos neste fórum antes. Você não quer discutir aqui. Há muitos fóruns onde você pode dizer muita coisa sem censura.

Em 2005, um moderador (HQ) fez algo semelhante no fórum Alpari. E então quase todo o fórum se mudou de Alpari para Onyx.

Não, eu não apaguei nada

 
Vladimir Karputov:

Mais uma vez você ignora o pedido de mostrar o código e o resultado do trabalho.

Favor fornecer o código MQL5 reprodutível.

O problema é que o código tem cerca de 50 000 linhas. Não a afixarei publicamente.

A situação é flutuante. Mas... Vou tentar criar outro código. Também não será pequeno.

E isso levará tempo.

Espero que você tenha lido meus links no Guia de Idiomas ao qual me refiro. Diz em preto e branco por alguém da Metakvotes que o acesso aos dados pode ser encerrado a qualquer momento.

Aqui está a citação completa do manual de idiomas:

Disponibilidade de dados.

A disponibilidade de dados no formato HCC ou mesmo no formato HC pronto para uso nem sempre significa que esses dados estejam incondicionalmente disponíveis para exibição em um gráfico ou para uso em programas mql5.

Ao acessar os dados de preços ou valores indicadores dos programas mql5, devemos lembrar que não é garantido que estejam disponíveis em um determinado momento, ou a partir de um determinado ponto no tempo. Isto tem a ver com o fato de que o MetaTrader 5 não armazena a cópia completa dos dados necessários para o programa mql5, mas dá acesso direto ao banco de dados do terminal a fim de economizar recursos.

O histórico de preços para todos os períodos de tempo é construído a partir dos dados comuns no formato HCC e qualquer atualização do servidor leva à atualização dos dados para todos os períodos de tempo e ao recálculo do indicador. Portanto, oacesso aos dados pode ser negado mesmo que esses dados estivessem disponíveis há apenas um momento.

Você também pode fazê-lo de uma maneira mais simples. Eu já tive várias pessoas que compraram este programa. Se eu receber alguma reclamação deles sobre este tópico, publicarei aqui suas mensagens. E que todos saibam que isto é estipulado pelos desenvolvedores da linguagem: oacesso aos dados pode ser negado mesmo que estes dados estivessem disponíveis há um momento atrás.

 
Eugeni Neumoin:


Forneça as configurações do terminal junto com o código: número de barras na tabela.

 
Vladimir Karputov:

Forneça as configurações do terminal junto com o código: número de barras na tabela.

O número de barras é o padrão. Em algum lugar em torno de 100.000. E o acesso é negado nos exemplos acima a 271 barras.

 
Eugeni Neumoin:

O número de barras é por padrão. Em algum lugar em torno de 100.000. E o acesso é negado nos exemplos acima a 271 barras.

Quando se trabalha já em H1, este é um número insignificante de barras.

Assim: código reprodutível, configurações de terminal(número de barras no gráfico).


Sem este mínimo não há simplesmente nada para discutir - como até agora é o ar.

 
Eugeni Neumoin:

O número de barras é por padrão. Em algum lugar em torno de 100.000. E o acesso é negado nos exemplos acima a 271 barras.

A cada dois minutos, precisamos obter dados de todos os prazos e símbolos usados no indicador.

No manipulador OnTimer(), em outras palavras - no temporizador, aplicar uma vez a cada 90 segundos a todos os períodos de tempo, que são necessários para o trabalho do indicador. Você pode usar qualquer função de cópia. Basta obter os dados "no meio do nada", por exemplo, da primeira barra ou da barra atual para cada período de tempo usado. Isto será suficiente para manter todos os dados para todos os prazos atualizados.

E logo no início da OnCalculate() verificar qual a função que acessa os dados dos prazos desejados retorna. Se ele retornar -1, então saia antes do próximo tick.

 
Artyom Trishkin:

A cada dois minutos você deve receber dados de todos os prazos e símbolos usados no indicador.

No manipulador OnTimer(), em outras palavras - no temporizador, a cada 90 segundos, aproximadamente, todos os períodos de tempo necessários para o trabalho do indicador. Você pode usar qualquer função de cópia. Basta obter dados "em lugar nenhum", por exemplo, da primeira barra ou da barra atual para cada um dos períodos de tempo utilizados. Isto será suficiente para manter todos os dados para todos os prazos atualizados.

E logo no início da OnCalculate() verificar o que é retornado pela função, que acessa os dados de prazos desejados. Se -1, então saia antes do próximo tick.

Nenhum problema com a OnCalculate(). A GUI inteira funciona através da OnChartEvent() . Há mais de 400 botões na GUI. Alguns dos botões não interagem de forma alguma com as séries de tempo. Funções OnCalculate() e OnTrade() podem esperar até o próximo tick. Isto não é psicologicamente perceptível. E é mais complicado com a OnChartEvent(). Aqui a psicologia humana está envolvida. O usuário do programa pressiona o botão GUI. E ele não obtém a resposta que deseja. Qual é a reação dele? Uma das reações é que ele/ela aperte o mesmo botão uma segunda vez. Fi-lo de modo que uma segunda pressão em muitos dos botões desabilita a funcionalidade conectada por esse botão. Prevejo sua sugestão de desativar a ação do botão de alguma outra forma. Mas existe o mesmo programa para o MT4. Funciona lá normalmente. O MT4 tem um algoritmo de interação com a interface gráfica, enquanto o MT5 tem um algoritmo diferente. Tal comportamento do mesmo programa só causará rejeição.

Fiz algo semelhante ao traduzir para o MT5 - habilitei a saída do OnChartEvent(). Não quero mentir, é por isso que a GUI estava morrendo.

E no meu caso, a referência às séries cronológicas no OnTimer() ocorre após 5 minutos. Fá-lo-ei após 2 minutos. Vou verificar o que vai acontecer.

Artem, suas sugestões também foram úteis antes.

 
Vladimir Karputov:

Quando já se trabalha em H1, é um número insignificante de barras.

Assim: código reprodutível, configurações de terminal(número de barras no gráfico).


Sem este mínimo não há simplesmente nada para discutir - como até agora é o ar.

Por favor, não interfira mais com os problemas que levanto no fórum.

A comunicação com você não tem sido nada útil antes ou agora.

Você pode escrever algo em outros ramos do fórum. E em minhas filiais, por favor, não participem.

 
Artyom Trishkin:

Fiz todos os prazos a serem acessados a cada dois minutos. A verificação do acesso aos prazos naOnCalculate() não parece causar dificuldades na operação do programa.

Mas a verificação noOnChartEvent() afeta a operação. Em alguns casos, a GUI se recusa a trabalhar.

Vou observar como o programa funciona quando todos os tf's são acessados uma vez a cada dois minutos.

================

A propósito, encontrei mais uma diferença entre o MT5 e o MT4.

A ligação de ferramentas gráficas através de interface gráfica é feita a números de zag-zags extremos ou símbolos de marcação de ondas.

A vinculação é realizada quando o programa "vê" um número ou um símbolo. Deixe-me explicar o que se entende por isso. Quando você paira sobre um número ou símbolo, aparece uma ponta de ferramenta.

Se a ponta da ferramenta aparecer, então o programa "vê" o número ou símbolo. Se não houver uma ponta de ferramenta, o número ou símbolo permanece invisível. A ferramenta gráfica não está anexada. Conseqüentemente, a ferramenta gráfica não é mostrada no gráfico.

Se, por exemplo, o Pitchfork de Andrews já estiver vinculado a este número ou símbolo (eu não o verifiquei com outras ferramentas gráficas), a ponta da ferramenta aparece no MT4. Mas a ponta da ferramenta aparece muito raramente no MT5. Mas se eu esconder o Andrews' Pitchfork ligado ao número dado, a ponta da ferramenta será exibida normalmente.

Tenho a sensação de que se houver alguns outros objetos gráficos próximos ao número, o MT5 será menos sensível ao exibir a ponta da ferramenta. Mas não excluo que isso aconteça porque o MT5 tem que fazer algumas atualizações adicionais de séries cronológicas que não estão disponíveis no MT4. Essas atualizações extras podem estar causando um atraso em algumas das funções do MT5. (Esta é minha fantasia. Não conheço o funcionamento interno do MT5).

Использование аналитических объектов - Графики котировок, технический и фундаментальный анализ - MetaTrader 5
Использование аналитических объектов - Графики котировок, технический и фундаментальный анализ - MetaTrader 5
  • www.metatrader5.com
Определение трендов, построение каналов, выявление циклов и уровней поддержки/сопротивления — все эти и многие другие задачи решаются при помощи аналитических объектов. Всего в торговой платформе доступно 46 таких инструментов. Среди них имеются геометрические фигуры, различные каналы, инструменты Ганна, Фибоначчи, Эллиотта и многое другое. В...
Razão: