¿cómo añadir el código del indicador en el código de expertadvisor? - página 3

 
deseo añadir algún filtro en mi ea, ¿qué debo hacer?
 

Hola, tengo algunos problemas aquí... ~~

quiero hacer un nuevo ea con indicador rvi,

pero parece que tengo un gran error.

incluso miré a esta página https://www.mql5.com/en/articles/1456,

pero todavia tengo problemas.

aquí está el código que hago.

¿alguien puede echarme una mano para hacer este fácil ea?

//+------------------------------------------------------------------+
//|                                                       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);
  }
//+------------------------------------------------------------------+
 

NO puede utilizar los buffers de los Indicadores ni otras funciones de los Indicadores como IndicatorCounted() en un EA. Cree un Indicador, acceda a los buffers de los Indicadores desde su EA usando iCustom. También podría utilizar simplemente la función iRVI que ofrece mql4....

init() es para el código que desea ejecutar una vez cuando su EA se inicia, deinit() es para el código que desea ejecutar una vez cuando su EA se cierra . . . start() es para el código que desea ejecutar en cada tick . . .

 

cómo saber el más alto y el más bajo de la vela de cualquier tiempo de la llama ..

 
¿cómo definir la barra más baja o la barra más alta?
 
¿como definir ExtDepth y shift en ea?
 
   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 arriba, deseo definir a= precio más alto de la vela

y b= precio más bajo de la vela

tratando de añadir el indicador de zigzag en mi EA.

pero aun asi la variable no esta definida.

¿como arreglar este error?

 
Lee este hilo:https: //www.mql5.com/en/forum/139051/page2#623895 los principios son los mismos.
 
albert_lim83:

como arriba, deseo definir a= precio más alto de la vela

y b= precio más bajo de la vela

tratando de añadir el indicador de zigzag en mi EA.

pero todavía la variable no está definida.

¿como se puede solucionar este error?

¿Declaró ZigZagHigh, ZigZagLow y ExtDepth?

iHighest y iLowest devuelven el número de la barra que es la más alta/más baja. . . y miran las barras que empiezan con el turno y mirando las barras ExDepth. . .

 

por fin se ha hecho el problema de las variables,

ahora es sólo

( - definición de la función inesperada

) - paréntesis derecho desequilibrado...

¿es l izquierda poner ( y ) en mi código?