_SECTION_BEGIN("cci wodie 3");
///////////////////////////////
// CCI Panel for Amibroker
// Codded/Added by Dennis, Kris, Wring, Santacs, Yofa (jtoth100)
// Last Update: 10/19/2008
///////////////////////////////
// Go to www.woodiescciclub.com to learn everything about this system.
// You must be a registered user to see the images and downloads.
///////////////////////////////
// Setup Axes and Grid section (right click on chart panel, click on Parameters):
// Scaling: Custom , Min=-250 Max=250
// Show Date Axis = Yes , Show Middle Lines = No
///////////////////////////////
// To activate the timer properly, make sure the following is set:
// click on Tools==>Preferences==>Intraday....
// make sure "Allign minute bars to market hours" is checked...
// make sure "Start time of interval" is checked...
// make sure "Override: Weekly/monthly bars use day of last trade" is checked.
///////////////////////////////
// Tic/PIP values: YM=1.0, ER2=0.10, NQ=0.25, EUR/USD=.0001, USD/JPY=0.01, Stocks=0.01
///////////////////////////////
// Rangebar Settings :
// ER2 1.50
// YM 25
// ES 3
// NQ 3.75
// DAX 5
// ZG 1.5
///////////////////////////////
// Discalimer: For educational purposes only. Trade at your own risk.
///////////////////////////////
// ********************************************************************************************
// Static variable functions used in charts
// ********************************************************************************************
function StaticName( VarName )
{
return Name() + VarName;
}
procedure StaticSet( VarName, VarValue )
{
StaticVarSet(Name() + VarName, VarValue);
}
function StaticGet( VarName )
{
return Nz(StaticVarGet(Name() + VarName));
}
procedure StaticSetText( VarName, VarValue )
{
StaticVarSetText(Name() + VarName, VarValue);
}
function StaticGetText( VarName )
{
return StaticVarGetText(Name() + VarName);
}
// ********************************************************************************************
// Basic panel setup
// ********************************************************************************************
//Disable printing to commentary window
EnableTextOutput(False);
//Version info of the panel
Revision = "$Revision: 39 $";
SetChartOptions(0, chartShowDates);
SetChartOptions(3, chartLogarithmic, chartGridMiddle | chartGridPercent |
chartGridMargins);
//Anything to print at the end of the tooltip for debugging purposes
ToolTipDebug = "";
// Bar indexes for titles and commentary
LastBarIndex = BarCount-1;
CurBarIndex = SelectedValue(BarIndex());
if (CurBarIndex > LastBarIndex) //on tick charts SelectedValue(BarIndex()) may point beyond last bar
CurBarIndex = LastBarIndex;
// ********************************************************************************************
// Low level graphics setup
// ********************************************************************************************
if (Status("action") == 1) //indicator
{
MinY = Status("axisminy");
MaxY = Status("axismaxy");
TotalY = MaxY - MinY;
LastVisibleIndex = Status("lastvisiblebarindex");
FirstVisibleIndex = Status("firstvisiblebarindex");
TotalVisibleBars = LastVisibleIndex - FirstVisibleIndex;
PixelWidth = Status("pxwidth");
PixelHeight = Status("pxheight");
ScaleY = PixelHeight / TotalY;
}
else
{
MinY = -300;
MaxY = 300;
TotalY = MaxY - MinY;
LastVisibleIndex = BarCount -1;
FirstVisibleIndex = 0;
TotalVisibleBars = LastVisibleIndex - FirstVisibleIndex;
PixelWidth = 1;
PixelHeight = 1;
ScaleY = PixelHeight / TotalY;
}
FontNameSmall = "Ariel";
FontSizeSmall = 8;
FontWeightSmall = 300;
FontNameNormal = "MS Sans Serif";
FontSizeNormal = 8;
FontWeightNormal = 300;
FontNameBig = "MS Sans Serif";
FontSizeBig = 10;
FontWeightBig=700;
GfxSetOverlayMode(0); //low level graph over chart...
GfxSetBkMode(1); //transparent
GfxSelectPen( StaticGet("ChartBkColor"), 1, 0); //to clear value area
GfxSelectSolidBrush( StaticGet("ChartBkColor") );
GfxSetTextColor( StaticGet("ChartTextColor") );
GfxSetTextAlign(10); //right, buttom
GfxSelectFont(FontNameSmall, FontSizeSmall, FontWeightSmall, True, False, 0);
GfxTextOut("by Yofa", PixelWidth-2, PixelHeight-12 );
GfxTextOut(Revision, PixelWidth-2, PixelHeight );
GfxSetTextAlign(26); //right, baseline
GfxSelectFont(FontNameNormal, FontSizeNormal, FontWeightNormal, False, False,
0);
function GfxMapYtoPixelY(Y)
{
return ( TotalY / 2 - Y ) * ScaleY;
}
_SECTION_END(); //Woodie CCI - Indicators
// Timer
TTMperiod = 6;
Low_ma = EMA(L, TTMperiod);
High_ma = EMA(H, TTMperiod);
Low_third = (High_ma - Low_ma) / 3 + Low_ma;
High_third = 2 * (High_ma - Low_ma) / 3 + Low_ma;
tempnum = Now( 4 ) - TimeNum();
TimeRem = Interval() - ((int(tempnum[BarCount - 1] / 100) * 60) +
(tempnum[BarCount - 1] - int(tempnum[BarCount - 1] / 100) * 100));
if (TimeRem[BarCount - 1] < 0) TimeRem = 0;
MinuteVar = int(TimeRem / 60);
SecondsVar = int(frac(TimeRem / 60) * 60);
if (TimeRem[BarCount - 1] > 60)
{
TitleTimeRem = EncodeColor(colorWhite) + MinuteVar + ":" + WriteIf(SecondsVar >
9, "", "0") + SecondsVar;
}
else if (TimeRem[BarCount - 1] > 20)
{
TitleTimeRem = EncodeColor(colorYellow) + MinuteVar + ":" + WriteIf(SecondsVar
> 9, "", "0") + SecondsVar;
}
else
{
TitleTimeRem = EncodeColor(colorRed) + MinuteVar + ":" + WriteIf(SecondsVar >
9, "", "0") + SecondsVar;
}
// Background color
SetChartBkColor(ParamColor("Panel color ",colorBlack));
// CCI colors
zcolor= ParamColor("WCCI color",colorWhite);
z6color= ParamColor("TCCI color",colorYellow);
patterncolor= ParamColor("Pattern trace color",colorGreen);
// CCI periods
zperiod=Param("WCCI period",14,0,100);
z = CCI(zperiod);
z6period=Param("TCCI period",6,0,1000);
z6 = CCI(z6period);
// Tic/PIP value
TicMult= Param("Tic multiplier(ER2=10,YM=1,ES=4,FOREX=1)",1,0,1000000);
TicDiv= Param("Tic or PIP value(ER2=0.1,YM=1,FOREX=1)",1,0,1000000);
// Rangebar interval
rbint= Param("Rangebar
Interval:(YM=25.0,AB=1.5,NQ=3.75,ES=3.0)",1.0,0.25,1000000);
// Rangebar counter
rbcounter= round(((rbint-(H-L))) * ticmult);
rbcounterpercent= round((rbcounter/(rbint * ticmult))*100);
// Timer/counter title
timercode= Param("Timer:(minutes=1,rangebar=2)",1,1,2);
timetitle= WriteIf(timercode==1,TitleTimeRem, EncodeColor(colorWhite) +
"Countdown " + rbcounter + " (" + rbcounterpercent + "%)");
// Spread
spread= Param("Spread (included in stop)",0,0,1000000);
// Stop value
stopval= Param("Stop above/below entry bar",5,0,1000000);
// Plot grids
PlotTheGrids = ParamToggle("Plot grids","No|Yes",0);
if (PlotTheGrids ==1)
{
PlotGrid(0);
PlotGrid(-100);
PlotGrid(100);
PlotGrid(-200);
PlotGrid(200);
}
// Angle variables
PI = atan(1.00) * 4;
periods = 30;
HighHigh = HHV(H, periods);
LowLow = LLV(L, periods);
range = 25 / (HighHigh - LowLow) * LowLow;
// EMA34 Angle
EMA34 = EMA(C,34);
x1_EMA34 = 0;
x2_EMA34 = 1;
y1_EMA34 = 0;
y2_EMA34 = (Ref(EMA34, -1) - EMA34) / Avg * range;
c_EMA34 = sqrt((x2_EMA34 - x1_EMA34)*(x2_EMA34 - x1_EMA34) + (y2_EMA34 -
y1_EMA34)*(y2_EMA34 - y1_EMA34));
angle_EMA34 = round(180 * acos((x2_EMA34 - x1_EMA34)/c_EMA34) / PI);
angle_EMA34 = IIf(y2_EMA34 > 0, - angle_EMA34, angle_EMA34);
// LSMA25 Angle
LSMA25 = LinearReg(C, 25 );
x1_LSMA25 = 0;
x2_LSMA25 = 1;
y1_LSMA25 = 0;
y2_LSMA25 = (Ref(LSMA25, -1) - LSMA25) / Avg * range;
c_LSMA25 = sqrt((x2_LSMA25 - x1_LSMA25)*(x2_LSMA25 - x1_LSMA25) + (y2_LSMA25 -
y1_LSMA25)*(y2_LSMA25 - y1_LSMA25));
angle_LSMA25 = round(180 * acos((x2_LSMA25 - x1_LSMA25)/c_LSMA25) / PI);
angle_LSMA25 = IIf(y2_LSMA25 > 0, - angle_LSMA25, angle_LSMA25);
// Color the bars for Woodies Trend Following
function Consecutive( array )
{
return BarsSince( NOT( array ) );
}
function Occurrences( array , period )
{
return Sum( array, period );
}
array = z;
HighBars = Consecutive( array > 0 );
LowBars = Consecutive( array < 0 );
UpCondition = BarsSince( HighBars >= 6 AND Occurrences( array > 100 , 5 ) > 0
);
DnCondition = BarsSince( LowBars >= 6 AND Occurrences( array < -100 , 5 ) > 0
);
UpTrend = ( array > 0 ) AND ( UpCondition < DnCondition );
DnTrend = ( array < 0 ) AND ( UpCondition > DnCondition );
TrTrend = ( HighBars >= 5 AND NOT UpTrend ) OR ( LowBars >= 5 AND NOT DnTrend
);
Color = IIf( UpTrend, colorBlue, IIf( DnTrend, colorRed, IIf( TrTrend,
colorYellow, colorGrey40 ) ) );
// Plot the Mock CZI on the 100s
ColorANGLE_EMA = IIf(angle_EMA34 >=5,colorTurquoise,
IIf(angle_EMA34 <5 AND angle_EMA34 >=3.57,colorDarkGreen,
IIf(angle_EMA34 <3.57 AND angle_EMA34 >=2.14,colorPaleGreen,
IIf(angle_EMA34 <2.14 AND angle_EMA34 >=.71,colorLime,
IIf(angle_EMA34 <=-1*5,colorDarkRed,
IIf(angle_EMA34 >-1*5 AND angle_EMA34 <=-1*3.57,colorRed,
IIf(angle_EMA34 >-1*3.57 AND angle_EMA34 <=-1*2.14,colorOrange,
IIf(angle_EMA34 >-1*2.14 AND angle_EMA34
<=-1*.71,colorLightOrange,colorYellow))))))));
Plot(100,"", ColorANGLE_EMA , styleLine | styleThick | styleNoLabel);
Plot(101,"", ColorANGLE_EMA , styleLine | styleThick | styleNoLabel);
Plot(102,"", ColorANGLE_EMA , styleLine | styleThick | styleNoLabel);
Plot(103,"", ColorANGLE_EMA , styleLine | styleThick | styleNoLabel);
Plot(99,"", ColorANGLE_EMA , styleLine | styleThick | styleNoLabel);
Plot(98,"", ColorANGLE_EMA , styleLine | styleThick | styleNoLabel);
//Plot(50,"", ColorANGLE_EMA , styleLine | styleThick | styleNoLabel);
//Plot(-50,"", ColorANGLE_EMA , styleLine | styleThick | styleNoLabel);
Plot(-100,"", ColorANGLE_EMA , styleLine | styleThick | styleNoLabel);
// Plot the Mock Sidewinder on the 200s
SW = IIf((abs(angle_EMA34) >= 15) AND (abs(angle_EMA34 + angle_LSMA25) >= 50),
IIf(angle_LSMA25 > 0, 2, -2),
IIf((abs(angle_EMA34) >= 0) AND (((angle_EMA34 >= 0) AND (angle_LSMA25 >= 0))
OR ((angle_EMA34 <= 0) AND (angle_LSMA25 <= 0))) AND (abs(angle_EMA34 +
angle_LSMA25) >= 5), IIf(angle_LSMA25 > 0, 1, -1), 0));
ColorSW = IIf(abs(SW) == 2, colorBrightGreen,
IIf(abs(SW) == 1, colorYellow, colorRed));
Plot(200,"", ColorSW, styleLine | styleThick | styleNoLabel);
Plot(-200,"", ColorSW, styleLine | styleThick | styleNoLabel);
// Zero line 25lsma
Plot(0,"", IIf(C > LSMA25,colorBrightGreen,IIf(C < LSMA25,colorRed,colorTeal)),
styleLine | styleThick | styleNoLabel);
// CCI Points
diffCode=ParamToggle("Plot CCI diff ","No|Yes",1);
CCipointmove= z-Ref(z,-1);
diff_cci = round(CCipointmove*10)/10;
CCIpointmovetitle =
WriteIf(Ref(z,-1) > Ref(z,-2),EncodeColor(colorBrightGreen),EncodeColor(colorRed))+"Diff Ex : "+
Ref(diff_cci,-1) +
WriteIf(z > Ref(z,-1),EncodeColor(colorBrightGreen),EncodeColor(colorRed))+" Now : "+
diff_cci +"\n";
/*
CCIpointmovetitle= WriteIf(diffcode==1 AND
abs(CCipointmove)<15,EncodeColor(colorRed) + "\n" + "DIFF " +
abs(round(CCipointmove)) + "\n",WriteIf(diffcode==1 AND abs(CCipointmove)>=15
AND abs(CCipointmove)<20,EncodeColor(colorYellow) + "\n" + "DIFF " +
abs(round(CCipointmove)) + "\n",WriteIf(diffcode==1 AND
abs(CCIpointmove)>=20,EncodeColor(colorBrightGreen) + "\n" + "DIFF " +
abs(round(CCipointmove))+ "\n","")));
*/
// Price Panel
Lastpricetitlehi= WriteIf(H>Ref(H,-1),EncodeColor(colorBrightGreen) + Ref(H,-1)
+ " " + H , EncodeColor(colorWhite)+ Ref(H,-1) + " " + H);
Lastpricetitlelo= WriteIf(L<Ref(L,-1),EncodeColor(colorRed) + Ref(L,-1) + " "
+ L , EncodeColor(colorWhite) + Ref(L,-1) + " " + L);
Closecolor=WriteIf(C==H AND
H>Ref(H,-1),EncodeColor(colorBrightGreen),WriteIf(C==L AND
L<Ref(L,-1),EncodeColor(colorRed),EncodeColor(colorWhite)));
//Pivot Points Calculations
pivCode=ParamToggle("Plot pivots ","No|Yes",0);
DayH = TimeFrameGetPrice("H", inDaily, -1);
DayL = TimeFrameGetPrice("L", inDaily, -1);
DayC = TimeFrameGetPrice("C", inDaily, -1);
DayO = TimeFrameGetPrice("O", inDaily);
HiDay = TimeFrameGetPrice("H", inDaily);
LoDay = TimeFrameGetPrice("L", inDaily);
PP = (DayH + DayL + DayO + DayO) / 4 ;
R1 = (2 * PP) - DayL;
S1 = (2 * PP) - DayH;
R2 = PP + R1 - S1;
S2 = PP + S1 - R1;
R3 = R2 + (R1 - PP);
S3 = S2 - (PP - S1);
ppvalue= round(abs((C-pp)/ticdiv));
r1value= round(abs((C-r1)/ticdiv));
s1value= round(abs((C-s1)/ticdiv));
r2value= round(abs((C-r2)/ticdiv));
s2value= round(abs((C-s2)/ticdiv));
r3value= round(abs((C-r3)/ticdiv));
s3value= round(abs((C-s3)/ticdiv));
wptitle= WriteIf(pivCode==1 AND C>=R3, "\n" + EncodeColor(colorYellow)+"R3 " +
"-" + (R3value) + "\n" + "\n",
WriteIf(pivCode==1 AND C<=R3 AND C>=R2, "\n" + EncodeColor(colorYellow)+"R3 "
+ "+" + (R3value) + "\n" + EncodeColor(colorYellow) + "R2 " + "-" + (R2value)
+ "\n" + "\n",
WriteIf(pivCode==1 AND C<=R2 AND C>=R1, "\n" + EncodeColor(colorYellow)+"R2 "
+ "+" + (R2value) + "\n" + EncodeColor(colorYellow) + "R1 " + "-" + (R1value)
+ "\n" + "\n",
WriteIf(pivCode==1 AND C<=R1 AND C>=PP, "\n" + EncodeColor(colorYellow)+"R1 "
+ "+" + (R1value) + "\n" + EncodeColor(colorYellow) + "PP " + "-" + (PPvalue)
+ "\n" + "\n",
WriteIf(pivCode==1 AND C<=PP AND C>=S1, "\n" + EncodeColor(colorYellow)+"PP "
+ "+" + (PPvalue) + "\n" + EncodeColor(colorYellow) + "S1 " + "-" + (S1value)
+ "\n" + "\n",
WriteIf(pivCode==1 AND C<=S1 AND C>=S2, "\n" + EncodeColor(colorYellow)+"S1 "
+ "+" + (S1value) + "\n" + EncodeColor(colorYellow) + "S2 " + "-" + (S2value)
+ "\n" + "\n",
WriteIf(pivCode==1 AND C<=S2 AND C>=S3, "\n" + EncodeColor(colorYellow)+"S2 "
+ "+" + (S2value) + "\n" + EncodeColor(colorYellow) + "S3 " + "-" + (S3value)
+ "\n" + "\n",
WriteIf(pivCode==1 AND C<=S3, "\n" + EncodeColor(colorYellow)+"S3 " + "+" +
(S3value) + "\n"+ "\n",""))))))));
// HOD , LOD, Range
HiDayTitle = WriteIf(pivCode==1,EncodeColor(colorYellow) + "HOD ","");
HiDayTitle = WriteIf(pivCode==1,HiDayTitle + EncodeColor(colorYellow) + HiDay +
" +" + round(abs((HiDay-C)/ticdiv)) + "\n","");
LoDayTitle = WriteIf(pivCode==1,EncodeColor(colorYellow) + "LOD ","");
LoDayTitle = WriteIf(pivCode==1,LoDayTitle + EncodeColor(colorYellow) + LoDay +
" -" + round(abs((C-LoDay)/ticdiv)) + "\n"," ");
RangeTitle1 =WriteIf(pivCode==1,EncodeColor(colorYellow) + "Day Range " +
EncodeColor(colorYellow) + StrToNum(NumToStr(round((HiDay - LoDay)/ticdiv),
4.4)) + "\n","");
// Pattern codes
Cziquallong= ((angle_EMA34>=5 OR Ref(angle_EMA34,-1)>=5) AND
Ref(angle_EMA34,-2)>=5) OR (Ref(angle_EMA34,-1)>=5 AND angle_EMA34>=5);
Cziqualshort= ((angle_EMA34<=-5 OR Ref(angle_EMA34,-1)<=-5) AND
Ref(angle_EMA34,-2)<=-5) OR (Ref(angle_EMA34,-1)<=-5 AND angle_EMA34<=-5);
// ZLR Long
Linex_long=Ref(z,-1)>100 AND z<100;
barsfromline_long=BarsSince(Linex_long);
CCIhook_long=z>Ref(z,-1) AND Ref(z,-1)>-100 AND Ref(z,-1)<Ref(z,-2) AND
Ref(z,-2)>-100 AND z>0;
SW_trendinglong= sw==1 OR sw==2;
zlrlong1= abs(CCipointmove)>=15 AND SW_trendinglong AND z<120 AND
barsfromline_long<=10 AND CCIhook_long AND UpTrend;
zlrnextl= z<120 AND barsfromline_long<10 AND CCIhook_long AND UpTrend;
zlrlong= Cziquallong AND (zlrlong1 OR ( NOT Ref(zlrlong1,-1) AND
Ref(zlrnextl,-1) AND abs(CCipointmove)>=15 AND z>=Ref(z,-1) AND SW_trendinglong
AND z<120 AND UpTrend));
// ZLR Short
Linex_short=Ref(z,-1)<=-100 AND z>=-100;
barsfromline_short=BarsSince(Linex_short);
CCIhook_short=z<Ref(z,-1) AND Ref(z,-1)<100 AND Ref(z,-1)>Ref(z,-2) AND
Ref(z,-2)<100 AND z<0;
SW_trendingshort= sw==-1 OR sw==-2;
zlrshort1= abs(CCipointmove)>=15 AND SW_trendingshort AND z>-120 AND
barsfromline_short<=10 AND CCIhook_short AND DnTrend;
zlrnexts= z>-120 AND barsfromline_short<10 AND CCIhook_short AND DnTrend;
zlrshort= Cziqualshort AND (zlrshort1 OR (NOT Ref(zlrshort1,-1) AND
Ref(zlrnexts,-1) AND abs(CCipointmove)>=15 AND z<=Ref(z,-1) AND SW_trendingshort
AND z>-120 AND DnTrend));
// Famir Long
FamirLinex_long=Ref(z,-1)<=-100 AND z>-100;
Famir_barsfromline_long=BarsSince(FamirLinex_long);
Famir_pivotlong= (Ref(z,-2)>Ref(z,-1)AND Ref(z,-1)>=-55 AND Ref(z,-2)>=-55) OR
(Ref(z,-3)>Ref(z,-1) AND Ref(z,-1)>=-55 AND Ref(z,-2)>=-55 AND Ref(z,-3)>=-55)OR
(Ref(z,-4)>Ref(z,-1) AND Ref(z,-1)>=-55 AND Ref(z,-2)>=-55 AND Ref(z,-3)>=-55);
Famirhook_long=Famir_pivotlong AND z>Ref(HHV(z,Famir_barsfromline_long),-1) AND
(z>=-55 AND z<=55);
Famirlong= Famir_barsfromline_long<10 AND Famirhook_long AND ((DnTrend OR
Ref(Dntrend,-BarsSince(z<0))==1) AND NOT UpTrend) AND C>LSMA25;
// Famir Short
FamirLinex_short=Ref(z,-1)>=100 AND z<100;
Famir_barsfromline_short=BarsSince(FamirLinex_short);
Famir_pivotshort= (Ref(z,-2)<Ref(z,-1)AND Ref(z,-1)<=55 AND Ref(z,-2)<=55) OR
(Ref(z,-3)<Ref(z,-1)AND Ref(z,-1)<=55 AND Ref(z,-2)<=55 AND Ref(z,-3)<=55) OR
(Ref(z,-4)<Ref(z,-1) AND Ref(z,-1)<=55 AND Ref(z,-2)<=55 AND Ref(z,-3)<=55);
Famirhook_short=Famir_pivotshort AND z<Ref(LLV(z,Famir_barsfromline_short),-1)
AND (z>=-55 AND z<=55);
Famirshort= Famir_barsfromline_short<10 AND Famirhook_short AND ((UpTrend OR
Ref(Uptrend,-BarsSince(z>0))==1) AND NOT DnTrend) AND C<LSMA25;
// HFE
HFEshort=(Ref(z,-1)>200 AND z<200);
HFElong=(Ref(z,-1)<-200 AND z>-200);
HFE= HFEshort OR HFElong;
// VT Long
vtLinex_long=Ref(z,-1)<=-200 AND z>-200;
vt_barsfromline_long=BarsSince(vtLinex_long);
vtlong_A = z<-200;
vtlong_B = Ref(z,-1)<=Ref(z,-2) OR
Ref(z,-2)<=Ref(z,-3) OR
Ref(z,-3)<=Ref(z,-4) OR
Ref(z,-4)<=Ref(z,-5) OR
Ref(z,-5)<=Ref(z,-6) OR
Ref(z,-6)<=Ref(z,-7) OR
Ref(z,-7)<=Ref(z,-8);
vtlong_bs_A = BarsSince(vtlong_A);
vtlong_bs_B = BarsSince(vtlong_b);
Vtlong_bars = vtlong_bs_A>=5 AND vtlong_bs_B<=0;
vt_pivotlong= Vtlong_bars;
swinghibars=BarsSince(z>Ref(HHV(z,vt_barsfromline_long),-1));
vthook_long= vt_pivotlong AND z>Ref(HHV(z,vt_barsfromline_long),-1);
vtlong= z<100 AND vt_barsfromline_long<=11 AND
(Ref(HHV(z,vt_barsfromline_long),-1)<0 OR HHV(z,vt_barsfromline_long)<=0) AND
vthook_long AND C>Lsma25 AND Ref(swinghibars>=2,-1) AND z>-100;
// VT Short
vtLinex_short=Ref(z,-1)>=200 AND z<200;
vt_barsfromline_short=BarsSince(vtLinex_short);
vtshort_A = z>200 ;
vtshort_B =Ref(z,-1)>=Ref(z,-2) OR
Ref(z,-2)>=Ref(z,-3) OR
Ref(z,-3)>=Ref(z,-4) OR
Ref(z,-4)>=Ref(z,-5) OR
Ref(z,-5)>=Ref(z,-6) OR
Ref(z,-6)>=Ref(z,-7) OR
Ref(z,-7)>=Ref(z,-8);
vtshort_bs_A = BarsSince(vtshort_A);
vtshort_bs_B = BarsSince(vtshort_b);
Vtshort_bars = vtshort_bs_A>=5 AND vtshort_bs_B<=0;
vt_pivotshort= Vtshort_bars;
swinglowbars= BarsSince(z<Ref(LLV(z,vt_barsfromline_short),-1));
vthook_short= vt_pivotshort AND z<Ref(LLV(z,vt_barsfromline_short),-1);
vtshort= z>-100 AND vt_barsfromline_short<=11 AND
(Ref(LLV(z,vt_barsfromline_short),-1)>0 OR LLV(z,vt_barsfromline_short)>0) AND
vthook_short AND C<Lsma25 AND Ref(swinglowbars>=2,-1) AND z<100;
// GB 100 Long
Linex_longGB=Ref(z,-1)>100 AND z<100;
barsfromline_longGB=BarsSince(Linex_longGB);
CCIhook_longGB= Ref(z,-1)<-100 AND z>-100;
GB100long= z<100 AND barsfromline_longGB<=12 AND Cziquallong AND CCIhook_longGB
AND (Ref(UpTrend,-BarsSince(z>0))==1 AND NOT DnTrend);
// GB100 Short
Linex_shortGB=Ref(z,-1)<-100 AND z>-100;
barsfromline_shortGB=BarsSince(Linex_shortGB);
CCIhook_shortGB=Ref(z,-1)>100 AND z<100;
Gb100short= z>-100 AND barsfromline_shortGB<=12 AND Cziqualshort AND
CCIhook_shortGB AND (Ref(DnTrend,-BarsSince(z<0))==1 AND NOT UpTrend);
// TT Long
Minuszero=BarsSince(Ref(z,-1)>0) + 1;
TTCCIhook_long= z>Ref(z,-1) AND z>0;
TTlong= Cziquallong AND z<100 AND Ref(UpTrend,-Minuszero)==1 AND
LLV(Ref(z,-1),BarsSince(Ref(z,-1)>=100))>-100 AND
HHV(Ref(z,-1),BarsSince(Ref(z,-1)< 0))>=100 AND TTCCIhook_long AND
Ref(LowBars,-1)>=4 AND Ref(LowBars,-1)<=9;
// TT Short
Pluszero=BarsSince(Ref(z,-1)<0) + 1;
TTCCIhook_short=z<Ref(z,-1) AND z<0;
TTshort= Cziqualshort AND z>-100 AND Ref(DnTrend,-Pluszero)==1 AND
HHV(Ref(z,-1),BarsSince(Ref(z,-1)<=-100))<100 AND
LLV(Ref(z,-1),BarsSince(Ref(z,-1)>0))<=-100 AND TTCCIhook_short AND
Ref(HighBars,-1)>=4 AND Ref(HighBars,-1)<=9;
// PT Long
Phook_long1= Ref(z,-1)>=Ref(z,-2) AND Ref(z,-2)<Ref(z,-3) AND Ref(z,-3)>0;
Phook_long2= Ref(z,-3)>-100 AND Ref(z,-1)>Ref(z,-2) AND Ref(z,-2)<Ref(z,-3) AND
Ref(z,-3)<Ref(z,-4) AND Ref(z,-4)>0;
Ptlong= Cziquallong AND (Phook_long1 OR Phook_long2) AND (z>0 AND Ref(z,-1)<0
AND z<120 AND Ref(z,-1)>-100 AND Ref(z,-2)>-100 AND z>Ref(z,-1) AND UpTrend);
// PT Short
Phook_short1= Ref(z,-1)<=Ref(z,-2) AND Ref(z,-2)>Ref(z,-3) AND Ref(z,-3)<0;
Phook_short2= Ref(z,-3)<100 AND Ref(z,-1)<Ref(z,-2) AND Ref(z,-2)>Ref(z,-3) AND
Ref(z,-3)> Ref(z,-4) AND Ref(z,-4)<0;
Ptshort= Cziqualshort AND (Phook_short1 OR Phook_short2) AND (z<0 AND
Ref(z,-1)>0 AND z>-120 AND Ref(z,-1)<100 AND Ref(z,-2)<100 AND z<Ref(z,-1) AND
DnTrend);
// Ghosts (6)
GhostBarIndex = LastBarIndex;
if (LastBarIndex != CurBarIndex)
GhostBarIndex = CurBarIndex;
C14GhostChange = Param("Ghost - Min WCCI change %", 8, 0, 50);
GhostCciShift=300;
C14GhostChange = Param("Ghost - Min WCCI change %", 8, 0, 50);
GhostCciChange=C14GhostChange / 2; //CCI values are shifted up 300 ponts (-300 - + 300 -> 0 - 600)
C14GhostSteepCompToZL=Param("Ghost - Max trend line slope to ZL(CCI/bar)", 8,
0, 30, 1);
C14GhostSteepCompFromZL=Param("Ghost - Max trend line slope from ZL(CCI/bar)",
4, 0, 30, 1);
// Ghost Long (6)
C14Shifted = -Z + GhostCciShift;
C14Shifted = IIf(C14Shifted < 0, 0, C14Shifted);
C14Shifted = IIf(C14Shifted > 600, 600, C14Shifted);
GhostLongLeft = -Peak(C14Shifted, GhostCciChange, 3) + GhostCciShift;
GhostLongHead = -Peak(C14Shifted, GhostCciChange, 2) + GhostCciShift;
GhostLongRight = -Peak(Ref(C14Shifted,-1), GhostCciChange, 1) + GhostCciShift;
GhostLongRightDip = -Ref(Trough(C14Shifted, GhostCciChange, 1), -1) +
GhostCciShift;
GhostLongRightDipIndex = BarIndex() - Ref(TroughBars(C14Shifted,
GhostCciChange, 1), -1)-1;
GhostLongLeftDip = -Ref(Trough(C14Shifted, GhostCciChange, 2), -1) +
GhostCciShift;
GhostLongLeftDipIndex = BarIndex() - Ref(TroughBars(C14Shifted, GhostCciChange,
2), -1) -1;
GhostLongHeadWidth = GhostLongRightDipIndex - GhostLongLeftDipIndex;
GhostLongRightWidth = BarIndex() - GhostLongRightDipIndex;
GhostLongComp = (GhostLongRightDip - GhostLongLeftDip) / GhostLongHeadWidth;
GhostLongBar = ( (GhostLongLeft > GhostLongHead AND GhostLongRight >
GhostLongHead AND GhostLongHead <= -100 ) //Ghost
OR (GhostLongLeft < GhostLongHead AND GhostLongRight <
GhostLongHead AND GhostLongLeft <= -100)) //MGhost
AND GhostLongLeftDip <= 0
AND GhostLongRightDip <= 0
AND (GhostLongRightDip + GhostLongComp*GhostLongRightWidth <= Z OR
Z>0)//WCCI returned above neckline
AND GhostLongHeadWidth < 25
AND GhostLongRightWidth > 1 AND GhostLongRightWidth < 12;
GhostLong = GhostLongBar AND NOT Ref(GhostLongBar,-1) AND Z < 120
AND GhostLongComp >= -C14GhostSteepCompFromZL AND GhostLongComp <=
C14GhostSteepCompToZL;
GhostLongRef = BarsSince(GhostLong);
if ( GhostLongRef[GhostBarIndex] <= 5 )
{
GhostLongIndex = GhostBarIndex - GhostLongRef[GhostBarIndex];
GhostLine = LineArray( GhostLongLeftDipIndex[GhostLongIndex],
GhostLongLeftDip[GhostLongIndex],
GhostLongRightDipIndex[GhostLongIndex] + 10,
GhostLongRightDip[GhostLongIndex] +
GhostLongComp[GhostLongIndex] * 10,
0, False);
Plot(GhostLine, "", colorWhite, styleThick | styleNoLabel | styleNoTitle);
}
//DEBUG
//Plot(-120, "GhostLongBar", IIf(GhostLongBar, colorGreen, colorRed));
//GhostLine = LineArray( GhostLongLeftDipIndex[CurBarIndex],
// GhostLongLeftDip[CurBarIndex],
// GhostLongRightDipIndex[CurBarIndex] + 10,
// GhostLongLeftDip[CurBarIndex] + GhostLongComp[CurBarIndex]*(GhostLongHeadWidth[CurBarIndex]+10),
// 0, False);
//Plot(GhostLine, "", colorGreen, styleThick);
// Ghost Short (6)
C14Shifted = Z + GhostCciShift;
C14Shifted = IIf(C14Shifted < 0, 0, C14Shifted);
C14Shifted = IIf(C14Shifted > 600, 600, C14Shifted);
GhostShortLeft = Peak(C14Shifted, GhostCciChange, 3) - GhostCciShift;
GhostShortHead = Peak(C14Shifted, GhostCciChange, 2) - GhostCciShift;
GhostShortRight = Peak(C14Shifted, GhostCciChange, 1) - GhostCciShift;
GhostShortRightDip = Ref(Trough(C14Shifted, GhostCciChange, 1), -1) -
GhostCciShift;
GhostShortRightDipIndex = BarIndex() - Ref(TroughBars(C14Shifted,
GhostCciChange, 1), -1) -1;
GhostShortLeftDip = Ref(Trough(C14Shifted, GhostCciChange, 2), -1) -
GhostCciShift;
GhostShortLeftDipIndex = BarIndex() - Ref(TroughBars(C14Shifted,
GhostCciChange, 2), -1) -1;
GhostShortHeadWidth = GhostShortRightDipIndex - GhostShortLeftDipIndex;
GhostShortRightWidth = BarIndex() - GhostShortRightDipIndex;
GhostShortComp = (GhostShortRightDip - GhostShortLeftDip) /
GhostShortHeadWidth;
GhostShortBar = ( (GhostShortLeft < GhostShortHead AND GhostShortRight <
GhostShortHead AND GhostShortHead >= 100) //Ghost
OR (GhostShortLeft > GhostShortHead AND GhostShortRight >
GhostShortHead AND GhostShortLeft >= 100)) //MGhost
AND GhostShortLeftDip >= 0
AND GhostShortRightDip >=0
AND (GhostShortRightDip + GhostShortComp*GhostShortRightWidth >= Z
OR Z<0) //WCCI returned below neckline
AND GhostShortHeadWidth < 25
AND GhostShortRightWidth > 1 AND GhostShortRightWidth < 12;
GhostShort = GhostShortBar AND NOT Ref(GhostShortBar,-1) AND Z > -120
AND GhostShortComp <= C14GhostSteepCompFromZL AND GhostShortComp >=
-C14GhostSteepCompToZL;
GhostShortRef = BarsSince(GhostShort);
if ( GhostShortRef[GhostBarIndex] <= 5 )
{
GhostShortIndex = GhostBarIndex - GhostShortRef[GhostBarIndex];
GhostLine = LineArray( GhostShortLeftDipIndex[GhostShortIndex],
GhostShortLeftDip[GhostShortIndex],
GhostShortRightDipIndex[GhostShortIndex] + 10,
GhostShortRightDip[GhostShortIndex] +
GhostShortComp[GhostShortIndex] * 10,
0, False);
Plot(GhostLine, "", colorWhite, styleThick | styleNoLabel | styleNoTitle);
}
//DEBUG
//Plot(120, "GhostShortBar", IIf(GhostShortBar, colorGreen, colorRed));
//GhostLine = LineArray( GhostShortLeftDipIndex[CurBarIndex], GhostShortLeftDip[CurBarIndex], GhostShortRightDipIndex[CurBarIndex] + 10,
// GhostShortLeftDip[CurBarIndex] + GhostShortComp[CurBarIndex]*(GhostShortHeadWidth[CurBarIndex]+10),
// 0, False);
//Plot(GhostLine, "", colorRed, styleThick);
// Signal Title
Buy = zlrlong OR VTlong OR GB100long OR GhostLong;
Short = zlrshort OR VTshort OR Gb100short OR GhostShort;
Filter=Buy OR Short;
AddColumn( IIf(Buy,1,IIf(Short,-1,0)) ,"BS",1.0,colorBlack,IIf(Buy,colorGreen,IIf(Short,colorRed,colorBlack)));
AddColumn( IIf(zlrlong,1,IIf(zlrshort,-1,0)) ,"ZLR",1.0,colorWhite,IIf(zlrlong,colorGreen,IIf(zlrshort,colorRed,colorBlack)));
AddColumn( IIf(VTlong,1,IIf(VTshort,-1,0)) ,"VT",1.0,colorWhite,IIf(zlrlong,colorGreen,IIf(zlrshort,colorRed,colorBlack)));
AddColumn( IIf(GB100long,1,IIf(gb100short,-1,0)) ,"GB100",1.0,colorWhite,IIf(zlrlong,colorGreen,IIf(zlrshort,colorRed,colorBlack)));
AddColumn( IIf(Ghostlong,1,IIf(Ghostshort,-1,0)) ,"Ghost",1.0,colorWhite,IIf(zlrlong,colorGreen,IIf(zlrshort,colorRed,colorBlack)));
PatCode1=ParamToggle("Plot ZLR (1)","No|Yes",1);
PatCode2=ParamToggle("Plot FAMIR (2)","No|Yes",1);
PatCode3=ParamToggle("Plot VT (3)","No|Yes",1);
PatCode4=ParamToggle("Plot GB100 (4)","No|Yes",1);
PatCode5=ParamToggle("Plot TT (5)","No|Yes",1);
PatCode6=ParamToggle("Plot GHOST (6)","No|Yes",1);
PatCode7=ParamToggle("Plot HFE","No|Yes",1);
Signaltitle= WriteIf(PatCode1==1 AND zlrlong,EncodeColor(colorDarkRed) + "\n" +
"*** ALERT -- ZLR ***" + "\n",
WriteIf(PatCode1==1 AND zlrshort,EncodeColor(colorDarkRed) + "\n" + "*** ALERT
-- ZLR ***" + "\n",
WriteIf(PatCode2==1 AND Famirshort,EncodeColor(colorDarkRed) + "\n" + "***
ALERT -- FAMIR ***" + "\n",
WriteIf(PatCode2==1 AND Famirlong,EncodeColor(colorDarkRed) + "\n" + "***
ALERT -- FAMIR ***" + "\n",
WriteIf(PatCode3==1 AND VTlong AND NOT famirlong,EncodeColor(colorDarkRed) +
"\n" + "*** ALERT -- VT ***" + "\n",
WriteIf(PatCode3==1 AND VTshort AND NOT famirshort,EncodeColor(colorDarkRed) +
"\n" + "*** ALERT -- VT ***" + "\n",
WriteIf(PatCode4==1 AND GB100long,EncodeColor(colorDarkRed) + "\n" + "***
ALERT -- GB100 ***" + "\n",
WriteIf(PatCode4==1 AND Gb100short,EncodeColor(colorDarkRed) + "\n" + "***
ALERT -- GB100 ***" + "\n",
WriteIf(PatCode5==1 AND TTLong,EncodeColor(colorDarkRed) + "\n" + "*** ALERT
-- TT ***" + "\n",
WriteIf(PatCode5==1 AND TTShort,EncodeColor(colorDarkRed) + "\n" + "*** ALERT
-- TT ***" + "\n",
WriteIf(PatCode6==1 AND GhostLong,EncodeColor(colorDarkRed) + "\n" + "***
ALERT -- GHOST ***" + "\n",
WriteIf(PatCode6==1 AND GhostShort,EncodeColor(colorDarkRed) + "\n" + "***
ALERT -- GHOST ***" + "\n",
WriteIf(PatCode7==1 AND HFE,EncodeColor(colorDarkRed) + "\n" + "*** ALERT --
HFE ***" + "\n","")))))))))))));
// Pattern signal codes
PlotShapes(IIf(PatCode1==1 AND
zlrlong,shapeDigit1,shapeNone),colorBlue,0,Min(z,0),-15);
PlotShapes(IIf(PatCode1==1 AND zlrshort,shapeDigit1+
shapePositionAbove,shapeNone),colorRed,0,Max(z,0),-15);
PlotShapes(IIf(PatCode2==1 AND
famirlong,shapeDigit2,shapeNone),colorBlue,0,Min(z,0),-15);
PlotShapes(IIf(PatCode2==1 AND famirShort ,shapeDigit2+
shapePositionAbove,shapeNone),colorRed,0,Max(z,0),-15) ;
PlotShapes(IIf(PatCode3==1 AND vtlong AND NOT
famirlong,shapeDigit3,shapeNone),colorBlue,0,Min(z,0),-47);
PlotShapes(IIf(PatCode3==1 AND vtshort AND NOT famirshort,shapeDigit3+
shapePositionAbove,shapeNone),colorRed,0,Max(z,0),-47);
PlotShapes(IIf(PatCode4==1 AND
GB100long,shapeDigit4,shapeNone),colorBlue,0,Min(z,0),-60);
PlotShapes(IIf(PatCode4==1 AND GB100short,shapeDigit4+
shapePositionAbove,shapeNone),colorRed,0,Max(z,0),-60);
PlotShapes(IIf(PatCode5==1 AND
ttlong,shapeDigit5,shapeNone),colorBlue,0,Min(z,0),-50);
PlotShapes(IIf(PatCode5==1 AND ttshort,shapeDigit5+
shapePositionAbove,shapeNone),colorRed,0,Max(z,0),-50);
PlotShapes(IIf(PatCode6==1 AND
GhostLong,shapeDigit6,shapeNone),colorBlue,0,Min(z,0),-50);
PlotShapes(IIf(PatCode6==1 AND GhostShort,shapeDigit6+
shapePositionAbove,shapeNone),colorRed,0,Max(z,0),-50);
PlotShapes(IIf(PatCode7==1 AND HFEshort,shapeCircle,shapeNone),IIf(PatCode7==1
AND HFEshort,colorYellow,shapeNone),0,200,10);
PlotShapes(IIf(PatCode7==1 AND HFElong,shapeCircle,shapeNone),IIf(PatCode7==1
AND HFElong,colorYellow,shapeNone),0,-200,-10) ;
// CCI hook Exit
HookExitLong= z<=Ref(z,-1);
HookExitShort= z>=Ref(z,-1);
// 100 Line Cross Exit Conservative
Cross100longC= z<=Ref(z,-1) AND z<100;
Cross100shortC= z>=Ref(z,-1) AND z>-100;
// 100 Line Cross Exit Aggressive
Cross100longA= Ref(z,-1)>100 AND z<100;
Cross100shortA= Ref(z,-1)<-100 AND z>-100;
// Mplay Exit
MplayExitLong= z<Ref(z,-1) AND Ref(z,-1)<Ref(z,-2) AND C<O;
MplayExitShort= z>Ref(z,-1) AND Ref(z,-1)>Ref(z,-2) AND C>O;
// Heikin-Ashi Exit
HaClose =EMA((O+H+L+C)/4,3);
HaOpen = AMA( Ref( HaClose, -1 ), 0.5 );
HaHigh = Max( H, Max( HaClose, HaOpen ) );
HaLow = Min( L, Min( HaClose, HaOpen ) );
HExitConLong= HaLow < HaOpen;
HExitConShort= HaHigh > HaOpen;
// Exit code
ExitCode=
Param("Exits:Hook=1,100xConservative=2,100xAggressive=3,Mplay=4,H-Ashi=5",1,1,5);
ExitCodeTitleLong=
IIf(ExitCode==1,HookExitLong,IIf(Exitcode==2,Cross100longC,IIf(Exitcode==3,Cross100longA,IIf(Exitcode==4,MplayExitLong,IIf(Exitcode==5,HExitConLong,0)))));
ExitCodeTitleShort=
IIf(ExitCode==1,HookExitShort,IIf(Exitcode==2,Cross100shortC,IIf(Exitcode==3,Cross100shortA,IIf(Exitcode==4,MplayExitShort,IIf(Exitcode==5,HExitConShort,0)))));
AllPatterns =(zlrlong AND patcode1==1) OR (famirlong AND patcode2==1) OR
(Vtlong AND patcode3==1) OR (gb100long AND patcode4==1) OR (ttlong AND
patcode5==1) OR (GhostLong AND patcode6==1) OR (Hfelong AND patcode7==1)
OR (zlrshort AND patcode1==1) OR (famirshort AND patcode2==1) OR (Vtshort AND
patcode3==1) OR (gb100short AND patcode4==1) OR (ttshort AND patcode5==1) OR
(GhostShort AND patcode6==1) OR (Hfeshort AND patcode7==1);
BuyPattern = (zlrlong AND patcode1==1) OR (famirlong AND patcode2==1) OR
(Vtlong AND patcode3==1) OR (gb100long AND patcode4==1) OR (ttlong AND
patcode5==1) OR (GhostLong AND patcode6==1) OR (Hfelong AND patcode7==1);
SellPattern= ExitCodeTitleLong;
ShortPattern = (zlrshort AND patcode1==1) OR (famirshort AND patcode2==1) OR
(Vtshort AND patcode3==1) OR (gb100short AND patcode4==1) OR (ttshort AND
patcode5==1) OR (GhostShort AND patcode6==1) OR (Hfeshort AND patcode7==1);
CoverPattern = ExitCodeTitleShort;
//Plot Sell/Cover Arrows
Sell1=ExRem(SellPattern,BuyPattern);
Cover1=ExRem(CoverPattern,ShortPattern);
SellCode=ParamToggle("Plot sell/cover arrows ","No|Yes",1);
PlotShapes(IIf(Sell1 AND
SellCode==1,shapeHollowDownArrow,shapeNone),colorBlue,0,200,10);
PlotShapes(IIf(Cover1 AND
SellCode==1,shapeHollowDownArrow,shapeNone),colorRed,0,200,10);
// Calculate pattern hilites
// Long
AsellL= BuyPattern;
BsellL= Sell1;
bs_AsellL= BarsSince(AsellL);
bs_BsellL= BarsSince(BsellL);
bars_sellL= IIf(bs_ASellL<= bs_BsellL,bs_AsellL,0);
//Short
AsellS= ShortPattern;
BsellS= Cover1;
bs_AsellS= BarsSince(AsellS);
bs_BsellS= BarsSince(BsellS);
bars_sellS= IIf(bs_ASellS<= bs_BsellS,bs_AsellS,0);
hilitecode=ParamToggle("Hi-lite patterns","No|Yes",1);
// CCI Line
CCIcolor= IIf(((bars_sellL OR bars_sellS) OR AllPAtterns) AND
hilitecode==1,patterncolor,zcolor);
Plot(round(z),"WCCI", CCIcolor , styleLine | styleThick);
// Turbo CCI
Plot(round(z6),"TCCI", z6color, styleLine);
// CCI Histogram
Plot( array, "", colorDefault, styleLine | styleThick | styleNoLabel);
Plot( array, "", Color, styleHistogram | styleThick| styleNoLabel);
// BackTest Long
LastPatLong= BuyPattern;
LastPatBarLong= BarsSince(LastPatLong);
DDL=IIf((((LLV(L,LastPatBarLong)-Ref(C,-LastPatBarLong))))/ticdiv>=0,0,(((LLV(L,LastPatBarLong)-Ref(C,-LastPatBarLong))))/ticdiv);
BTExitLong= (((C-Ref(C,-LastPatBarLong))))/ticdiv;
PeakLong=IIf((((HHV(H,LastPatBarLong)-Ref(C,-LastPatBarLong))))/ticdiv<=0,0,(((HHV(H,LastPatBarLong)-Ref(C,-LastPatBarLong))))/ticdiv);
StopLong1= Ref(C,-LastPatBarLong) - (Ref(L,-LastPatBarLong) - (stopval*ticdiv)
- (spread*ticdiv));
stoplong= (((StopLong1)))/ticdiv;
BackTestLongTitle= WriteIf(Sell1,EncodeColor(colorBlue) + "\n" +
"Stop " + (Ref(C,-LastPatBarLong) - (round(stoplong)*ticdiv)) + " " +
round(stoplong) + "\n" +
"DD " + (Ref(C,-LastPatBarLong) + (round(DDL)*ticdiv)) + " " +
round(DDL) + "\n" +
"Exit " + (Ref(C,-LastPatBarLong) + (round(BTExitLong)*ticdiv)) + " " +
round(BTExitLong) + "\n" +
"Peak " + (Ref(C,-LastPatBarLong) + (round(PeakLong)*ticdiv)) + " " +
round(PeakLong) + "\n",EncodeColor(colorBlue) + "\n" +
"Stop " + (Ref(C,-LastPatBarLong) - (round(stoplong)*ticdiv)) + " " +
round(stoplong) + "\n" +
"DD " + (Ref(C,-LastPatBarLong) + (round(DDL)*ticdiv)) + " " +
round(DDL) + "\n" +
"Exit " + (Ref(C,-LastPatBarLong) + (round(BTExitLong)*ticdiv)) + " " +
round(BTExitLong) + "\n" +
"Peak " + (Ref(C,-LastPatBarLong) + (round(PeakLong)*ticdiv)) + " " +
round(PeakLong) + "\n");
// BackTest Short
LastPatShort= ShortPattern;
LastPatBarShort= BarsSince(LastPatShort);
DDS=
IIf((((Ref(C,-LastPatBarShort)-HHV(H,LastPatBarShort))))/ticdiv>=0,0,(((Ref(C,-LastPatBarShort)-HHV(H,LastPatBarShort))))/ticdiv);
BTExitShort= (((Ref(C,-LastPatBarShort)-C)))/ticdiv;
PeakShort=
IIf((((Ref(C,-LastPatBarShort)-LLV(L,LastPatBarShort))))/ticdiv<=0,0,(((Ref(C,-LastPatBarShort)-LLV(L,LastPatBarShort))))/ticdiv);
StopShort1= (Ref(H,-LastPatBarShort) + (Stopval*ticdiv) + (spread*ticdiv)) -
Ref(C,-LastPatBarShort);
StopShort= (((StopShort1)))/ticdiv;
BackTestShortTitle= WriteIf(Cover1,EncodeColor(colorRed) + "\n" +
"Stop " + (Ref(C,-LastPatBarShort) + (round(stopshort)*ticdiv)) + " " +
round(stopshort) + "\n" +
"DD " + (Ref(C,-LastPatBarShort) + abs(round(DDS)*ticdiv)) + " " +
round(DDS) + "\n" +
"Exit " + (Ref(C,-LastPatBarShort) - (round(BTExitShort)*ticdiv)) + " "
+ round(BTExitShort) + "\n" +
"Peak " + (Ref(C,-LastPatBarShort) - (round(PeakShort)*ticdiv)) + " " +
round(PeakShort) + "\n",EncodeColor(colorRed)+ "\n" +
"Stop " + (Ref(C,-LastPatBarShort) + (round(stopshort)*ticdiv)) + " " +
round(stopshort) + "\n" +
"DD " + (Ref(C,-LastPatBarShort) + abs(round(DDS)*ticdiv)) + " " +
round(DDS) + "\n" +
"Exit " + (Ref(C,-LastPatBarShort) - (round(BTExitShort)*ticdiv)) + " "
+ round(BTExitShort) + "\n" +
"Peak " + (Ref(C,-LastPatBarShort) - (round(PeakShort)*ticdiv)) + " " +
round(PeakShort) + "\n");
// Backtest title
BackTestCode= ParamToggle("Display Stop,DD,Peak,Exit stats","No|Yes",1);
BackTestTitle= WriteIf((bars_sellL>0 OR Sell1) AND
BackTestCode==1,BackTestLongTitle ,WriteIf((bars_sellS>0 OR Cover1 )AND
BackTestCode==1,BackTestShortTitle ,""));
// Stop in
Longbar= L+rbint;
Shortbar= H-rbint;
sstoptitle=WriteIf(timercode==2, EncodeColor(colorBlue) + "\n" + "Stop In Long
" + Longbar + EncodeColor(colorRed) + "\n" + "Stop In Short " + Shortbar +
"\n","");
// Stop out
stopCode=ParamToggle("Display stop-out ","No|Yes",1);
StopLong1= C -(L - (stopval*ticdiv) - (spread*ticdiv));
stoplong1c=C-stoplong1;
stoplong= round(StopLong1/ticdiv);
StopShort1= (H + (stopval*ticdiv) + (spread*ticdiv)) - C;
stopshortc= C+StopShort1;
StopShort= round(StopShort1/ticdiv);
stoptitle= WriteIf(stopcode==1,EncodeColor(colorRed) + "Stop Out Short " + stopshortc + " " + stopshort +EncodeColor(colorBrightGreen) + "\n" + "Stop Out Long " + stoplong1c + " " +stoplong + "\n","");
// Title
Title = "\n" + "" + EncodeColor(colorWhite) + Date() + "\n" + "\n" +
timetitle + "\n" + "\n" + Lastpricetitlehi + "\n" + Closecolor + C + "\n" +
Lastpricetitlelo + "\n" + CCIpointmovetitle + wptitle + HiDayTitle + LoDayTitle
+ RangeTitle1 + Signaltitle + sstoptitle + stoptitle
+WriteIf(C > Lsma25, EncodeColor(colorBrightGreen),EncodeColor(colorRed))+"LSMA = "+ Lsma25
;
_SECTION_END();