Perguntas de Iniciantes MQL5 MT5 MetaTrader 5 - página 240

 
barabashkakvn:

Olá.

1. não posso usar o indicador "Blau_Ergodic" porque não há arquivo no fim do artigo. Agora preciso de um ficheiro " WilliamBlau.mqh". Por favor, envie-me este ficheiro (melhor através de mensagem de perfil).

2. Todos os indicadores estão em...MQL5\Indicadores\Exemplos\ - estes são indicadores personalizados, ou seja, aqueles indicadores, que podem ser modificados.

Enviado.
 
forexman77:

Estou a tentar construir um gerador de sinais comerciais com base num indicador personalizado.

Surgiram as seguintes questões:

1. Posso especificar qualquer nome na linha depois de CiCustom, por exemplo, marcá-lo como "m_ind;".

2. Será esta linha correcta?

Percebo bem, recebo aqui o valor do próprio indicador?

3. não consigo compreender como é que o programa obtém o valor do indicador. Ou seja, se utilizarmos MQL4, devemos especificar o nome do indicador e o programa irá encontrá-lo pelo nome. Então, onde inscrevo o seu nome na classe?

Criei este código) Não irei mais longe, porque preciso de mais Expert Advisor na minha criação.

Em geral, tudo está correcto. Aqui está apenas o código:

   double             Custom(int index)                   { return(m_ind.ParamDouble(index));}
   double             Open(int index)                     { return(m_open.GetData(index));  }
   double             Close(int index)                    { return(m_close.GetData(index)); }

levanta uma questão. ParamDouble - obtém o valor de um parâmetro de ponto flutuante especificado, que foi utilizado na criação do indicador. Talvez precisemos de aceder ao valor do tampão indicador:

   double             Custom(int index)                   { return(m_open.GetData(index));  }
   double             Open(int index)                     { return(m_open.GetData(index));  }
   double             Close(int index)                    { return(m_close.GetData(index)); }

?

 
barabashkakvn:

Em suma, tudo está correcto. Excepto o código:

levanta uma questão. ParamDouble - obtém o valor do parâmetro de ponto flutuante especificado, utilizado na criação do indicador. Talvez precisemos de aceder ao valor tampão indicador:

?

Olhando para a ajuda, parece-me que o "ParamDouble" é necessário. Na verdade, precisamos de obter o valor do tampão.

Encontrei apenas "NumBuffers" na classe"CiCustom

 
forexman77:
Olhando para a ajuda, parece-me que ela precisa de "ParamDouble". Geralmente, é claro, é necessário obter o valor do tampão.
Bem, posso ver que tudo se resolverá por si.
 
barabashkakvn:
Bem, vejo que tudo se resolverá por si.
Se bem entendi
double             Custom(int index)                   { return(m_ind.ParamDouble(index));}

é o valor do indicador solicitado com esta linha?

Nos indicadores padrão, os valores tampão são obtidos através do acesso aos dados, mas não há nada sobre o acesso aos dados no indicador personalizado.

Existem funções no grupo de classes básicas e auxiliares de indicadores técnicos e de séries temporais, mas como é que as atribuo? Ou não é o que eu preciso?

 
forexman77:
Se bem entendi

é o valor do indicador solicitado com esta linha?

Nos indicadores padrão, os valores tampão são obtidos através do acesso aos dados, mas não há nada sobre o acesso aos dados no indicador personalizado.

Existem funções no grupo de classes básicas e auxiliares de indicadores técnicos e de séries temporais, mas como é que as atribuo? Ou não é a mais correcta?

1. Sim o valor do parâmetro - por exemplo, o parâmetro de entrada sobre o qual o indicador será calculado.

2. Não confundir - o indicador no qual se pode alterar o código é um indicador personalizado. Mesmo que o seu nome seja o mesmo que o indicador que vem na biblioteca padrão. Um exemplo de um indicador personalizado - ...MQL5\Indicadores\Exemplos e quaisquer outros em que se possa alterar o código. O buffer indicador desenha o seu conteúdo (dados) no gráfico. Basta alterar os dados no buffer de indicadores e estes são desenhados no gráfico. Sobre que acesso está a perguntar?

3. não percebo.

 
barabashkakvn:

1. Sim valor do parâmetro - por exemplo, parâmetro de entrada sobre o qual o indicador será calculado.

2. Não confundir - o indicador no qual se pode alterar o código é um indicador personalizado. Mesmo que o seu nome seja o mesmo que o indicador que vem na biblioteca padrão. Um exemplo de um indicador personalizado - ...MQL5\Indicadores\Exemplos e quaisquer outros em que se possa alterar o código. O buffer indicador desenha o seu conteúdo (dados) no gráfico. Basta alterar os dados no buffer de indicadores e estes são desenhados no gráfico. Sobre que acesso está a perguntar?

3. não percebo.

Aqui está o período de parâmetro de entrada, que é utilizado para calcular o indicador "q".

class CSampleSignal : public CExpertSignal
  {
protected:
   CiCustom           m_ind;              // объект для доступа к значениям ind
   CiOpen             m_open;            // объект для доступа к ценам открытия баров
   CiClose            m_close;           // объект для доступа к ценам закрытия баров
  //--- настраиваемые параметры
   int      q;  // q - период, по которому вычисляется индикатор
   double             m_stop_loss;       // уровень установки ордера "stop loss" относительно цены открытия
   double             m_take_profit;     // уровень установки ордера "take profit" относительно цены открытия
public:
              CSampleSignal();
   //--- методы установки параметров настройки
   void               Q(int value)                 { q=value;   }
   void               StopLoss(double value)       { m_stop_loss=value;   }
   void               TakeProfit(double value)     { m_take_profit=value; }

Para a pergunta 2. Agora o seguinte código

protected:
   //--- метод инициализации объектов
   bool               Initind(CIndicators* indicators);
   bool               InitOpen(CIndicators* indicators);
   bool               InitClose(CIndicators* indicators);
   //--- методы доступа к данным объектов
   double             Custom(int index)                   { return(m_ind.ParamDouble(index));}//знаю, что не правильно
   double             Open(int index)                     { return(m_open.GetData(index));  }
   double             Close(int index)                    { return(m_close.GetData(index)); }
  };

Se bem entendi, especificamos aqui que queremos receber informações sobre preços abertos e fechados, valores de amortecedores de indicadores?

Compreendo o que quer dizer com os indicadores padrão. Os dados do buffer são obtidos através de"Main". Por exemplo, é mostrado no código abaixo

 double             MA(int index)                       { return(m_MA.Main(index));       }
 double             Open(int index)                     { return(m_open.GetData(index));  }
 double             Close(int index)                    { return(m_close.GetData(index)); }

Para a 3ª pergunta. Como obter dados a partir do indicador personalizado?

Para uma melhor compreensão, que passos devem ser seguidos brevemente no processo de criação do gerador do sinal comercial?

 
Se bem entendi, especificamos aqui que queremos obter informações sobre preços abertos e fechados, valores de amortecedores de indicadores?

Sim.

Os indicadores padrão são claros. Os dados do buffer são recuperados através de "Main". Por exemplo, como no código abaixo.

Sim. A classe CiMA tem o métodoprincipal

Como obter dados a partir doindicador personalizado?

.GetData(index))
onde o índice é o número tampão indicador.
 
barabashkakvn:

Sim.

Sim. A classe CiMA tem um métodoprincipal

onde o índice é o número tampão indicador.
double             Main(int ind)                       { return(m_ind.GetData(0,ind));   }
Certo)?
 


quando é que o metatrader sairá no windows phone 8