Mt4 Fim do apoio. - página 39

 
George Merts:

É discutível que isto é uma vantagem.

Acidentalmente alguém irá mudar a bandeira - e isto afetará o comportamento do TC.

Bem, não há como ficar imune a acidentes. O fator humano é imparável).
 
Реter Konow:

Minha tarefa inicial: Mostrar soluções eficazes sem utilizar o OOP.


A essência da minha solução: - gerar uma gama global de bandeiras de eventos com novas barras de todos os símbolos e prazos, uma vez por minuto.

Vantagens:

1. preenchimento automático da matriz e limpeza automática.

2. Sem carga do sistema.

3. Acesso direto à matriz a partir de qualquer função e salvando a bandeira do evento antes que a matriz seja liberada.

Merda, acordou finalmente....
Você entende que uma barra de qualquer símbolo pode vir a qualquer instante e a tarefa é como se dissesse ao sistema no mesmo instante que uma nova barra chegou. Como você prevê que quando você faz uma pesquisa de opinião sobre o sistema uma vez por minuto?

 
Реter Konow:
Bem, não podemos estar seguros contra acidentes. O fator humano é imparável)).

Aí está. Portanto, acredito que o código deve ser escrito de tal forma que limite ao máximo os possíveis erros humanos. Justamente porque o fator humano é um fator irredutível. Ainda ontem encontrei um erro em meu código, pelo qual as estatísticas sobre o Expert Advisor foram coletadas desde o início da história, e não desde a data especificada (data de criação do Expert Advisor). Eu simplesmente esqueci de inicializar a variável e ela permaneceu zero.

Portanto, agora eu redesenhei o analisador de tal forma que seria necessário especificar a data, a partir da qual a análise seria feita, e a fábrica de peças do Expert Advisor retornaria apenas a data de criação e nenhuma outra.

Agora é impossível analisar o histórico comercial antes da data de criação do Expert Advisor. Mesmo que a versão anterior fizesse negócios - eles não serão incluídos nas estatísticas agora.

 
Nikolai Semko:
Merda, finalmente acordei....
Você percebe que a barra de qualquer símbolo pode vir a qualquer instante e a tarefa é tanto dizer ao sistema, no mesmo instante, que uma nova barra chegou. Como você prevê que quando você faz uma pesquisa de opinião sobre o sistema uma vez por minuto?

Por que "neste exato momento" ???

Vocês, meus amigos, simplesmente têm abordagens diferentes para fazer negócios. Se estamos trabalhando no cronograma M1 - devemos obter a informação de que um novo bar chegou - não "no mesmo instante", mas na chegada de um novo minuto. Se estamos trabalhando no cronograma S1 (olá, Volchansky) - devemos obter esta informação na chegada de um novo segundo. Se estamos trabalhando em cada tique - as informações devem vir com a chegada de um novo tique.

E há a opção "trabalho por evento" - mas então não devemos ter a função IsNewBar(), mas a função OnNewBar(), que na verdade é um "subconjunto" da função OnTick()

 
Nikolai Semko:
Merda, finalmente acordei....
Você percebe que uma barra de qualquer símbolo pode chegar a qualquer momento e a tarefa é tanto dizer ao sistema naquele exato momento que uma nova barra chegou. Como você imagina que isso acontecerá quando você pesquisar o sistema uma vez por minuto?

A função iBars() sempre retornará o número atual de barras. Se tiver mudado desde a última chamada, ele irá comprometer um novo evento de bar para a matriz, se não tiver mudado, ele não irá comprometer.
 
Nikolai Semko:
Merda, acordou finalmente....
Você percebe que qualquer barra de símbolo pode vir a qualquer instante e a tarefa é tanto dizer ao sistema no mesmo instante que uma nova barra entrou. Como você prevê que quando você faz uma pesquisa de opinião sobre o sistema uma vez por minuto?

Entendo. Portanto, o bar pode não chegar quando o iBars é solicitado, mas pode chegar um momento após o pedido. Então, o sistema não será utilizado. Essa é a questão.


E depois, para ser acessado continuamente? - Claramente não é a melhor solução.

 
Реter Konow:

Entendo. Portanto, o bar pode não vir no momento da votação, mas virá um momento depois da votação. Então, o sistema não será utilizado. Essa é a questão.

Peter, sugiro outro tópico para discussão, pela segunda vez. Não há necessidade de escrever nada, apenas teoria.

Fórum sobre comércio, sistemas comerciais automatizados e estratégias comerciais de teste

Suporte final Mt4.

Alexey Viktorov, 2017.09.11 13:08

Acho que encontrei um exemplo primitivo da usabilidade do OOP. Aqui está uma função para preencher uma matriz com um valor especificado. Há oito variedades, dependendo do tipo de matriz.

Imagine que você precisa escrever uma função que precisa passar um conjunto de parâmetros, depois outro, depois um terceiro... Usando a abordagem algorítmica, você terá N nomes de funções diferentes. Parece que não há nada de errado, você pode escrever 8 funções como ArrayInitializeInt()ArrayInitializeDouble() e assim por diante. Mas é tão bom não ter que pensar no tipo de matriz, basta usar uma função em qualquer caso, e seria seguro misturar qual matriz você colocou lá...


Документация по MQL5: Операции с массивами / ArrayInitialize
Документация по MQL5: Операции с массивами / ArrayInitialize
  • www.mql5.com
Операции с массивами / ArrayInitialize - справочник по языку алгоритмического/автоматического трейдинга для MetaTrader 5
 
Alexey Viktorov:

Peter, sugiro outro tópico para discussão, pela segunda vez. Não há necessidade de escrever nada, apenas teoria.


Por favor, aguarde um pouco. Compreenderemos totalmente este tópico e lerei cuidadosamente o segundo.
 
Реter Konow:
Só um momento, por favor. Compreenderemos totalmente este tópico e darei uma olhada de perto no segundo.

Como você se lembra, o tópico do novo bar foi trazido à tona para descobrir os prós do OOP, mas de forma alguma opções de programação, muito menos suas habilidades. Mas as observações ao seu código e algoritmo em geral viraram a discussão na direção errada. Portanto, acho que não há necessidade de continuar.

 
Alexey Viktorov:

Como você se lembra, o tópico do novo bar foi levantado para descobrir os prós do OOP, mas não as opções de programação, muito menos suas habilidades. Mas as observações ao seu código e algoritmo em geral viraram a discussão na direção errada. Portanto, acho que não há necessidade de continuar.

Ou seja, você quer que eu continue a destruir as vantagens do OOP, e todos continuaram a me perseguir?) Mas você está basicamente certo. A discussão foi na direção errada.