Help with using indicator Buffer to open simple buy and sell orders?

To add comments, please log in or register
Alextrade3000
74
Alextrade3000  
Hello friends, how are you?

I'm a beginner and I'm creating a custom EA that opens and closes orders on the market by changing the color of the indicator line

but I ran into "SetIndexBuffer" and "iCustom" to open buy and sell orders ...

Has anyone ever gone through this obstacle?

Anyone who has a way to go, I thank

Thank you!


I already did the script with the parameters below for EA for MT4

ArraySetAsSeries ();

ArrayGetAsSeries ();

SetIndexBuffer ();

OrderSend ();

iCustom ();

Waiting for answers...


//---- input parameters 
extern int       period=22;
extern int       method=8;                        
extern int       price=0;                           
//---- buffers 
double Uptrend[];
double Dntrend[];
double ExtMapBuffer[];

int init()
  {
   IndicatorBuffers(3);
   SetIndexBuffer(0, Uptrend);
   //ArraySetAsSeries(Uptrend, true); 
   SetIndexBuffer(1, Dntrend);
   //ArraySetAsSeries(Dntrend, true); 
   SetIndexBuffer(2, ExtMapBuffer);
   ArraySetAsSeries(ExtMapBuffer, true);
//----
   SetIndexStyle(0,DRAW_LINE,STYLE_SOLID,4);
   SetIndexStyle(1,DRAW_LINE,STYLE_SOLID,4);
//----
   IndicatorShortName("Signal Line("+period+")");
   return(0);
  }

int deinit()
  { 
   return(0);
  } 
                                                           
double WMA(int x, int p)
  {
   return(iMA(NULL, 0, p, 0, method, price, x));
  }

int start()
  {
   int counted_bars=IndicatorCounted();
   if(counted_bars < 0)
      return(-1);

   int x=0;
   int p=MathSqrt(period);
   int e=Bars - counted_bars + period + 1;

   double vect[], trend[];

   if(e > Bars)
      e=Bars;
//----
   ArrayResize(vect, e);
   ArraySetAsSeries(vect, true);
   ArrayResize(trend, e);
   ArraySetAsSeries(trend, true);
//----
   for(x=0; x < e; x++)
     {
      vect[x]=2*WMA(x, period/2) - WMA(x, period);
      }
   for(x=0; x < e-period; x++)

      ExtMapBuffer[x]=iMAOnArray(vect, 0, p, 0, method, x);
   for(x=e-period; x>=0; x--)
     {
      trend[x]=trend[x+1];
      if (ExtMapBuffer[x]> ExtMapBuffer[x+1]) trend[x] =1;
      if (ExtMapBuffer[x]< ExtMapBuffer[x+1]) trend[x] =-1;
      if (trend[x]>0)
        { 
         Uptrend[x]=ExtMapBuffer[x];
         if (trend[x+1]<0) Uptrend[x+1]=ExtMapBuffer[x+1];
         Dntrend[x]=EMPTY;
        }
      else
         if (trend[x]<0)
           {
            Dntrend[x]=ExtMapBuffer[x];
            if (trend[x+1]>0) Dntrend[x+1]=ExtMapBuffer[x+1];
            Uptrend[x]=EMPTY;
           }
      }
   return(0);
  }


To add comments, please log in or register