Discussão do artigo "Como transferir a parte de cálculo de qualquer indicador para o código do EA" - página 2

 

@Dmitriy Gizlyk Muito bom seu artigo.   Eu implementei seu código em meu EA e percebi que o indicador não é plotado no gráfico.   Como faço para plotar este indicador criado dentro do EA no gráfico?

Obrigado.

 

Joao Luiz Sa Marchioro:

Estava procurando por algo assim. Muito obrigado. Artigo excelente.


Ola, você implementou este exemplo? Eu implementei e percebi que o indicador não é plotado no gráfico.  Tentei e pesquisei várias formas mas não tive êxito. Seira possível criando o indicador dentro do código do EA como foi feito no estudo acima fazer também a plotagem do mesmo?

 
uma senha pra depositar em conta
 
wellingtondala:

@Dmitriy Gizlyk Muito bom seu artigo.   Eu implementei seu código em meu EA e percebi que o indicador não é plotado no gráfico.   Como faço para plotar este indicador criado dentro do EA no gráfico?

Obrigado.

O artigo apresenta um método para transferir a parte matemática de um indicador para um consultor. Essa abordagem é aplicável para acelerar os cálculos e ocultar o indicador do usuário. Não é possível desenhar um indicador a partir de um Expert Advisor, pois a partir de um indicador. Para exibi-lo, você precisará criar objetos gráficos no gráfico para cada movimento. Esse processo consumirá muito tempo da parte do programador e o custo dos recursos de computação quando usado. Se você precisar de um indicador no gráfico, não faz sentido transferir seu código para o consultor, é mais fácil usar o próprio indicador. Para transferir o consultor com o indicador com um arquivo, você pode usar a funcionalidade do recurso.

 

DMITRIY GIZLYK, obrigado pelo artigo.

Estou interessado na questão do multithreading, é possível executar a classe em paralelo em um núcleo de processador separado? Você mencionou no final do artigo que "a vantagem pode ser nivelada pela arquitetura multithread do MetaTrader 5".

Dmitriy Gizlyk
Dmitriy Gizlyk
  • www.mql5.com
Опубликовал статью Нейросети - это просто Каждый раз, когда речь заходит об искусственном интеллекте, в голове всплывают какие-то фантастические образы и кажется, что это очень сложное и непостижимое. Но мы все чаще и чаще слышим об искусственном интеллекте в повседневной жизни. В новостных лентах все чаще пишут о каких-либо достижениях с...
 
Dmitriy Gizlyk:
Sim, o artigo diz imediatamente que o cálculo é baseado em candlesticks fechados. Para calcular em cada tick, precisamos remover a verificação de abertura de uma nova barra do código e copiar o histórico da barra "0", e não da "1", como está agora.

Entendi corretamente que, para trabalhar com o conjunto completo de dados de séries temporais, você precisa adicionar matrizes além dessa:

массив исходных данных для расчета (m_source_data);

Ou seja, se o indicador acessar dados de barras diferentes - time[], preço máximo e mínimo high[] low[], será necessário adicionar mais três matrizes análogas a m_source_data e copiar os dados para CIndicator::LoadHistory,

e como a função é virtual, ela pode ser reescrita diretamente no indicador?

 

É aqui que ocorre o erro se você criar mais de um buffer

bool CIndicator::SetBufferSize(const int bars)
  {
   if(bars>0)
      m_data_len  =  bars;
   else
      m_data_len  =  Bars(m_Symbol,m_Timeframe);
//---
   if(m_data_len<=0)
     {
      for(int i=0;i<m_buffers;i++)
         ar_IndBuffers[i].Shutdown();
      return false;
     }
//---
   if(m_history_len<m_data_len)
      if(!SetHistoryLen(m_data_len))
         return false;
//---
   for(int i=0;i<m_buffers;i++)
     {
      ar_IndBuffers[i].Shutdown();
      if(!ar_IndBuffers[i].Resize(m_data_len))
         return false;
     }
//---
   return true;
  }

matriz fora do intervalo em 'Indicator.mqh' (156,20)


UPD: Adicionei uma linha no início da função e o problema foi resolvido.

ArrayResize(ar_IndBuffers,m_buffers,m_buffers);

 

Muito obrigado novamente pelo artigo, tudo funcionou! O mais interessante é que ele funciona mais rápido nessa versão. Meu indicador de seta usa a solicitação de ticks por meio das funções CopyTicksRange e CopyTicks, o que causava muitas falhas e, muitas vezes, levava a dados incorretos. Com a classe, tudo funciona como um relógio. Eu relaciono isso ao fato de que CopyTicksRange e CopyTicks nos indicadores funcionam de forma um pouco diferente, o sistema não lhes dá tempo para sincronizar.



ps. para quem for transferir indicadores de seta com vários buffers, observe que é necessário editar as funções Indicator.mqh.

CIndicator::SetHistoryLen(const int bars)

CIndicator::LoadHistory(void)

в зоне protected 

Bem, e o método de gravação e recebimento de dados dos buffers de indicadores ar_IndBuffers é diferente para o arrowman.

 

Pessoal,

Tenho um indicador programado por mim mesmo em mql5 e gostaria de chamar as informações do buffer desse indicador dentro de um EA que estou programando. Poderiam me auxiliar como faço esse procedimento? Os códigos presentes no artigo me ajudam nessa tarefa?

Obrgiado

 
Carlisson Correia :

Pessoal,

Tenho um indicador programado por mim mesmo em mql5 e gostaria de chamar as informações do buffer desse indicador dentro de um EA que estou programando. Poderiam me auxiliar como faço esse procedimento? Os códigos presentes no artigo me ajudam nessa tarefa?

Obrgiado

Boa noite

Confira o recurso iCustom