Discussão do artigo "ZigZag universal"

 

Novo artigo ZigZag universal foi publicado:

O Zigzag é um dos indicadores mais populares entre os usuários MetaTrader 5. No artigo, foram analisadas as possibilidades de criar diferentes variações do ZigZag. Como resultado, obtivemos um indicador universal com amplas possibilidades para estender recursos de fácil uso durante o desenvolvimento de Expert Advisor e outros indicadores.

O Zigzag é um dos indicadores mais populares entre os usuários MetaTrader 5. Até à data, tem sido desenvolvidas uma muitas variantes deste indicador. No entanto, algumas delas são demasiado lentas, daí que sejam inadequadas para a criação de Experts Advisors. Outras retornam permanentemente erros, o que torna difícil usá-las mesmo para acompanhamento visual. É importante dizer que mesmo os indicadores que trabalham rápido e sem erros têm dificuldades ao serem usados para desenvolvimento de Experts ou outros indicadores. Na verdade, o Zigzag não permite extrair e interpretar facilmente suas leituras.


Fig. 1. Indicador ZigZag

Autor: Dmitry Fedoseev

 

Já que finalmente temos um indicador OOP, qual é o sentido de chamá-lo a partir do Expert Advisor (iCustom), quando podemos criar um objeto de indicador calculado no próprio Expert Advisor e acessar os vértices por meio de um determinado operador []? Dessa forma, deve ser mais rápido.

Não há ticks suficientes nos dados de origem. Provavelmente, todos os artigos atuais (com a aparência de uma implementação CopyTicks rápida e sem bugs) devem levar esse fato em consideração. Não podemos fingir que temos apenas barras.

Obrigado pelo artigo. Para iniciantes, ele é provavelmente o melhor.

 
fxsaber:

1. Já que finalmente temos um indicador OOP, qual é o sentido de chamá-lo a partir do Expert Advisor (iCustom), quando podemos criar um objeto indicador calculado no próprio Expert Advisor e acessar os vértices por meio de um determinado operador []? Dessa forma, deve ser mais rápido.

2. Não há ticks suficientes nos dados de origem. Provavelmente, todos os artigos agora (com a aparência de uma implementação rápida e sem bugs do CopyTicks) devem levar esse fato em consideração. Não podemos fingir que temos apenas barras.

3. Para o artigo Obrigado. Para iniciantes, provavelmente é um bom artigo.

1) Essa é uma ideia errada. O indicador funciona usando buffers de indicador e os parâmetros rates_total e prev_calculate. O objetivo do indicador é usar buffers. Não há buffers de indicador no Expert Advisor, assim como rates_total e prev_calculate.

2. Eu discordo. É uma questão pessoal. Em geral, a questão é apenas que devemos recalcular os ticks em cada barra.

3. Surge uma questão filosófica: quem é um iniciante?

 
Dmitry Fedoseev:

1. essa é uma ideia errada. O indicador funciona usando buffers de indicador e os parâmetros rates_total e prev_calculate. O objetivo do indicador é usar buffers. Não há buffers de indicador no Expert Advisor, assim como não há rates_total e prev_calculate.

Por que o objeto ZZ não pode ser uma fonte de dados completa para o Expert Advisor? Para criar diferentes entidades (diferentes programas) e depois conectá-las por meio do iCustom, é mais fácil criar um objeto diretamente no Expert Advisor. Quanto menos "detalhes", mais confiável é o "mecanismo".

Mas esse provavelmente é um argumento eterno. A OOP apenas a inclina ainda mais para um lado.

2. Eu discordo. É uma questão pessoal. E, de qualquer forma, a questão é que os ticks devem ser recalculados em cada barra.

Os ticks devem ser ignorados.

3. Surge uma questão filosófica: quem é um iniciante?

Quem pode achar este artigo útil?
 
fxsaber:

1. Por que o objeto ZZ não pode ser uma fonte de dados completa para o Expert Advisor? Para criar diferentes entidades (diferentes programas) e depois conectá-las por meio do iCustom, é mais fácil criar um objeto diretamente no Expert Advisor. Quanto menos "detalhes", mais confiável será o "mecanismo".

2. Mas essa é provavelmente uma disputa eterna. A OOP apenas a inclina ainda mais para um lado.

3. Deu ticks para ignorar.

Quem pode se beneficiar com este artigo.

1. A OOP não tem nada a ver com a solução desse problema. Além disso, a fonte de dados mais completa para o Expert Advisor é o indicador. O Expert Advisor não oferece os recursos funcionais para o processamento de séries temporais que o indicador oferece.

2. O problema da OOP é que muitos programadores adultos não a estudaram quando crianças e, portanto, têm dificuldades para entendê-la e aplicá-la.

3. Onde está o gráfico de ticks? Deve haver um gráfico de ticks. Se não houver um gráfico de ticks, a criação de indicadores em gráficos de ticks é um processo artesanal.

4. Pode ser útil para todos. Essa é a quintessência do ziguezague :) Na minha opinião, o valor do artigo não está no fato de a OOP ser aplicada nele. A parte com OOP é uma parte de rotina sem nenhum valor especial, na minha opinião. Mas o início do artigo, onde a criação de um indicador por hi-lo e por cloze é considerada, vale a pena ser lido por todos (com raras exceções).

 
Dmitry Fedoseev:

1. A OOP não tem nada a ver com a solução desse problema. Além disso, a fonte de dados mais completa para o Expert Advisor é o indicador. O Expert Advisor não oferece os recursos funcionais para processar séries temporais que o indicador oferece.

Pelo menos um argumento. A única coisa que eles gostam de repetir é a preparação garantida de séries temporais em indicadores ao entrar no OnCalculate. E o OnTick não tem essa garantia. Ela é de apenas 99,99999999% no OnTick, não 100%.

2. O problema da OOP é que muitos programadores adultos não a estudaram quando crianças e, portanto, têm dificuldades para entendê-la e aplicá-la.

Um indicador é um objeto. A OOP também permite que você crie objetos. Mas não para criar entidades adicionais na forma de programas separados.

3. Onde está o gráfico de ticks? Deve haver um gráfico de ticks. Se não houver um gráfico de ticks, a criação de indicadores em gráficos de ticks é um processo artesanal.

O que um gráfico de ticks e os dados iniciais na forma de ticks têm a ver com isso? Um Expert Advisor não se importa com a existência ou não de gráficos. E se um indicador for capaz de analisar o histórico de ticks, isso significa que ele foi construído com base em ticks. E a falta de visualização é um alô para o VPS. Ou seja, ela não é necessária em algumas situações.

4. Ele pode ser útil para todos. Essa é a quintessência de um ziguezague :) Na minha opinião, o valor do artigo não está no fato de a OOP ser aplicada nele. A parte com OOP é uma parte de rotina sem nenhum valor especial, na minha opinião. Mas o início do artigo, em que é considerada a criação de um indicador por hi-lo e por cloze, vale a pena ser lido por todos (com raras exceções).

Eu disse isso imediatamente - para iniciantes.
 
fxsaber:

Pelo menos um argumento. A única coisa que eles gostam de repetir é a garantia de preparação de séries temporais em indicadores ao entrar no OnCalculate. E essa garantia não existe no OnTick. Ela é de apenas 99,99999999% no OnTick, não 100%.

Um indicador é um objeto. A OOP também permite que você crie objetos. Mas não crie entidades adicionais na forma de programas separados.

O que um gráfico de ticks e os dados iniciais na forma de ticks têm a ver com isso? O Expert Advisor não se importa com a existência ou não de gráficos. E se um indicador é capaz de analisar o histórico de ticks, isso significa que ele se baseia em ticks. E a falta de visualização é um alô para o VPS. Ou seja, ela não é necessária em algumas situações.

Eu disse imediatamente - para iniciantes.
Depois do que você escreveu, você nem deveria se referir a iniciantes, mas ao grupo do berçário, preparatório para o jardim de infância.
 

O mais difícil é escrever um artigo para iniciantes. Nem todo mundo consegue fazer isso.

É ainda mais difícil escrever um artigo que seja útil tanto para iniciantes quanto para especialistas.

Seria bom escrever em cada artigo para quem o artigo se destina. Quais seções são para iniciantes, quais são para especialistas, quais complementam a documentação, referências cruzadas para publicações já existentes sobre esse tópico e assim por diante.

Se o artigo for para iniciantes, geralmente está escrito se o material é suficiente para a compreensão e, se houver dificuldades na compreensão do material, qual material é melhor para se familiarizar antes da leitura.

p.s. De toda a literatura técnica, são os livros didáticos para iniciantes que se tornam best-sellers.

 
Dmitry Fedoseev:

1. essa é uma ideia errada. O indicador funciona usando buffers de indicador e os parâmetros rates_total e prev_calculate. O objetivo do indicador é usar buffers. Não há buffers de indicador no Expert Advisor, assim como rates_total e prev_calculate.

Dmitry, você está errado aqui. A ideia de trabalhar com o Zig Zag por meio de uma classe, ignorando o iCustom, está muito correta. De fato, um ziguezague é uma lista de linhas, cada uma das quais tem muitas propriedades:

  • Direção da linha (para cima/para baixo)
  • Índice da barra em que a linha começa;
  • Índice da barra em que a linha termina;
  • O preço do início da linha;
  • O preço no qual a linha termina;
  • Hora de início da linha;
  • Hora de término da linha;
  • ...

Em vez de trabalhar com informações de dois bits por meio do buffer: há uma linha/não há linha, precisamos criar uma classe na qual todas as informações possíveis sejam calculadas automaticamente e alimentadas de forma conveniente diretamente no Expert Advisor ou diretamente no indicador. Ao mesmo tempo, uma única classe deve ser capaz de trabalhar com diferentes tipos de dados, por exemplo, com barras, preços de fechamento ou fluxo de ticks.

Em resumo: é útil para iniciantes. Mas o uso de OOP ainda os assustará.

 
Andrey F. Zelinsky:

p.s. De toda a literatura técnica, são os livros didáticos para iniciantes que se tornam best-sellers.

Nenhum trabalho para especialistas pode se tornar um best-seller por definição - há poucos especialistas.

Por via das dúvidas, não me incluo entre eles. O artigo é para pessoas que acabaram de começar a dominar ou estão prestes a fazê-lo. É bom.

Para que seja bem compreendido, darei links para dois artigos.

  1. Escrevendo indicadores - para iniciantes em OOP.
  2. Escrevendo Expert Advisors - para especialistas.
MQL's OOP notes: Singleton, Command queue, and Template method patterns in simple order manager
MQL's OOP notes: Singleton, Command queue, and Template method patterns in simple order manager
  • 2016.10.06
  • //www.mql5.com/en/users/marketeer">
  • www.mql5.com
As the title says this time we'll try to implement a simple object-oriented framework for trading. It's surely simple as a framework, but is probably most complex thing among all that we've discussed...
 
Vasiliy Sokolov:

Dmitry, você está errado aqui. A ideia de trabalhar com o Zig Zag por meio de uma classe, ignorando o iCustom, está muito correta. Em essência, um ziguezague é uma lista de linhas, cada uma das quais com muitas propriedades:

  • Direção da linha (para cima/para baixo)
  • Índice da barra em que a linha começa;
  • Índice da barra em que a linha termina;
  • O preço do início da linha;
  • Preço do final da linha;
  • Hora de início da linha;
  • Hora de término da linha;
  • ...

1. Em vez de trabalhar com informações de dois bits por meio de um buffer: há uma linha/não há linha, é necessário criar uma classe na qual todas as informações possíveis sejam calculadas automaticamente e alimentadas de forma conveniente diretamente no Expert Advisor ou diretamente no indicador. Ao mesmo tempo, uma única classe deve ser capaz de trabalhar com diferentes tipos de dados, por exemplo, com barras, preços de fechamento ou fluxo de ticks.

2. Em resumo: é útil para iniciantes. Mas o uso de OOP ainda os assustará.

1. Não. É apenas uma pequena modificação no indicador. É que o artigo já é grande o suficiente. Tive a ideia de escrever outro artigo, apenas para fazer essa adição e considerar uma classe para resolver fórmulas (você obteria um ziguezague com a função de reconhecer padrões, cuja fórmula seria escrita na janela de propriedades). Mas Rashid não estava interessado no assunto. E é impossível colocar tudo em um único artigo. Se alguém notou, eu tinha mais uma variante do ziguezague (baseada em recuos da última máxima/mínima), mas não havia nada sobre isso no artigo.

Além disso, o artigo ainda trata do método de acesso direto aos valores dos vértices. A OOP em geral está muito indiretamente relacionada a essa questão, é uma questão de gosto no que envolvê-la, e isso é resolvido sem OOP, apenas quando os vértices aparecem, coloque-os em um buffer adicional em ordem e, no início do buffer, escreva seu número. Nesse caso, o acesso a qualquer vértice é feito em duas etapas: obter o número de vértices e obter um determinado vértice do final. Há uma pequena dificuldade com o ziguezague, como no fechamento (por causa do cancelamento de um novo raio), mas isso pode ser resolvido. Mas o que a OOP tem a ver com isso?

2. Caso a OOP assuste alguém, o artigo é composto de duas partes: antes da OOP (criação de dois indicadores), é suficiente entender como escrever um ziguezague.