Download as txt, pdf, or txt
Download as txt, pdf, or txt
You are on page 1of 5

// Initial Values overrides your backtesting settings

SetOption( "InitialEquity", 1000000);


SetOption("FuturesMode" ,true);
SetOption("MinShares",1);

SetOption("AccountMargin",100);
SetOption("RefreshWhenCompleted",True);
SetTradeDelays(0,0,0,0);
SetPositionSize(300,spsshares);

_SECTION_BEGIN("EMA Time Frame");


H= C;
L=ValueWhen(HHV(H,14),H,2);
SetBarsRequired(sbrAll,sbrAll);
xx = Cum(1);
nbar = Param("nbar",15,1,50,2);

// define fractals
PHigh = H > Ref(HHV(H,nbar),-1) AND Ref(HHV(H,nbar),nbar) <= H;
PHighPrice = ValueWhen(PHigh,H);
PLow = L < Ref(LLV(L,nbar),-1) AND Ref(LLV(L,nbar),nbar) >= L;
PLowPrice = ValueWhen(PLow,L);

// lower trendline, segment 1: between fractal points


startval_L = ValueWhen(PLow,L,1);
endval_L = ValueWhen(PLow,L,0);
startbar_L = ValueWhen(PLow,xx,1);
endbar_L = ValueWhen(PLow,xx,0);
aa_L = (endval_L-startval_L)/(endbar_L-startbar_L);
bb_L = startval_L;
trendline_L = aa_L * (xx - startbar_L) + bb_L;
// slope calculations for display purpose only
dtrendline_L = trendline_L - Ref(trendline_L,-1);

// upper trendline, segment 1: between fractal points


startval_H = ValueWhen(PHigh,H,1);
endval_H = ValueWhen(PHigh,H,0);
startbar_H = ValueWhen(PHigh,xx,1);
endbar_H = ValueWhen(PHigh,xx,0);
aa_H = (endval_H-startval_H)/(endbar_H-startbar_H);
bb_H = startval_H;
trendline_H = aa_H * (xx - startbar_H) + bb_H;
// slope calculations for display purpose only
dtrendline_H = trendline_H - Ref(trendline_H,-1);

_SECTION_END();

_SECTION_END();
_SECTION_BEGIN("ZTSI60");

TimeFrameSet(in1Minute * 5);

r = Param( "TSI period 'Length':", 26, 1, 100, 1 );


s = Param( "TSI period 'Smoothing':", 12, 1, 100, 1 );
sig = Param( "Signal period:", 9, 1, 100, 1 );

Mtm = c - Ref ( c, -1 );
AbsMtm = abs ( Mtm );
Num_T = EMA ( EMA ( Mtm, r ), s );
Den_T = EMA ( EMA ( AbsMtm, r ), s );

TSI = 100* Nz ( Num_T / Den_T );

EMA1= EMA(TSI,r);
EMA2= EMA(EMA1,r);
Difference= EMA1 - EMA2;
ZeroLagEMAp= EMA1 + Difference;
EMA1= EMA(TSI,s);
EMA2= EMA(EMA1,s);
Difference= EMA1 - EMA2;
ZeroLagEMAq= EMA1 + Difference;

ZTSI=ZeroLagEMAq -ZeroLagEMAp;
EMA1= EMA(TSI,sig);
EMA2= EMA(EMA1,sig);
Difference= EMA1 - EMA2;
ZTRIG= EMA1 + Difference;

TimeFrameRestore();
K60 = TimeFrameExpand(TSI , in1Minute * 5);
D60 = TimeFrameExpand(ztsi, in1Minute *5);
D = TimeFrameExpand(EMA1, in1Minute *5);

Plot(D60, "D60", colorwhite, styleThick );


Plot(K60, "k60", colorblue, styleThick );
Plot(D, "D", colorRED, styleThick );

_SECTION_END();

_SECTION_BEGIN("MACD");
H= K60;
L=ValueWhen(HHV(H,14),H,2);
SetBarsRequired(sbrAll,sbrAll);
xx = Cum(1);
nbar = Param("nbar",15,1,50,2);
// define fractals
PHighM = H > Ref(HHV(H,nbar),-1) AND Ref(HHV(H,nbar),nbar) <= H;
PHighPrice = ValueWhen(PHighM,H);
PLowM = L < Ref(LLV(L,nbar),-1) AND Ref(LLV(L,nbar),nbar) >= L;
PLowPrice = ValueWhen(PLowM,L);

// lower trendline, segment 1: between fractal points


startval_L = ValueWhen(PLowM,L,1);
endval_L = ValueWhen(PLowM,L,0);
startbar_L = ValueWhen(PLowM,xx,1);
endbar_L = ValueWhen(PLowM,xx,0);
aa_L = (endval_L-startval_L)/(endbar_L-startbar_L);
bb_L = startval_L;
trendline_L1 = aa_L * (xx - startbar_L) + bb_L;
// slope calculations for display purpose only
dtrendline_L1 = trendline_L1 - Ref(trendline_L1,-1);

// lower extended trendline, segment 2: extend segment 1 to next fractals pivot


startval_L_extend = ValueWhen(PLowM,L,2);
endval_L_extend = ValueWhen(PLowM,L,1);
startbar_L_extend = ValueWhen(PLowM,xx,2);
endbar_L_extend = ValueWhen(PLowM,xx,1);
aa_L_extend = (endval_L_extend-startval_L_extend)/(endbar_L_extend-
startbar_L_extend);
bb_L_extend = startval_L;
trendline_L_extend = aa_L_extend * (xx - startbar_L) + endval_L_extend;
// slope calculations for display purpose only
dtrendline_L_extend = trendline_L_extend - Ref(trendline_L_extend,-1);
dtrendline_L_extend = IIf(PLowM,Ref(dtrendline_L1,-1),dtrendline_L_extend);

// lower extended trendline, segment 3: extend segment 2 nbars past the fractal
pivot
startval_L_extend2 = ValueWhen(PLowM,L,3);
endval_L_extend2 = ValueWhen(PLowM,L,2);
startbar_L_extend2 = ValueWhen(PLowM,xx,3);
endbar_L_extend2 = ValueWhen(PLowM,xx,2);
aa_L_extend2 = (endval_L_extend2-startval_L_extend2)/(endbar_L_extend2-
startbar_L_extend2);
bb_L_extend2 = endval_L_extend2;
trendline_L_extend2 = aa_L_extend2 * (xx - endbar_L_extend2) + endval_L_extend2;
// slope calculations for display purpose only
dtrendline_L_extend2 = trendline_L_extend2 - Ref(trendline_L_extend2,-1);
dtrendline_L_extend2 = IIf(PLowM,Ref(dtrendline_L_extend,-1),dtrendline_L_extend2);
// lower extended trendline, segment 4: extend segment 3 nbars past the fractal
pivot
startval_L_extend3 = ValueWhen(PLowM,L,4);
endval_L_extend3 = ValueWhen(PLowM,L,3);
startbar_L_extend3 = ValueWhen(PLowM,xx,4);
endbar_L_extend3 = ValueWhen(PLowM,xx,3);
aa_L_extend3 = (endval_L_extend3-startval_L_extend3)/(endbar_L_extend3-
startbar_L_extend3);
bb_L_extend3 = endval_L_extend3;
trendline_L_extend3 = aa_L_extend3 * (xx - endbar_L_extend3) + endval_L_extend3;
// slope calculations for display purpose only
dtrendline_L_extend3 = trendline_L_extend3 - Ref(trendline_L_extend3,-1);
dtrendline_L_extend3 = IIf(PLowM,Ref(dtrendline_L_extend,-1),dtrendline_L_extend3);

// upper trendline, segment 1: between fractal points


startval_H = ValueWhen(PHighM,H,1);
endval_H = ValueWhen(PHighM,H,0);
startbar_H = ValueWhen(PHighM,xx,1);
endbar_H = ValueWhen(PHighM,xx,0);
aa_H = (endval_H-startval_H)/(endbar_H-startbar_H);
bb_H = startval_H;
trendline_H1 = aa_H * (xx - startbar_H) + bb_H;
// slope calculations for display purpose only
dtrendline_H1 = trendline_H1 - Ref(trendline_H1,-1);

// upper extended trendline, segment 2: extend segment 1 to next fractals pivot


startval_H_extend = ValueWhen(PHighM,H,2);
endval_H_extend = ValueWhen(PHighM,H,1);
startbar_H_extend = ValueWhen(PHighM,xx,2);
endbar_H_extend = ValueWhen(PHighM,xx,1);
aa_H_extend = (endval_H_extend-startval_H_extend)/(endbar_H_extend-
startbar_H_extend);
bb_H_extend = startval_H;
trendline_H_extend = aa_H_extend * (xx - startbar_H) + endval_H_extend;
// slope calculations for display purpose only
dtrendline_H_extend = trendline_H_extend - Ref(trendline_H_extend,-1);
dtrendline_H_extend = IIf(PHighM,Ref(dtrendline_H1,-1),dtrendline_H_extend);

// upper extended trendline, segment 3: extend segment 2 nbars past the fractal
pivot
startval_H_extend2 = ValueWhen(PHighM,H,3);
endval_H_extend2 = ValueWhen(PHighM,H,2);
startbar_H_extend2 = ValueWhen(PHighM,xx,3);
endbar_H_extend2 = ValueWhen(PHighM,xx,2);
aa_H_extend2 = (endval_H_extend2-startval_H_extend2)/(endbar_H_extend2-
startbar_H_extend2);
bb_H_extend2 = endval_H_extend2;
trendline_H_extend2 = aa_H_extend2 * (xx - endbar_H_extend2) + endval_H_extend2;
// slope calculations for display purpose only
dtrendline_H_extend2 = trendline_H_extend2 - Ref(trendline_H_extend2,-1);
dtrendline_H_extend2 = IIf(PHighM,Ref(dtrendline_H_extend,-
1),dtrendline_H_extend2);

_SECTION_END();
HPDIV=IIf(dtrendline_L>0 AND dtrendline_L1<0 ,1, 0);
SPDIV=IIf(dtrendline_L<0 AND dtrendline_L1>0 AND dtrendline_L<0 AND dtrendline_L1
<20 ,1, 0);
HNDIV=iif(dtrendline_H<0 AND dtrendline_h1>0 ,1, 0);
SNDIV=iif(dtrendline_H>0 AND dtrendline_h1<0 AND dtrendline_H>0 AND dtrendline_h1>-
20 ,1, 0);
HPDIV[BarCount-1]=Null;
SPDIV[BarCount-1]=Null;
HNDIV[BarCount-1]=Null;
SNDIV[BarCount-1]=Null;
sdt=iif(dtrendline_H<0 AND dtrendline_h1<0 ,1, 0) OR IIf(dtrendline_L<0 AND
dtrendline_L1<0 ,1, 0);
sut=iif(dtrendline_H>0 AND dtrendline_h1>0 ,1, 0) OR IIf(dtrendline_L>0 AND
dtrendline_L1>0 ,1, 0);
trendline_L1=IIf(dtrendline_L<0 AND dtrendline_L1>0 ,trendline_L1, null);

trendline_H1=iif(dtrendline_H>0 AND dtrendline_h1<0 ,trendline_H1, null);


color=IIf(SPDIV ,colorBRIGHTGreen, IIf(HPDIV ,colorGreen,colorWhite));
color1=iif(SNDIV ,colorRED,iif(HNDIV ,colorYELLOW ,colorWHITE));
// segment 1
Plot(trendline_L1, "\nLower Trendline", color,styleLine|styleDashed);
// segment 1
Plot(trendline_H1, "\nUpper Trendline", color1,styleLine|styleDashed);
//BUY1 = SPDIV AND Cross(K,D) ;
//BUY2= HPDIV AND Cross(K,D) ;
//SELL2= HNDIV AND Cross(D,K) ;
//SELL1= SNDIV AND Cross(D,K) ;

trendline_L_extend3=IIf( dtrendline_L_extend3>0,trendline_L_extend3,null);

trendline_L_extend2=IIf( dtrendline_L_extend2>0,trendline_L_extend2,null);
trendline_L_extend=IIf(dtrendline_L_extend>0 ,trendline_L_extend,null);
trendline_h_extend2=IIf( dtrendline_h_extend2<0,trendline_h_extend2,null);
trendline_h_extend=IIf(dtrendline_h_extend<0 ,trendline_h_extend,null);
DT = DateTime();

BUY = BarsSince(SPDIV ) >5 AND Cross(K60,trendline_h_extend2 ) OR


BarsSince(SPDIV ) >5 AND Cross(K60,trendline_h_extend ) OR
BarsSince(SPDIV ) >5 AND Cross(K60,trendline_L_extend2 ) OR
BarsSince(SPDIV ) >5 AND Cross(K60,trendline_L_extend ) ;
Sell= BarsSince(SNDIV)>5 AND Cross(trendline_L_extend2 ,K60)
OR
BarsSince(SNDIV) >5 AND Cross(trendline_L_extend ,K60) OR
BarsSince(SNDIV) >5 AND Cross(trendline_H_extend2 ,K60) OR
BarsSince(SNDIV)>5 AND Cross(trendline_h_extend ,K60) ;

short=sell ;
Cover=Buy ;

Buy=ExRem(Buy,Sell);
sell=ExRem(sell,buy);
SHORT=ExRem(SHORT,COVER);
COVER=ExRem(COVER,SHORT);
BUY[BarCount-1]=Null;
SELL[BarCount-1]=Null;
SHORT[BarCount-1]=Null;
COVER[BarCount-1]=Null;

PlotShapes( IIf( BUY, shapeUpTriangle, shapeNone ), colorBrightGreen, 0, L, -15 );

PlotShapes( IIf( Sell, shapeDownTriangle, shapeNone ), colorRed, 0, H, -15 );


Plot(IIf(BarsSince(PlowM) <= nbar,trendline_L_extend2,Null),
"",colorDarkGreen,styleLine | styleDots| styleline);

Plot(IIf(BarsSince(PlowM) <= nbar,trendline_L_extend,Null), "",


colorLightGrey,styleLine | styleDots );

Plot(IIf(BarsSince(PlowM) > nbar,trendline_L_extend,Null), "",colorDarkGreen,


styleLine | styleDots | styleline);
Plot(IIf(BarsSince(PHighM) <= nbar,trendline_H_extend,Null), "", colorLightGrey,
styleLine | styleDots | styleline);
Plot(IIf(BarsSince(PHighM) > nbar,trendline_H_extend,Null), "",colorOrange,
styleLine | styleDots | styleline);
// segment 3
Plot(IIf(BarsSince(PHighM) <= nbar,trendline_H_extend2,Null), "",colorOrange,
styleLine | styleDots | styleline);

_SECTION_END();

_SECTION_END();
Title="ztisidiv1";
Plot(60,"",colorYellow,styleLine|styleDashed);
Plot(-60,"",colorYellow,styleLine|styleDashed);
Plot(20,"",colorYellow,styleLine|styleDashed);
Plot(-20,"",colorYellow,styleLine|styleDashed);
Plot(0,"",colorYellow,styleLine|styleDashed);

You might also like