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 12

 
Vict:

O fxsaber está correto - há uma opção

É um pouco kitschy - EXPR será calculado duas vezes, mas ainda é mais flexível. Não se pode dizer que seja universal (somente para tipos aritméticos. O valor do erro deve ser igual, o que é desagradável. Tentei trabalhar em torno dela através de uma estrutura/especialização funcional explícita, mas isso não é possível.

Saudações!

Eu gostaria de abrir um novo tópico, não posso formular o problema... Eu tenho problemas com isso )))) Mas o material é bastante fresco e interessante

Você fez um ótimo trabalho, gostaria de finalizá-lo - a usabilidade (@fxsaber tem todo seu trabalho uma vez conectado com um inluder) é prática!

E para que tudo pareça profissional, você deve usar (ou chegar perto) a sintaxe C++ / C#.

 
Artyom Trishkin:

Posso lhe dar minha opinião:

Vamos fazer com calma a partir do que temos no momento, não choramingar, ajudar a encontrar bugs e perguntar com a expectativa de consertos - eles são consertados e novas e boas características aparecem.

Eu concordo com esta abordagem.

---------

Já tive, em parte, algum tipo de cache das primeiras versões. Ou seja, criei arrays com tempo, valores de mínimos e valores de máximos para os primeiros 10 ziguezagues extremos.

Na versão para MT5, também acrescentei uma matriz contendo números de barras. Para os primeiros 10 extremos. Isto ajuda na maioria dos casos. Somente as amarrações não padronizadas são afetadas na MT5.

Não vou criar um cache completo do histórico disponível para todos os 21 períodos de tempo. A memória de seu computador não será suficiente com esta abordagem.

Para compreensão: alguns entusiastas exibem até 9 indicadores para MT4 em um gráfico. Há muitos gráficos para vários pares de moedas abertos ao mesmo tempo. E todos eles têm 9 cópias do indicador. Esta aplicação do indicador é implementada para o sistema DML&EWA criado pela Putniuk. Ele próprio produziu até 72 instâncias do indicador. Ou seja, em 8 pares de moedas.

Ao utilizá-lo desta forma, um cache adicional de 21 TFs junto com 28 buffers carregarão muito a memória.

Isto é apenas levando em conta a carga de memória. É muito cansativo redesenhar um grande código para usar o cache em vez das funções iTime, iLow, iHight, iClose, iBarShift

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

Eu já passei por tais maratonas várias vezes.

1. Uma maratona sobre a inclusão de vários indicadores externos em ziguezague no corpo do programa principal. Livrou-se dos indicadores externos para que o mercado aceitasse o programa.

2. Conversão de todos os zig-buffers de um tampão em zig-buffers de dois tampões. Isto levou cerca de meio ano.

3. Criação da interface gráfica. Levou um total de algures em 2 anos. Cerca de 3 anos. E há idéias mais interessantes para a interface gráfica. Mas eu ainda não tenho coragem suficiente para implementá-los.

4. Originalmente tentou traduzir de MT4 para MT5 um ano atrás. Não tive sucesso na época. Eu posso fazer isso agora. Mas eu não estou satisfeito com a qualidade da tradução.

Houve outras maratonas também.

A criação de um cache pode levar a um beco sem saída. É perigoso mexer com...

------------

Artem, sua abordagem (citada acima) é totalmente apoiada.

 
Mais uma vez, aqui está uma citação do primeiro post:

...citação do guia de idiomas MQL5. Sob o título Organização do acesso aos dados.

"...Acessibilidade dos dados

A disponibilidade de dados no formato HCC ou mesmo no formato HC ready nem sempre significa a disponibilidade incondicional desses dados para exibição em um gráfico ou para uso em programas de mql5.

Ao acessar dados de preços ou valores indicadores de programas mql5, deve-se ter em mente que não é garantido que eles estejam disponíveis em um determinado momento, ou a partir de um determinado momento...".

--------------

O problema permanece.

O programa tem várias centenas de acessos ao histórico de cotações em diferentes partes do programa. A listagem do programa contém cerca de 50 000 cordas.

Às vezes, devido às especificidades do acesso ao histórico, o valor -1 é devolvido. A conseqüência disto é um erro - uma matriz ultrapassada. Há também outros erros. Em alguns fragmentos do programa eu verifiquei se -1 é devolvido ao acessar o histórico. Ao receber -1 neste caso, os itens individuaisdas construções gráficas não são desenhados. Se adicionarmos algumas centenas de cheques ao código, isso causará atrasos que já existem devido às peculiaridades de acesso ao histórico.

Também é possível criar um programa para o MT5. Mas isso requer a mudança de toda a arquitetura. Eu não tenho tempo para tais explorações.

Decidi que não há necessidade em uma tarefa tão inútil. O programa funciona no MT4. Não estou planejando mudar para o MT5. Eu fiz o ZUP para MT5 grátis.

Eu fiz o ZUP gratuitamente para o MT5. Todos que quiserem podem baixá-lo e ver como ele funciona no MT5. E também compará-la com a minha versão no MT4.

Agora estou pronto com o MT5. É apenas uma perda de tempo.

Eu postei mensagens similares em alguns outros fóruns.

 
Renat Fatkhullin:
E você pode demonstrar de forma reprodutível a inacessibilidade dos dados?

Você afirma sem provas reprodutíveis.

O servicedesk descreve como reproduzir o problema. O código fonte para reproduzir o problema também está lá.

==========

Texto da documentação da MQL5 https://www.mql5.com/ru/docs/series/timeseries_access :

Disponibilidade de dados

A disponibilidade de dados no formato HCC ou mesmo no formato HC pronto para uso nem sempre significa a disponibilidade incondicional desses dados 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 se deve ao 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.


Este texto, traduzido para o russo, significa o seguinte. Não importa o que você faça a qualquer momento, o acesso aos dados pode não estar disponível.

Ou seja, não há como evitar erros devido à interrupção do acesso aos dados.

É assim que eu entendo este texto.

Документация по MQL5 - справочник по языку алгоритмического/автоматического трейдинга для MetaTrader 5
Документация по MQL5 - справочник по языку алгоритмического/автоматического трейдинга для MetaTrader 5
  • www.mql5.com
MetaQuotes Language 5 (MQL5) - язык программирования технических индикаторов, торговых роботов и вспомогательных приложений для автоматизации торговли на финансовых рынках. MQL5 является современным языком высокого уровня и разработан MetaQuotes Software Corp. для собственной торгово-информационной платформы. Синтаксис языка максимально близок...
Razão: