come aggiungere il codice dell'indicatore nel codice di expertadvisor? - pagina 3

 
Desidero aggiungere qualche filtro sul mio ea, cosa devo fare?
 

Ciao, ho qualche problema qui... ~~

desidero fare un nuovo ea con indicatore rvi,

ma sembra che io abbia un grande errore.

Ho anche guardato questa pagina https://www.mql5.com/en/articles/1456,

ma ho ancora problemi.

Ecco il codice che faccio.

qualcuno può per favore darmi una mano a fare questo facile 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);
  }
//+------------------------------------------------------------------+
 

NON puoi usare i buffer degli indicatori o altre funzioni degli indicatori come IndicatorCounted() in un EA. Crea un indicatore, accedi ai buffer degli indicatori dal tuo EA usando iCustom. Potresti anche semplicemente usare la funzione iRVI che mql4 offre.

init() è per il codice che vuoi eseguire una volta quando il tuo EA inizia, deinit() è per il codice che vuoi eseguire una volta quando il tuo EA è chiuso . . start() è per il codice che vuoi eseguire su ogni tick . . .

 

come conoscere il più alto e il più basso della candela di qualsiasi timeflame ...

 
come definire la barra più bassa o la barra più alta?
 
come definire ExtDepth e shift su 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)];

come sopra, desidero definire a= prezzo più alto della candela

e b= prezzo più basso della candela

cercando di aggiungere l 'indicatore zigzag nel mio EA.

ma ancora la variabile non è definita.

come risolvere questo errore?

 
Leggete questo thread:https: //www.mql5.com/en/forum/139051/page2#623895 i principi sono gli stessi.
 
albert_lim83:

come sopra, desidero definire a= prezzo più alto della candela

e b= prezzo più basso della candela

cercando di aggiungere l'indicatore zigzag nel mio EA.

ma ancora variabile non definita.

come risolvere questi errori?

Hai dichiarato ZigZagHigh, ZigZagLow e ExtDepth?

iHighest e iLowest restituiscono il numero della barra che è il Highest/Lowest . . . e guardano le barre che iniziano con shift e guardando le barre ExDepth . . .

 

finalmente fatto il problema della variabile,

ora è solo

( - definizione di funzione inaspettata

) - parentesi destra sbilanciata...

è l sinistra mettere ( e ) sul mio codice?