Change Candle Colour

guptak03

Well-Known Member
#21
Hourly and 10min time frames are enough. Daily TF can be seen before Market open.

All other filters are useless. If you use indicators, you loose attention on price action. Believe me! Simple Trendlines are the best and TF should not be less than 5min.

In fact I am looking for AFL to draw Trendline by joining Lows when Trend is up and Highs when Trend is down. Channel is useful only for sideways trend.
When Trend is sideways trade in lower or higher TF but not below 5min.

PHP:
_SECTION_BEGIN("Trendlines Multitimeframe");
// Amibroker AFL code by Edward Pottasch, 6/8/2011
// Using fractals to create automatic trendlines
// Using option to show multiple timeframes
Version(5.21);
xx=BarIndex();x=xx;Lx=LastValue(x);
nbar=Param("N Pivot Bars",3,2,50,1); 
tf=Param("Time Frame (min)",5,1,100000,1);tfrm=in5Minute*tf;
CleanPivots=ParamToggle("Use Clean Pivots","Off|On",0);
PivotSymmetry=ParamToggle("Use Symmetric Pivots","Off|On",0);
tld=ParamToggle("All trendlines","Show|Hide",1);
showSignals=ParamToggle("Display signals","Off|On",0);

TimeFrameSet(tfrm); 
if (PivotSymmetry)
{
	fc=1;
	pk=H>Ref(HHV(H,nbar*fc),-1) AND Ref(HHV(H,nbar),nbar)<=H;
	tr=L<Ref(LLV(L,nbar*fc),-1) AND Ref(LLV(L,nbar),nbar)>=L;
}
else
{
	fc=2;
	pk=H>Ref(HHV(H,nbar*fc),-1) AND Ref(HHV(H,nbar),nbar)<=H;
	tr=L<Ref(LLV(L,nbar*fc),-1) AND Ref(LLV(L,nbar),nbar)>=L;
}
px0=ValueWhen(pk,x,0); tx0=ValueWhen(tr,x,0);
px1=ValueWhen(pk,x,1); tx1=ValueWhen(tr,x,1);
px2=ValueWhen(pk,x,2); tx2=ValueWhen(tr,x,2);
ph0=ValueWhen(pk,H,0); tl0=ValueWhen(tr,L,0);
ph1=ValueWhen(pk,H,1); tl1=ValueWhen(tr,L,1);
ph2=ValueWhen(pk,H,2); tl2=ValueWhen(tr,L,2);
if (CleanPivots)
{
tr=IIf(pk AND tr AND ph1>ph2 AND tl1>tl2,False,tr);
pk=IIf(pk AND tr AND ph1<ph2 AND tl1<tl2,False,pk);

px0=ValueWhen(pk,x,0); tx0=ValueWhen(tr,x,0);
px1=ValueWhen(pk,x,1); tx1=ValueWhen(tr,x,1);
px2=ValueWhen(pk,x,2); tx2=ValueWhen(tr,x,2);
ph0=ValueWhen(pk,H,0); tl0=ValueWhen(tr,L,0);
ph1=ValueWhen(pk,H,1); tl1=ValueWhen(tr,L,1);
ph2=ValueWhen(pk,H,2); tl2=ValueWhen(tr,L,2);

pk=IIf(pk AND px1>tx1 AND ph1<tl1,False,pk);
tr=IIf(tr AND tx1>px1 AND tl1>ph1,False,tr);
pk=IIf(pk AND px0<tx0 AND ph0>ph1,False,pk);
tr=IIf(tr AND px0>tx0 AND tl0<tl1,False,tr);
pk=IIf(pk AND px2>tx1 AND ph1<=ph2,False,pk);
tr=IIf(tr AND tx2>px1 AND tl1>=tl2,False,tr);
pk=IIf(pk AND px0>px1 AND px1>tx1 AND px1>tx0 AND ph0>ph1,False,pk);
tr=IIf(tr AND tx0>tx1 AND tx1>px1 AND tx1>px0 AND tl0<tl1,False,tr);

px0=ValueWhen(pk,x,0); tx0=ValueWhen(tr,x,0);
px1=ValueWhen(pk,x,1); tx1=ValueWhen(tr,x,1);
px2=ValueWhen(pk,x,2); tx2=ValueWhen(tr,x,2);
ph0=ValueWhen(pk,H,0); tl0=ValueWhen(tr,L,0);
ph1=ValueWhen(pk,H,1); tl1=ValueWhen(tr,L,1);
ph2=ValueWhen(pk,H,2); tl2=ValueWhen(tr,L,2);

pk=IIf(pk AND px1>tx1 AND ph1<tl1,False,pk);
tr=IIf(tr AND tx1>px1 AND tl1>ph1,False,tr);
pk=IIf(pk AND px0<tx0 AND ph0>ph1,False,pk);
tr=IIf(tr AND px0>tx0 AND tl0<tl1,False,tr);
pk=IIf(pk AND px2>tx1 AND ph1<=ph2,False,pk);
tr=IIf(tr AND tx2>px1 AND tl1>=tl2,False,tr);
pk=IIf(pk AND px0>px1 AND px1>tx1 AND px1>tx0 AND ph0>ph1,False,pk);
tr=IIf(tr AND tx0>tx1 AND tx1>px1 AND tx1>px0 AND tl0<tl1,False,tr);

px0=ValueWhen(pk,x,0); tx0=ValueWhen(tr,x,0);
px1=ValueWhen(pk,x,1); tx1=ValueWhen(tr,x,1);
px2=ValueWhen(pk,x,2); tx2=ValueWhen(tr,x,2);
ph0=ValueWhen(pk,H,0); tl0=ValueWhen(tr,L,0);
ph1=ValueWhen(pk,H,1); tl1=ValueWhen(tr,L,1);
ph2=ValueWhen(pk,H,2); tl2=ValueWhen(tr,L,2);

pk=IIf(pk AND px1>tx1 AND px2>tx1 AND ph1<ph2,False,pk);
tr=IIf(tr AND tx1>px1 AND tx2>px1 AND tl1>tl2,False,tr);
}
pkh=IIf(pk,H,Null);
trl=IIf(tr,L,Null);
TimeFrameRestore();
fact=Max(tfrm/60,Interval()/60)/(Interval()/60);
Lkbk=tfrm/Interval();
if(Lkbk>1)
{
	pk=TimeFrameExpand(pk,tfrm,expandFirst);	
	pkh=TimeFrameExpand(pkh,tfrm,expandFirst);
	pkhs=IIf(!IsEmpty(pkh),1,0);pkhs=pkhs-Ref(pkhs,-1);
	pk=pk AND H==pkh;
	cond1=Sum(pk,BarsSince(pkhs==1)+1)==1 AND pk;
	pk=pk AND cond1;
	
	tr=TimeFrameExpand(tr,tfrm,expandFirst);	
	trl=TimeFrameExpand(trl,tfrm,expandFirst);
	trls=IIf(!IsEmpty(trl),1,0);trls=trls-Ref(trls,-1);
	tr=tr AND L==trl;
	cond1=Sum(tr,BarsSince(trls==1)+1)==1 AND tr;
	tr=tr AND cond1;
	
	px0=ValueWhen(pk,x,0); tx0=ValueWhen(tr,x,0);
	px1=ValueWhen(pk,x,1); tx1=ValueWhen(tr,x,1);
	px2=ValueWhen(pk,x,2); tx2=ValueWhen(tr,x,2);
	ph0=ValueWhen(pk,H,0); tl0=ValueWhen(tr,L,0);
	ph1=ValueWhen(pk,H,1); tl1=ValueWhen(tr,L,1);
	ph2=ValueWhen(pk,H,2); tl2=ValueWhen(tr,L,2);
}
y0=ValueWhen(tr,trl,0); 
y1=ValueWhen(tr,trl,1);
y2=ValueWhen(tr,trl,2);
y3=ValueWhen(tr,trl,3);
x0=ValueWhen(tr,xx,0);
x1=ValueWhen(tr,xx,1);
x2=ValueWhen(tr,xx,2);
x3=ValueWhen(tr,xx,3);
aa=(Y0-Y1)/(X0-X1);
ls1=aa*(xx-X1)+Y1;
dls1=ls1-Ref(ls1,-1);
aa=(Y1-Y2)/(X1-X2);
ls2=aa*(xx-X1)+Y1;
dls2=ls2-Ref(ls2,-1);
dls2=IIf(tr,Ref(dls1,-1),dls2);
aa=(Y2-Y3)/(X2-X3);
ls3=aa*(xx-X2)+Y2;
dls3=ls3-Ref(ls3,-1);
dls3=IIf(tr,Ref(dls2,-1),dls3);
y0=ValueWhen(pk,pkh,0); 
y1=ValueWhen(pk,pkh,1);
y2=ValueWhen(pk,pkh,2);
y3=ValueWhen(pk,pkh,3);
x0=ValueWhen(pk,xx,0);
x1=ValueWhen(pk,xx,1);
x2=ValueWhen(pk,xx,2);
x3=ValueWhen(pk,xx,3);
aa=(Y0-Y1)/(X0-X1);
hs1=aa*(xx-X1)+Y1;
dhs1=hs1-Ref(hs1,-1);
aa=(Y1-Y2)/(X1-X2);
hs2=aa*(xx-X1)+Y1;
dhs2=hs2-Ref(hs2,-1);
dhs2=IIf(pk,Ref(dhs1,-1),dhs2);
aa=(Y2-Y3)/(X2-X3);
hs3=aa*(xx-X2)+Y2;
dhs3=hs3-Ref(hs3,-1);
dhs3=IIf(pk,Ref(dhs2,-1),dhs3);
if (tld)
{
	dd=0.0;
	Vh=dd*(ValueWhen(pk,C)-ValueWhen(pk,Ref(C,-1)))/ValueWhen(pk,C);
	Vl=dd*(ValueWhen(tr,C)-ValueWhen(tr,Ref(C,-1)))/ValueWhen(tr,C);
	ls1=IIf(dls1>=Vl,ls1,Null);
	ls2=IIf(dls2>=Vl,ls2,Null);
	ls3=IIf(dls3>=Vl,ls3,Null);
	hs1=IIf(dhs1<=Vh,hs1,Null);
	hs2=IIf(dhs2<=Vh,hs2,Null);
	hs3=IIf(dhs3<=Vh,hs3,Null);
}
ls2a=IIf(BarsSince(tr)<=nbar*fact,ls2,Null);
ls2b=IIf(BarsSince(tr)>nbar*fact,ls2,Null);
ls3=IIf(BarsSince(tr)<=nbar*fact,ls3,Null);
hs2a=IIf(BarsSince(pk)<=nbar*fact,hs2,Null);
hs2b=IIf(BarsSince(pk)>nbar*fact,hs2,Null);
hs3=IIf(BarsSince(pk)<=nbar*fact,hs3,Null);
_SECTION_END();

_SECTION_BEGIN("Chart Colors");
SetChartBkColor(ParamColor("Background Color",ColorRGB(0,0,0)));
SetChartOptions(0,chartShowDates);
SetBarFillColor(IIf(C>O,ParamColor("Candle UP Color", colorGreen),IIf(C<=O,ParamColor("Candle Down Color", colorRed),colorLightGrey)));
Plot(C,"Price",IIf(C>O,ParamColor("Wick UP Color", colorDarkGreen),IIf(C<=O,ParamColor("Wick Down Color", colorDarkRed),colorLightGrey)),64,0,0,0,0);
Plot(pkh,"",colorRed,styleThick,0,0,0,-1);
Plot(trl,"",colorBrightGreen,styleThick,0,0,0,-1);	
PlotShapes(shapeSmallCircle*tr,IIf(Lx-ValueWhen(tr,x)>nbar*fact,ColorRGB(0,100,0),colorWhite),0,L,-10);
PlotShapes(shapeSmallCircle*pk,IIf(Lx-ValueWhen(pk,x)>nbar*fact,ColorRGB(255,0,0),colorWhite),0,H,10);
Plot(ls1,"\nLower Trendline",colorBrightGreen,styleLine|styleNoRescale,0,0,0,-1);
Plot(ls2a,"",colorLightGrey,styleNoLine|styleDots|styleThick|styleNoRescale,0,0,0,-1);
Plot(ls2b,"",colorDarkGreen,styleNoLine|styleDots|styleThick|styleNoRescale,0,0,0,-1);
Plot(ls3,"",colorDarkGreen,styleNoLine|styleDots|styleThick|styleNoRescale,0,0,0,-1);
Plot(hs1,"\nUpper Trendline",colorRed,styleLine|styleNoRescale,0,0,0,-1);
Plot(hs2a,"",colorLightGrey,styleNoLine|styleDots|styleThick|styleNoRescale,0,0,0,-1);
Plot(hs2b,"",colorOrange,styleNoLine|styleDots|styleThick|styleNoRescale,0,0,0,-1);
Plot(hs3,"",colorOrange,styleNoLine|styleDots|styleThick|styleNoRescale,0,0,0,-1);
_SECTION_END();

if(showSignals)
{
Buy=( (!IsEmpty(Ref(hs2b,-1)) AND Ref(C<hs2b,-1)) AND (!IsEmpty(hs2b) AND C>hs2b) )
OR ( (!IsEmpty(Ref(hs3,-1)) AND Ref(C<hs3,-1)) AND (!IsEmpty(hs3) AND C>hs3) )
OR ( (!IsEmpty(Ref(hs2b,-1)) AND Ref(C<hs2b,-1)) AND (!IsEmpty(hs3) AND C>hs3) );
Buy=ExRem(Buy,tr OR pk);
BuyPrice=C;

Short=( (!IsEmpty(Ref(ls2b,-1)) AND Ref(C>ls2b,-1)) AND (!IsEmpty(ls2b) AND C<ls2b) )
OR ( (!IsEmpty(Ref(ls3,-1)) AND Ref(C>ls3,-1)) AND (!IsEmpty(ls3) AND C<ls3) )
OR ( (!IsEmpty(Ref(ls2b,-1)) AND Ref(C>ls2b,-1)) AND (!IsEmpty(ls3) AND C<ls3) );
Short=ExRem(Short,tr OR pk);
ShortPrice=C;
PlotShapes(IIf(Buy,shapeSmallUpTriangle,shapeNone),colorGreen,0,L,-15);
PlotShapes(IIf(Buy,shapeSmallCircle,shapeNone),colorWhite,0,BuyPrice,0);
PlotShapes(IIf(Short,shapeSmallDownTriangle,shapeNone),colorRed,0,H,-15);
PlotShapes(IIf(Short,shapeSmallCircle,shapeNone),colorWhite,0,ShortPrice,0);
}

qq=Interval()/60;
if(qq < 60){tf=" min";tt=qq;}
else if(qq >= 60 AND qq < 1440){tf=" hrs";tt=qq/60;}
else if(qq >= 1440){tf=" days";tt=(qq/60)/24;}
qq=Max(tfrm/60,Interval()/60);
if(qq < 60){tfa=" min";tta=qq;}
else if(qq >= 60 AND qq < 1440){tfa=" hrs";tta=qq/60;}
else if(qq >= 1440){tfa=" days";tta=(qq/60)/24;}

Title = Name() + 
"\nNbar: " + nbar + 
"\nChart TF: " + tt + tf + 
"\nTrend TF: " + tta + tfa;

_SECTION_BEGIN("Label");
disp=ParamToggle("Display labels","Off|On",1);
dxhm=Param("Shift X Highs (Margin)",14,-100,100,1);
dxlm=Param("Shift X Lows (Margin)",10,-100,100,1);
dxh=Param("Shift X Highs",0,-100,100,1);
dxl=Param("Shift X Lows",0,-100,100,1);
dyhm=Param("Shift Y Highs (Margin)",5,-100,100,1);
dylm=Param("Shift Y Lows (Margin)",3,-100,100,1);
dyh=Param("Shift Y Highs",18,-100,100,1);
dyl=Param("Shift Y Lows",29,-100,100,1);
hm=Param("Marging High",30,-100,100,1);
lm=Param("Margin Low",30,-100,100,1);

function GetVisibleBarCount() 
{
	lvb=Status("lastvisiblebar");
	fvb=Status("firstvisiblebar");
	return Min(lvb-fvb,BarCount-fvb);
} 
function GfxConvertPixelsToBarX(Pixels)
{
	lvb=Status("lastvisiblebar");
	fvb=Status("firstvisiblebar");
	pxchartleft=Status("pxchartleft");
	pxchartwidth=Status("pxchartwidth");
	fac=pxchartwidth/Pixels;
	bar=(lvb-fvb)/fac;
	return bar;
} 
function GfxConvertPixelToValueY(Pixels) 
{
	local Miny,Maxy,pxchartbottom,pxchartheight;
	Miny=Status("axisminy");
	Maxy=Status("axismaxy");
	pxchartbottom=Status("pxchartbottom");
	pxchartheight=Status("pxchartheight");
	fac=pxchartheight/Pixels;
	Value=(Maxy-Miny)/fac;
	return Value;
} 
if(disp)
{
ll=tr AND tl1<tl2;
hl=tr AND tl1>tl2;
hh=pk AND ph1>ph2;
lh=pk AND ph1<ph2;
dt=pk AND ph1==ph2;
db=tr AND tl1==tl2;

PlotShapes(shapeHollowCircle*lh,ColorRGB(255,193,193),0,H,10);
PlotShapes(shapeHollowCircle*hl,ColorRGB(202,255,112),0,L,-10);

miny=Status("axisminy");
maxy=Status("axismaxy");
AllVisibleBars=GetVisibleBarCount();
fvb=Status("firstvisiblebar");
LowMargin=Miny+GfxConvertPixelToValueY(lm);
HighMargin=Maxy-GfxConvertPixelToValueY(hm);
dyllm=GfxConvertPixelToValueY(dylm);
dyhhm=GfxConvertPixelToValueY(dyhm);
dyll=GfxConvertPixelToValueY(dyl);
dyhh=GfxConvertPixelToValueY(dyh);
dxllm=GfxConvertPixelsToBarX(dxlm);
dxhhm=GfxConvertPixelsToBarX(dxhm);
dxll=GfxConvertPixelsToBarX(dxl);
dxhh=GfxConvertPixelsToBarX(dxh);

for(i=0;i<AllVisibleBars;i++) 
{
	if(ll[i+fvb] AND L[i+fvb]>LowMargin) PlotText("LL",i+fvb+dxll,L[i+fvb]-dyll,colorWhite,colorBlack);
	if(ll[i+fvb] AND L[i+fvb]<=LowMargin) PlotText("LL",i+fvb+dxll+dxllm,L[i+fvb]-dyllm,colorWhite,colorBlack);
	if(hl[i+fvb] AND L[i+fvb]>LowMargin) PlotText("HL",i+fvb+dxll,L[i+fvb]-dyll,colorWhite,colorBlack);
	if(hl[i+fvb] AND L[i+fvb]<=LowMargin) PlotText("HL",i+fvb+dxll+dxllm,L[i+fvb]-dyllm,colorWhite,colorBlack);
	if(db[i+fvb] AND L[i+fvb]>LowMargin) PlotText("DB",i+fvb+dxll,L[i+fvb]-dyll,colorWhite,colorBlack);
	if(db[i+fvb] AND L[i+fvb]<=LowMargin) PlotText("DB",i+fvb+dxll+dxllm,L[i+fvb]-dyllm,colorWhite,colorBlack);	
	if(hh[i+fvb] AND H[i+fvb]<HighMargin) PlotText("HH",i+fvb+dxhh,H[i+fvb]+dyhh,colorWhite,colorBlack);
	if(hh[i+fvb] AND H[i+fvb]>=HighMargin) PlotText("HH",i+fvb+dxhh+dxhhm,H[i+fvb]+dyhhm,colorWhite,colorBlack);	
	if(lh[i+fvb] AND H[i+fvb]<HighMargin) PlotText("LH",i+fvb+dxhh,H[i+fvb]+dyhh,colorWhite,colorBlack);
	if(lh[i+fvb] AND H[i+fvb]>=HighMargin) PlotText("LH",i+fvb+dxhh+dxhhm,H[i+fvb]+dyhhm,colorWhite,colorBlack);		
	if(dt[i+fvb] AND H[i+fvb]<HighMargin) PlotText("DT",i+fvb+dxhh,H[i+fvb]+dyhh,colorWhite,colorBlack);
	if(dt[i+fvb] AND H[i+fvb]>=HighMargin) PlotText("DT",i+fvb+dxhh+dxhhm,H[i+fvb]+dyhhm,colorWhite,colorBlack);	
}
Plot(tr,"",ColorRGB(0,100,0),styleHistogram|styleDashed|styleOwnScale|styleNoLabel,0,1,0,0);
Plot(pk,"",ColorRGB(100,0,0),styleHistogram|styleDashed|styleOwnScale|styleNoLabel,0,1,0,0);

}
_SECTION_END();

josh sir are you asking for this kind of afl!!!!
 

josh1

Well-Known Member
#22
That one is very good Uday. It is nicely creating TLs by joining pivots.
Is it possible to draw minor TLs by joining highs/lows of each bar. Say join Highs after HH or LH and join lows after HL or LL?
 
#24
Hi 4candles and Joshi1,

Your code is very useful, thank you very much but there are many whispers with super trend afl, tow days back I saw a chart with my friend, it is also based on ATR, but it is customized. It is filtering most of the unwanted signals, it is giving good result even in lower time frame like 1min,3min and 5min.

It is protected with dlls, but I have screen shots and protected afl, if you can try to add some code to your existing code, it will be very useful.

ramu (p r d e v i @ l i v e dot c o m)
 

josh1

Well-Known Member
#25
Hi 4candles and Joshi1,

Your code is very useful, thank you very much but there are many whispers with super trend afl, tow days back I saw a chart with my friend, it is also based on ATR, but it is customized. It is filtering most of the unwanted signals, it is giving good result even in lower time frame like 1min,3min and 5min.

It is protected with dlls, but I have screen shots and protected afl, if you can try to add some code to your existing code, it will be very useful.

ramu (p r d e v i @ l i v e dot c o m)
It all depends on your percentage factor. If you increase it, lesser whpsaws.
 

4candles

Well-Known Member
#26
Hi 4candles and Joshi1,

Your code is very useful, thank you very much but there are many whispers with super trend afl, tow days back I saw a chart with my friend, it is also based on ATR, but it is customized. It is filtering most of the unwanted signals, it is giving good result even in lower time frame like 1min,3min and 5min.

It is protected with dlls, but I have screen shots and protected afl, if you can try to add some code to your existing code, it will be very useful.
Hi Ramulu


All the shortlisted indicators or systems that one finally uses, always lag or have whipsaws/whispers at one point or another and on any time frame.
While, at one instance, one indicator shows early/timely correct signal, another indicator may lag or have whipsaws. And in the next instance, the latter may be correct and the earlier indicator/s may be wrong.
This is also true when indicators are used in combination.

It is ultimately the trader’s decision whether or not to take the call, based on his usage experience, and after considering the profit and loss -if it works in favor or against.

Also, it is not necessary that a particular system that has worked well for someone will also work for others. It has worked for him because he understands the system and it suits his trading style. Besides, you do not know how many of the signals have been correct and haw many failed or avoided because of doubt -the choices that he has made. If the same has to work for you, you have to learn those rules and those psychological approach.


Ramulu, I am not a AFL expert. If I were I would have atleast tried.

My Sincere advise - check with your friend whether he is willing to share and explain his system with you. If so, stick with it for some time - paper trade or trade in small amounts.

Regards

K.
 

mastermind007

Well-Known Member
#27
I want to change candle barfill color on satisfaction of following conditions.
1.If close>open -Candle Up Color -Green else if If close<=open - Candle Down Color- Red
2.If close>open - wick up color -paleGreen else If close<=open -wick down color - colorRose

All these are working fine with below code-
1.SetBarFillColor(IIf(C>O,ParamColor("Candle UP Color", colorGreen),IIf(C<=O,ParamColor("Candle Down Color", colorRed),colorLightGrey)));
2.Plot(C,"\nPrice",IIf(C>O,ParamColor("Wick UP Color", colorPaleGreen),IIf(C<=O,ParamColor("Wick Down Color", colorRose),colorLightGrey)),64,0,0,0,0);

Now I want this-
for i = 4 to Barcount -1,

if close of a candle below low of earlier candle then
if any of two previous candles closed above high of its previous candle then
Barfill colour = Blue

The folowing code passes Syntax test but AmiBroker gives exception error and closes.

for (i = 4; i <BarCount-1; i++) {
IIf ( Close<Low[i-1], IIf ( Close[i-1]>High[i-2] OR Close[i-2]>High[i-3] , SetBarFillColor(ParamColor("Trend Down Color", colorBlue)),1==1),1==1);
}

I realise now that this contradicts with the Condition no.1 above. They should be combined to get desired result.

Can somebody help please? Thanks in advance.


You should not call SetBarFillColor inside a loop ...
Code:
SetBarFillColor(
[COLOR="Yellow"]	IIF(C < Ref(L, -1) AND ((Ref(C, -1) > Ref(HHV(H,2), -1)) OR (Ref(C, -2) > Ref(HHV(H,2), -2))), colorBlue,
[/COLOR]	IIf(C  > O, ParamColor("Candle UP Color", colorGreen),
	IIf(C <= O, ParamColor("Candle Down Color", colorRed),
	colorLightGrey
	))));
 

josh1

Well-Known Member
#28
You should not call SetBarFillColor inside a loop ...
Code:
SetBarFillColor(
[COLOR="Yellow"]	IIF(C < Ref(L, -1) AND ((Ref(C, -1) > Ref(HHV(H,2), -1)) OR (Ref(C, -2) > Ref(HHV(H,2), -2))), colorBlue,
[/COLOR]	IIf(C  > O, ParamColor("Candle UP Color", colorGreen),
	IIf(C <= O, ParamColor("Candle Down Color", colorRed),
	colorLightGrey
	))));
That syntax is error free but it did not work somehow. Nevertheless, I got the idea and also learnt how to break IIF line in multiple and changed it suitably. Below code is working
Code:
SetBarFillColor(
	IIf(C < Ref(L, -1) AND ((Ref(C, -1) > Ref(H, -2)) OR (Ref(C, -2) > Ref(H, -3))), ParamColor("Trend DN Color", colorBlue),
	IIf(C > Ref(H, -1) AND ((Ref(C, -1) < Ref(L, -2)) OR (Ref(C, -2) < Ref(L, -3))), ParamColor("Trend UP Color", colorAqua),
	IIf(C  > O, ParamColor("Candle UP Color", colorGreen),ParamColor("Candle Down Color", colorRed)
	))));
 

mastermind007

Well-Known Member
#29
That syntax is error free but it did not work somehow. Nevertheless, I got the idea and also learnt how to break IIF line in multiple and changed it suitably. Below code is working
Code:
SetBarFillColor(
	IIf(C < Ref(L, -1) AND ((Ref(C, -1) > Ref(H, -2)) OR (Ref(C, -2) > Ref(H, -3))), ParamColor("Trend DN Color", colorBlue),
	IIf(C > Ref(H, -1) AND ((Ref(C, -1) < Ref(L, -2)) OR (Ref(C, -2) < Ref(L, -3))), ParamColor("Trend UP Color", colorAqua),
	IIf(C  > O, ParamColor("Candle UP Color", colorGreen),ParamColor("Candle Down Color", colorRed)
	))));
;)
Great!!! I have not actually understood what you were trying to achieve with blue color but was able to pinpoint the error in your approach so ....
 

mastermind007

Well-Known Member
#30
I just stacked the code one after the other to get multiple TFs on same charts, not efficient but works :D
Supertrend Sandwich ....

Wow, that can be a new name for Indicator!!!
 

Similar threads