Loookimg for help to translate indicator into an EA

 

Can anyone help with this... I can barter with some web design:

very much appreciated

===========================================

#property indicator_chart_window
#property indicator_buffers 3
#property indicator_color1 Aqua
#property indicator_color2 Tomato
//---- input parameters
extern int period=21;
//extern int method=0; // MODE_SMA
extern int method=3; // MODE_SMA
extern int price=0; // PRICE_CLOSE
extern string Sound_File="alert2.wav";
//---- buffers
double Uptrend[];
double Dntrend[];
double ExtMapBuffer[];


//+------------------------------------------------------------------+
//| Custom indicator initialization function |
//+------------------------------------------------------------------+
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,2);
SetIndexStyle(1,DRAW_LINE,STYLE_SOLID,2);

IndicatorShortName("Hull Moving Average("+period+")");
return(0);
}

//+------------------------------------------------------------------+
//| Custor indicator deinitialization function |
//+------------------------------------------------------------------+
int deinit()
{
// ???? ????? ?????? ??????
return(0);
}

//+------------------------------------------------------------------+
//| ?????????? ??????? |
//+------------------------------------------------------------------+
double WMA(int x, int p)
{
return(iMA(NULL, 0, p, 0, method, price, x));
}

//+------------------------------------------------------------------+
//| Custom indicator iteration function |
//+------------------------------------------------------------------+
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 = e; x >= 0; x--)
{
vect[x] = 2*WMA(x, period/2) - WMA(x, period);
// Print("Bar date/time: ", TimeToStr(Time[x]), " close: ", Close[x], " vect[", x, "] = ", vect[x], " 2*WMA(p/2) = ", 2*WMA(x, period/2), " WMA(p) = ", 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];
//PlaySound(Sound_File);
}
Dntrend[x] = EMPTY_VALUE;

}
else
if (trend[x]<0)
{
Dntrend[x] = ExtMapBuffer[x];
if (trend[x+1]>0) {
Dntrend[x+1]=ExtMapBuffer[x+1];
//PlaySound(Sound_File);
}

Uptrend[x] = EMPTY_VALUE;

}

//Print( " trend=",trend[x]);
}

return(0);
}
//+------------------------------------------------------------------+

 

A

For several reasons, its almost always better to keep the indicator code separate and call it from the EA with iCustom

I dont recognize the code above as being a very typical variant of Hull Moving Average but if it is anything like the others it will look great on history but repaint quite badly during live trading :(

FWIW

-BB-

 

BB,

It seems like you konw about the HMA.

I am trying to make triger the trade striclty based on the up or downtrend.

Most HMA ea's I've come accross have multiple trades within the trend.

I would appreciate any guidance to get to write this EA or how to use the "icustom" fuction... any suggestions? Can you you write some of it?

A.

 

A

A little lateral thinking is required - see http://www.lmgtfy.com/?q=hull+moving+average+adviser

Most will have a MaxOrders parameter that you could set to 1

It will still lag tho...

-BB-

 

BB,

Would you happen to know the parameters/code that make the indicator. (In this case what triggers the line to go green or red?)... this will be sufficent enough for me to write the EA.

It is simply a matter of triggering a close of the open order and open a new one in the opposite direction.

I'd simply take default moving average EA and replace the HMA parameters.

Any thoughts?


A.

Reason: