Wie fügt man den Indikatorcode in den Expertadvisor-Code ein? - Seite 3

 
Ich möchte einige Filter auf meinem Ea hinzufügen, was soll ich tun?
 

Hallo, ich habe hier ein paar Probleme... ~~

Ich möchte eine neue ea mit rvi Indikator zu machen,

aber anscheinend habe ich einen großen Fehler.

Ich habe sogar auf diese Seite https://www.mql5.com/en/articles/1456 geschaut,

aber ich habe immer noch ein Problem.

Hier ist der Code ich tun.

jemand kann mir bitte helfen, diese einfache ea zu machen?

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

Sie können Indikatorpuffer oder andere Indikatorfunktionen wie IndicatorCounted() NICHT in einem EA verwenden. Erstellen Sie einen Indikator, greifen Sie auf die Indikatorpuffer von Ihrem EA mit iCustom zu. Sie könnten auch einfach die iRVI-Funktion verwenden, die mql4 anbietet....

init() ist für Code, der einmal beim Start Ihres EA ausgeführt werden soll, deinit() ist für Code, der einmal beim Beenden Ihres EA ausgeführt werden soll ... start() ist für Code, der bei jedem Tick ausgeführt werden soll ...

 

wie man die höchste und die niedrigste Kerze einer beliebigen Zeitflamme erkennt ...

 
Wie kann man den niedrigsten oder den höchsten Balken festlegen?
 
Wie definiert man ExtDepth und Shift bei 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)];

wie oben, ich möchte a= höchster Preis der Kerze definieren

und b=niedrigster Preis der Kerze

Ich versuche, den Zickzack-Indikator in meinen EA einzufügen.

aber die Variable ist immer noch nicht definiert.

Wie kann ich diesen Fehler beheben?

 
Lesen Sie diesen Thread:https: //www.mql5.com/en/forum/139051/page2#623895 die Grundsätze sind die gleichen.
 
albert_lim83:

wie oben, ich möchte a= höchster Preis der Kerze definieren

und b=niedrigster Preis der Kerze

Ich versuche, den Zigzag-Indikator in meinen EA einzufügen.

aber die Variable ist immer noch nicht definiert.

Wie kann man diese Fehler beheben?

Haben Sie ZigZagHigh, ZigZagLow und ExtDepth deklariert ?

iHighest und iLowest geben die Nummer des höchsten/niedrigsten Balkens zurück ... und sie schauen auf Balken, die mit Shift beginnen und auf ExDepth-Balken ...

 

endlich das Variablenproblem gelöst,

jetzt ist nur noch

( - Funktionsdefinition unerwartet

) - unausgewogene rechte Klammer...

ist es l links setzen ( und ) auf meinen Code??