como adicionar código indicador no código do consultor especializado ?? - página 3

 
desejo adicionar algum filtro na minha ea, o que devo fazer ??
 

Oi, tenho alguns problemas aqui... ~~

desejo fazer uma nova ea com indicador rvi,

mas parece que estou cometendo um grande erro.

Até eu olhei para esta página https://www.mql5.com/en/articles/1456,

mas ainda têm problemas.

aqui está o código que eu faço.

qualquer um pode me ajudar a facilitar esta tarefa e ??

//+------------------------------------------------------------------+
//|                                                       RVI EA.mq4 |
//|                                             Copyright 2012, Abu. |
//|                                        http://www.metaquotes.net |
//+------------------------------------------------------------------+
#property copyright "Copyright 2012, Abu."
#property link      "http://www.metaquotes.net"

//--- input parameters
extern double    TakeProfit=100.0;
extern double    StopLoss=100.0;
extern int       TotalOrder=10;
extern double    FixedLotSize=0.1;
extern double    FlexibleLotSize=0.1;
extern double    RVIPeriod=5;
//---- indicator buffers
double     ExtRVIBuffer[];
double     ExtRVISignalBuffer[];
//+------------------------------------------------------------------+
//| expert initialization function                                   |
//+------------------------------------------------------------------+
int init()
  {
   if(AccountFreeMargin()<200)        //----
   {
   Print("Margin is lesser than 200");   //----
   return(0);
   for (int i=100; i<TotalOrder(); i++) {
   if (OrderSelect(i, SELECT_BY_POS, MODE_TRADES)) {
   if (OrderSymbol()==Symbol()) {
   return(True);
   }
   } 
   } 
   return(false);
   }

//+------------------------------------------------------------------+
//| expert deinitialization function                                 |
//+------------------------------------------------------------------+
int deinit()
  {
   int i,j,nLimit,CountedBars;
   double dValueUp,dValueDown,dNum,dDeNum;
//----
   if(Bars<=RVIPeriod+8) return(0);
//----
   CountedBars=IndicatorCounted();
//---- check for possible errors
   if(CountedBars<0) return(-1);
//---- last counted bar will be recounted
   Limit=Bars-RVIPeriod-4;
   if(CountedBars>RVIPeriod+4)
      Limit=Bars-CountedBars;
//---- RVI counted in the 1-st buffer
   for(int i = limit); i >= 1; i--
     {
      dNum=0.0; 
      dDeNum=0.0;
   for(int j=i; j<i+RVIPeriod; j++)
        {
         dValueUp=((Close[j]-Open[j])+2*(Close[j+1]-Open[j+1])+2*(Close[j+2]-Open[j+2])+(Close[j+3]-Open[j+3]))/6;
         dValueDown=((High[j]-Low[j])+2*(High[j+1]-Low[j+1])+2*(High[j+2]-Low[j+2])+(High[j+3]-Low[j+3]))/6;
         dNum+=dValueUp;
         dDeNum+=dValueDown;
        }
      if(dDeNum!=0.0)
         ExtRVIBuffer[i]=dNum/dDeNum;
      else
         ExtRVIBuffer[i]=dNum;   
     }

//----
   
//----
   return(0);
  }
//+------------------------------------------------------------------+
//| expert start function                                            |
//+------------------------------------------------------------------+
   int start()
    {
      if ((i<j));
      {
         OpenSell();
         return(0);
      }
      else 
      
      if ((j<i));
      {
         OpenBuy();
         return(0);
      }
      else  
 //----
   
//----
   return(0);
  }
//+------------------------------------------------------------------+
 

Você NÃO pode usar buffers Indicator ou outras funções Indicator como IndicatorCounted() em um EA. Crie um Indicador, acesse os buffers de Indicadores de sua EA utilizando o iCustom. Você também pode simplesmente usar a função iRVI que o mql4 oferece . .

init() é para o código que você deseja executar uma vez quando sua EA for iniciada, deinit() é para o código que você deseja executar uma vez quando sua EA for encerrada . . start() é para o código que você deseja executar em cada tick . .

 

como conhecer a mais alta e a mais baixa das velas de qualquer período de tempo ...

 
como definir a barra inferior ou a barra superior ??
 
como definir o ExtDepth e o shift em e ??
 
   int a, b;
   double zag, zig; b=0; while(a<2) {
   if(zig>0) zag=zig;
   zig=iCustom(NULL, 0, "ZigZag", 0, b);
   if(zig>0) a+=1;
   b++;
   ZigZagHigh=iCustom(NULL,0,"ZigZag",MODE_HIGH,0);
   ZigZagLow=iCustom(NULL,0,"ZigZag",MODE_LOW,0);    
   double LowestBar=Low[Lowest(NULL,0,MODE_LOW,ExtDepth,shift)];
   double HighestBar=High[Highest(NULL,0,MODE_HIGH,ExtDepth,shift)];

como acima, desejo definir a= preço mais alto da vela

e b= preço mais baixo da vela

tentando adicionar o indicador ziguezague em minha EA.

mas ainda variável não definida.

como corrigir esses erros ??

 
Leia este tópico:https: //www.mql5.com/en/forum/139051/page2#623895 os princípios são os mesmos.
 
albert_lim83:

como acima, desejo definir a= preço mais alto da vela

e b= preço mais baixo da vela

tentando adicionar o indicador ziguezague em minha EA.

. mas ainda variável não definida.

como corrigir esses erros ??

Você declarou ZigZagHigh, ZigZagLow e ExtDepth ?

iHighest e iLowest devolvem o número da barra que é a mais alta/mais baixa . . e eles olham as barras começando com shift e olhando para as barras ExDepth . .

 

finalmente resolveu o problema da variável,

agora é apenas

( - definição da função inesperada

) - parêntese direita desequilibrada...

é a esquerda colocada ( e ) no meu código?