Today I am posting
another AFL used in Amibroker, that
could be used for trading based on moving average and longer time frame. The
period of moving average could be adjusted according to the users trading
strategy. I have used 5 and 20 moving averages as an example. Period 1 can be extended till 30 and the Period
2 can extend upto 200 maximum. These parameters are sufficient for any trader
to find the trend and do trading.
The Moving Average properties
offers a wide range starting from Simple
moving average (MA), Exponential
Moving Average(EMA), Double Exponential Moving Average (DMA), Triple
Exponential Moving Average (TEMA), Weighted Moving Average(WMA), Hull Moving
Average (HMA), Wilders Moving Average (WMA).
Apart from these parameters, trading can also be done using Linear
Regression Lines.
In the properties window the user has to adjust the MAType I and
MAType 2 according to the table given below. Both MAType 1 and MAType 2 should
be the same number selected from the table given below.
No.1 MA Moving
Average
No.2 EMA Exponential
Moving Average
No.3 DMA Double
Exponential Moving Average
No.4 TEMA Triple
Exponential Moving Average
No.5 WMA Weighted
Moving Average
No.6 HMA Hull
Moving Average
No.7 WMA Wilders
Moving Average
No.8 Linear Regression Lines
Based on the settings the AFL generates buy sell signals.This
strategy, if wisely used can yield fruitful results. This is also useful in
deciding the trend of the market direction.
/////////////////////////////////////////////////////copy the code below this line and paste it in the code editor and save it giving any name you like. Double click your new AFL and the chart will appear. enjoy //////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////
_SECTION_BEGIN("Price");
SetChartOptions(0,chartShowArrows|chartShowDates);
_N(Title = StrFormat("{{NAME}} - {{INTERVAL}} {{DATE}} Open %g, Hi %g, Lo %g, Close %g (%.1f%%) {{VALUES}}", O, H, L, C, SelectedValue( ROC( C, 1 ) ) ));
Plot( C, "Close", ParamColor("Color", colorDefault ), styleNoTitle | ParamStyle("Style") | GetPriceStyle() );
_SECTION_END();
_SECTION_BEGIN("MA_CROSS");
p = Optimize("PERIOD 1",Param("PERIOD 1",10,2,30,1),2,20,2);
q = Optimize("PERIOD 2",Param("PERIOD 2",90,10,200,10),10,100,10);
y = Optimize("MAType 1",Param("MAType 1",2,1,8,1),1,8,1);
z = Optimize("MAType 2",Param("MAType 2",2,1,8,1),1,8,1);
m=0; if (y==1) m = MA(C,p);
else if (y==2) m = EMA(C,p);
else if (y==3) m = DEMA(C,p);
else if (y==4) m = TEMA(C,p);
else if (y==5) m = WMA(C,p);
else if (y==6) m = HMA(C,p);
else if (y==7) m = Wilders(C,p);
else if (y==8) m = LinearReg(C,p);
n=0; if (z==1) n = MA(C,q);
else if (z==2) n = EMA(C,q);
else if (z==3) n = DEMA(C,q);
else if (z==4) n = TEMA(C,q);
else if (z==5) n = WMA(C,q);
else if (z==6) n = HMA(C,q);
else if (z==7) n = Wilders(C,q);
else if (z==8) n = LinearReg(C,q);
Plot(m," MA",IIf(m < Ref(m,-1),colorBlue,colorRed),styleThick);
Plot(n," MA",IIf(n < Ref(n,-1),colorBlue,colorRed),styleThick);
Buy = Cross(m,n);
Sell = Cross(n,m);
Buy = ExRem(Buy,Sell);
Sell = ExRem(Sell,Buy);
Short = Sell; Cover = Buy;
PlotShapes(Buy+2*Sell,colorWhite,0,IIf(Buy,L,H));
SetPositionSize(1,4);
_SECTION_END();
/////////////////////////////////////////////////////////////////end of code///////////////////////////////////////////////////////////////////////
/////////////////////////////////////////////////////copy the code below this line and paste it in the code editor and save it giving any name you like. Double click your new AFL and the chart will appear. enjoy //////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////
_SECTION_BEGIN("Price");
SetChartOptions(0,chartShowArrows|chartShowDates);
_N(Title = StrFormat("{{NAME}} - {{INTERVAL}} {{DATE}} Open %g, Hi %g, Lo %g, Close %g (%.1f%%) {{VALUES}}", O, H, L, C, SelectedValue( ROC( C, 1 ) ) ));
Plot( C, "Close", ParamColor("Color", colorDefault ), styleNoTitle | ParamStyle("Style") | GetPriceStyle() );
_SECTION_END();
_SECTION_BEGIN("MA_CROSS");
p = Optimize("PERIOD 1",Param("PERIOD 1",10,2,30,1),2,20,2);
q = Optimize("PERIOD 2",Param("PERIOD 2",90,10,200,10),10,100,10);
y = Optimize("MAType 1",Param("MAType 1",2,1,8,1),1,8,1);
z = Optimize("MAType 2",Param("MAType 2",2,1,8,1),1,8,1);
m=0; if (y==1) m = MA(C,p);
else if (y==2) m = EMA(C,p);
else if (y==3) m = DEMA(C,p);
else if (y==4) m = TEMA(C,p);
else if (y==5) m = WMA(C,p);
else if (y==6) m = HMA(C,p);
else if (y==7) m = Wilders(C,p);
else if (y==8) m = LinearReg(C,p);
n=0; if (z==1) n = MA(C,q);
else if (z==2) n = EMA(C,q);
else if (z==3) n = DEMA(C,q);
else if (z==4) n = TEMA(C,q);
else if (z==5) n = WMA(C,q);
else if (z==6) n = HMA(C,q);
else if (z==7) n = Wilders(C,q);
else if (z==8) n = LinearReg(C,q);
Plot(m," MA",IIf(m < Ref(m,-1),colorBlue,colorRed),styleThick);
Plot(n," MA",IIf(n < Ref(n,-1),colorBlue,colorRed),styleThick);
Buy = Cross(m,n);
Sell = Cross(n,m);
Buy = ExRem(Buy,Sell);
Sell = ExRem(Sell,Buy);
Short = Sell; Cover = Buy;
PlotShapes(Buy+2*Sell,colorWhite,0,IIf(Buy,L,H));
SetPositionSize(1,4);
_SECTION_END();
/////////////////////////////////////////////////////////////////end of code///////////////////////////////////////////////////////////////////////
Best
of luck and happy trading
This is not changing with time frame.needs fine tuning.For example if I change time frame from hourly to daily EMA is not changing.crossover too.
ReplyDelete