HA+Super Trend
HA+Super Trend
HA+Super Trend
GraphXSpace=12;
SetBarsRequired(100000,0);
SetChartOptions(2, chartWrapTitle|chartHideQuoteMarker|chartShowDates);
New_day = Day()!=Ref(Day(),-1);
Plot(New_day,"",colorLightGrey,styleHistogram|styleLine|styleDashed|styleNoLabel|
styleOwnScale);
SetChartBkColor(ParamColor("bkcolor",ColorRGB(0,0, 0)));
GfxSetBkMode(0);
GfxSetOverlayMode(1);
HACLOSE=(O+H+L+C)/4;
HaOpen = AMA( Ref( HaClose, -1 ), 0.5 );
HaHigh = Max( H, Max( HaClose, HaOpen ) );
HaLow = Min( L, Min( HaClose, HaOpen ) );
COL = IIf(Haclose>HaOpen, colorGreen,IIf(Haclose<=HaOpen,colorRed,31));
PlotOHLC( HaOpen, HaHigh, HaLow, HaClose, "" + Name(),col,StyleCandle|
styleNoLabel);
//SetTradeDelays(1,1,1,1);
SetPositionSize(100,spsShares);
Factor=Param("Factor",3,1,10,0.1);
Pd=Param("ATR Periods",10,1,100,1);
Up=(HaHigh+HaLow)/2+(Factor*ATR(Pd));
Dn=(HaHigh+HaLow)/2-(Factor*ATR(Pd));
iATR=ATR(Pd);
TrendUp=TrendDown=Null;
trend[0]=1;
changeOfTrend=0;
flag=flagh=0;
TrendUp[i] = Null;
TrendDown[i] = Null;
trend[i]=1;
if (HaClose[i]>Up[i-1]) {
trend[i]=1;
if (trend[i-1] == -1) changeOfTrend = 1;
}
else if (HaClose[i]<Dn[i-1]) {
trend[i]=-1;
if (trend[i-1] == 1) changeOfTrend = 1;
}
else if (trend[i-1]==1) {
trend[i]=1;
changeOfTrend = 0;
}
else if (trend[i-1]==-1) {
trend[i]=-1;
changeOfTrend = 0;
}
if (trend[i]<0 && trend[i-1]>0) {
flag=1;
}
else {
flag=0;
}
if (trend[i]>0 && trend[i-1]<0) {
flagh=1;
}
else {
flagh=0;
}
if (trend[i]>0 && Dn[i]<Dn[i-1]){
Dn[i]=Dn[i-1];
}
if (trend[i]<0 && Up[i]>Up[i-1])
{ Up[i]=Up[i-1];
}
if (flag==1)
{ Up[i]=(HaHigh[i]+HaLow[i])/2+(Factor*iATR[i]);
}
if (flagh==1)
{ Dn[i]=(HaHigh[i]+HaLow[i])/2-(Factor*iATR[i]);
}
if (trend[i]==1) {
TrendUp[i]=Dn[i];
if (changeOfTrend == 1) {
TrendUp[i-1] = TrendDown[i-1];
changeOfTrend = 0;
}
}
else if (trend[i]==-1) {
TrendDown[i]=Up[i];
if (changeOfTrend == 1) {
TrendDown[i-1] = TrendUp[i-1];
changeOfTrend = 0;
}
}
}
Plot(TrendUp,"Trend",colorGreen);
Plot(TrendDown,"Down",colorRed);
Buy = trend==1;
Sell=trend==-1;
Buy=ExRem(Buy,Sell);
Sell=ExRem(Sell,Buy);
Short=Sell;
Cover=Buy;
BuyPrice=ValueWhen(Buy,C);
SellPrice=ValueWhen(Sell,C);
ShortPrice=ValueWhen(Short,C);
CoverPrice=ValueWhen(Cover,C);