Discussão do artigo "Tipo de desenho DRAW_ARROW em indicadores multissímbolos e multiperíodos"

 

Novo artigo Tipo de desenho DRAW_ARROW em indicadores multissímbolos e multiperíodos foi publicado:

No artigo, vamos considerar o desenho de indicadores multissímbolos e multiperíodos com setas. Aprimoraremos os métodos da classe para a correta exibição das setas, que exibem dados dos indicadores de seta calculados em símbolo/período diferentes do símbolo/período do gráfico atual.

Continuamos o tema dos indicadores multissímbolos e multiperíodos. O último artigo desta série foi sobre buffers coloridos em indicadores multissímbolos e multiperíodos. Hoje, vamos aprimorar a classe de multi-indicadores para que ela possa trabalhar com indicadores de seta.

Os indicadores de seta envolvem a ausência constante de dados no seu buffer de desenho. Onde a seta é exibida existe um valor no buffer, enquanto nos outros momentos, o buffer contém um valor vazio estabelecido para ele. Normalmente, isso é EMPTY_VALUE, mas para o buffer é possível definir qualquer valor como "vazio", que não será exibido no gráfico. Isso pode ser feito com a função:

PlotIndexSetDouble(buffer_index,PLOT_EMPTY_VALUE,empty_value);

onde buffer_index é o índice do buffer ao qual se define o valor vazio, e empty_value é o valor "vazio" que será estabelecido para esse buffer.

Nos indicadores multiperíodos, onde o buffer é preenchido com dados de forma intermitente, é necessário considerar a presença de valores vazios onde não há setas, e não inserir esses valores vazios na barra do gráfico onde já há um valor não vazio. Caso contrário, a seta anteriormente colocada será apagada por um novo valor vazio. Isso é verdadeiro se os dados de um indicador calculado em um timeframe menor forem copiados para um timeframe maior.

Vou explicar com um exemplo. Na imagem do gráfico M5 as barras do gráfico M15 são marcadas:


Aqui, vemos fractais do gráfico M5 que precisam ser estabelecidos nas barras do gráfico M15.

Autor: Artyom Trishkin

 

Certa vez, um trader me escreveu dizendo que estava desenvolvendo um "fractal rápido", quase como um graal.

E eu lhe escrevi: "Por que não usar fractais de M5 a M15? Essa é a história.

 
Vitaliy Kuznetsov graal.

E eu lhe escrevi: "Por que não usar fractais de M5 a M15? Essa é a história.

Em princípio, um fractal não pode ser rápido ou lento :)

Até que duas barras a partir do topo sejam formadas, não há fractal, ou melhor, há algo, mas não é um fractal.


 
Vitaly Muzichenko #:

Em princípio, um fractal não pode ser rápido ou lento :)

Até que duas barras a partir do topo sejam formadas - não há fractal, ou melhor, há algo, mas não é um fractal


Artem, inseri seu painel no Expert Advisor. O que devo fazer para que ele funcione no testador para testes visuais?

 
Konstantin Seredkin #:

Artem, inseri seu painel no Expert Advisor. O que devo fazer para que ele funcione no testador em testes visuais?

A resposta depende do que você precisa ver no painel durante o teste visual.

 
Artyom Trishkin #:

A resposta depende do que você precisa ver no painel ao testar visualmente.

Por exemplo, seu Expert Advisor dos artigos anteriores TestTrendADX, se você o executar visualmente, os dados serão exibidos somente após a inicialização e, em seguida, nada será exibido.



Se você fizer isso, os dados da barra atual e os dados do indicador começarão a ser exibidos

//+------------------------------------------------------------------+
//| Função de tique de especialista|
//+------------------------------------------------------------------+
void OnTick()
  {
//---
//--- Exibir os dados da barra atual no painel
   DrawData(0,TimeCurrent());
  }



Mas não sei se estou fazendo isso corretamente ou não.

 
Konstantin Seredkin #:

Bem, por exemplo, seu Expert Advisor dos artigos anteriores TestTrendADX, se você o executar no visual, os dados serão exibidos somente após a inicialização e, em seguida, nada será exibido.



Se você fizer isso, os dados da barra atual e os dados do indicador6 serão exibidos



Não sei se estou fazendo isso corretamente ou não.

O problema é que OnChartEvent() não funciona no modo visual do testador em Expert Advisors; nos indicadores, apenas os eventos de clique do mouse no gráfico funcionam. Nos indicadores de teste de que você está falando, o painel exibe dados sob o cursor do mouse. Ou seja, o programa rastreia a localização do cursor e envia dados para o painel a partir da barra que está sob o cursor. No modo visual do testador, você precisa clicar na barra da qual deseja obter dados no painel. Ou obter dados em OnTick(), mas somente da barra atual, como você fez.

 
Artyom Trishkin #:

O problema é que OnChartEvent() não funciona no modo visual do testador nos Expert Advisors, apenas os eventos de clique do mouse no gráfico funcionam nos indicadores. Nos indicadores de teste de que você está falando, o painel exibe dados sob o cursor do mouse. Ou seja, o programa rastreia a localização do cursor e envia dados para o painel a partir da barra que está sob o cursor. No modo visual do testador, você precisa clicar na barra da qual deseja obter dados no painel. Ou obter dados em OnTick(), mas somente da barra atual, como você fez.

Tudo resolvido, releia o primeiro tópico.

Na verdade, para enviar minhas informações para o painel, preciso apenas de um manipulador de eventos e chamar DrawData() em OnTick() e tudo funciona.

Obrigado, há muito tempo estou procurando o painel mais simples para enviar informações de depuração para ele, porque, por algum motivo, a velocidade do teste na visualização cai muitas vezes através do Comment(), a velocidade através do painel é como se fosse um teste sem ele.

 
Konstantin Seredkin #:

Tudo resolvido, releia o primeiro tópico.

De fato, para exibir minhas informações no painel, preciso apenas de um manipulador de eventos e chamar DrawData() em OnTick() e tudo funciona.

Obrigado, há muito tempo estou procurando o painel mais simples para gerar informações de depuração nele, porque, por algum motivo, a velocidade do teste na visualização cai muitas vezes por meio de Comment(), a velocidade por meio do painel é como se fosse um teste sem ele.

Muito bom. Fico feliz que você tenha descoberto isso sozinho

 
Artyom Trishkin #:

Ótimo. Fico feliz que tenha descoberto por conta própria

Peço desculpas, talvez fora do tópico, mas tenho acompanhado seus tópicos há muito tempo. Você escreveu que, quando chegar a hora, você criará um robô de exemplo em sua biblioteca que, com base nele, ficará claro o que e onde inserir, para usar e coletar algoritmos completamente.

Ainda não chegou a hora... Acabo de ver que os tópicos sobre a biblioteca já terminaram.

 
Konstantin Seredkin #:

Peço desculpas, talvez esteja fora do assunto, mas acompanho seus tópicos há muito tempo. Você escreveu que, quando chegar a hora, você criará um robô de exemplo em sua biblioteca que, com base nele, ficará claro o que e onde inserir para usar e coletar algoritmos por completo.

O momento ainda não chegou... Acabo de ver que os tópicos sobre a biblioteca já terminaram.

Na biblioteca - na continuação com os gráficos, enquanto o desenvolvimento foi suspenso devido a um bug desagradável que se manifesta no piscar periódico de partes ocultas dos objetos. Até que eu encontre a causa, não devo criar gráficos, para não acumular bugs. Mas o restante dos recursos da biblioteca será continuado em breve. E então chegaremos aos exemplos.