Assista a como baixar robôs de negociação gratuitos

Roteiro interessante?
Então poste um link sobre isto -
deixe que outros avaliem

Você gostou do roteiro? Experimente no terminal MetaTrader 5

Visualizações:
1342
Classificação:
votos: 17
Publicado:
2014.01.14 12:55
Atualizado:
2016.11.22 07:33
\MQL5\Include\\MQL5\Experts\

A classe СIsNewBar é necessária para que os Expert Advisors trabalhem de forma eficiente, fazendo os cálculos no momento em que uma nova barra aparece.

Geralmente a função IsNewBar() é usada para essa finalidade, em vez de sua classe. Mas tal função contém uma variável estática e, portanto, não podemos usar várias chamadas desta função. Para ser capaz de reutilizar tais função repetidamente no código do Expert Advisor, seria muito mais fácil torná-la um membro de classe. Neste casso, é possível realizá-lo mediante o uso de IsNewBar.mqh.

O código da biblioteca deve ser incluído no conteúdo global do arquivo utilizando a diretiva #include:

#include <IsNewBar.mqh>

Então, o número necessário de variáveis ​​de classe СIsNewBar devem ser declarados no bloco OnTick() do Expert Advisor:

static CIsNewBar NB1,NB2;

Após isso, podemos fazer as devidas chamadas nas funções IsNewBar():

bool IsNewBar(string symbol,            // símbolo do par de moeda
              ENUM_TIMEFRAMES timeframe)// cálculo do tempo gráfico

no código do Expert Advisor:

if(NB1.IsNewBar(Symbol(),PERIOD_D1)) // checando se há uma nova barra
     {
      /* Aqui está o primeiro sinal de negociação contido no bloco de código */
     }

Aqui está um possível exemplo do código que inclui a classe СIsNewBar dentro função OnTick():

//+------------------------------------------------------------------+
//| Função Tick do Expert                                            |
//+------------------------------------------------------------------+
void OnTick()
  {
//---
   double iClose1[1],iClose2[1];
//--- declaração das variáveis estáticas
   static bool Recount1=true,Recount2=true;
   static CIsNewBar NB1,NB2;

//+----------------------------------------------+
//| Detectando os sinais de entrada no mercado   |
//+----------------------------------------------+
   if(NB1.IsNewBar(Symbol(),PERIOD_D1) || Recount1) // verificando se há uma nova barra
     {
      Recount1=false;
      //--- copiando o novo dado para o array
      if(CopyClose(Symbol(),PERIOD_D1,1,1,iClose1)<=0) {Recount1=true; return;}
      /* Aqui está o primeiro sinal de negociação contido no bloco de código *
     }
     
   if(NB2.IsNewBar(Symbol(),PERIOD_H4) || Recount2) // verificando se há uma nova barra
     {
      Recount2=false;
      //--- copiando o novo dado para o array
      if(CopyClose(Symbol(),PERIOD_H4,1,1,iClose2)<=0) {Recount2=true; return;
      /* Aqui está o segundo sinal de negociação contido no bloco de código */
     }

Traduzido do russo por MetaQuotes Software Corp
código original: https://www.mql5.com/ru/code/768

TrendTriggerMod TrendTriggerMod

Este indicador exibe a força e a direção da tendência.

Fx10 Fx10

Indicador de sinal do tipo semáforo baseado em 5 indicadores técnicos: LWMA, SMA, RSI, Estocástico e MACD.

Damiani_volatmeter Damiani_volatmeter

Um termômetro de volatilidade com indicação na forma de uma nuvem colorida.

i-Fractals-sig i-Fractals-sig

Indicador que fornece sinais de entrada no mercado utilizando fractais.