[Date Prev][Date Next][Thread Prev][Thread Next][Date Index][Thread Index]

[amibroker] Adjusting intraday data for summer time changes



PureBytes Links

Trading Reference Links

We suppose 
a. The price goes from 100 to 110 in one day.
b. The DEMA(20) exceeds the final value by MaxDiv1.
c. The TEMA(20) exceeds the final value by MaxDiv2.
d. We replace above averages with Ti3(5)
d. The MaxDiv of the Ti3(5) should vary from MaxDiv1 to MaxDiv2 in 
order to preserve the usual shape of smoothing lines and avoid 
oscillations*.
The following IB code will calculate automatically the range of the 
parameter S.
 
// The range of the parameter S 
L1=LastValue(Cum(1));D=100;DD=110;
C0=IIf(Cum(1)>L1-d,dd,d);
Plot(C0,"\nCLOSE",1,8);
PERIOD=20;//the DEMA and TEMA period
S1=DEMA(C0,PERIOD);
S2=TEMA(C0,PERIOD);
Div1=100*(s1-C0)/LastValue(C0);MaxDiv1=LastValue(Highest(Div1));
Div2=100*(s2-C0)/LastValue(C0);MaxDiv2=LastValue(Highest(Div2));
Plot(S1,"\nDEMA",colorRed,1);z=WriteVal(period,1.0);
Plot(S2,"\nTEMA",colorBrightGreen,1);
Title="Maximum Divergence for \nDEMA("+z+") ="+WriteVal(MaxDiv1,1.2)
+"%"+"\nTEMA("+z+")="+WriteVal(Maxdiv2,1.2)+"%";
//the Ti3 average
function T3(price,periods,s)
{
e1=EMA(price,periods);
e2=EMA(e1,Periods);
e3=EMA(e2,Periods);
e4=EMA(e3,Periods);
e5=EMA(e4,Periods);
e6=EMA(e5,Periods);
c1=-s*s*s;
c2=3*s*s+3*s*s*s;
c3=-6*s*s-3*s-3*s*s*s;
c4=1+3*s+s*s*s+3*s*s;
Ti3=c1*e6+c2*e5+c3*e4+c4*e3;
return ti3;
}

X=Param("X",5,3,20,1);//the Ti3 period
k=0;smin=0;step=0.01;
for(s=0.5;s<1.5;s=s+step)
{
Ti3=T3(C0,X,s);
Div3=100*(Ti3-C0)/LastValue(C0);MaxDiv3=LastValue(Highest(Div3));
if(MaxDiv3>=MaxDiv1 AND MaxDiv3<=MaxDiv2)
{
Plot(Ti3,"\nT3",colorBlue,1);k=k+1;
smin=smin+IIf(k==1,s,0);
}
}
smax=smin+(k-1)*step;
Title=Title+"\nThe Ti3("+WriteVal(x,1.0)+") parameter S should be 
from "+WriteVal(smin,1.2)+" to "+WriteVal(smax,1.2);

APPLICATION
According to the above calculation, S should vary from 0.77 to 0.87.
Plot the upper and lower Ti3 lines together with DEMA and TEMA with

//the Ti3 average
function T3(price,periods,s)
{
e1=EMA(price,periods);
e2=EMA(e1,Periods);
e3=EMA(e2,Periods);
e4=EMA(e3,Periods);
e5=EMA(e4,Periods);
e6=EMA(e5,Periods);
c1=-s*s*s;
c2=3*s*s+3*s*s*s;
c3=-6*s*s-3*s-3*s*s*s;
c4=1+3*s+s*s*s+3*s*s;
Ti3=c1*e6+c2*e5+c3*e4+c4*e3;
return ti3;
}
Ti3a=T3(C,5,0.77);
Ti3b=T3(C,5,0.87);
Plot(C,"Close",colorBlack,64);
Plot(Ti3a,"Ti3a",colorRed,1);
Plot(Ti3b,"Ti3b",colorBrightGreen,1);
Plot(DEMA(C,20),"DEMA",colorYellow,1);
Plot(TEMA(C,20),"TEMA",colorBlue,1);

When the stock has sharp changes [10%-20% in 2-3 days], Ti3 lines are 
much faster, without the undesirable price overshots. 
[*replace 0.77 with 1.77 in Ti3a=T3(C,5,0.77) to see how the red line 
begins to oscillate around the price !!]
In final analysis, a (Ti3a+Ti3b)/2 would be almost ideal.
Dimitris Tsokakis
--- In amibroker@xxxxxxxxxxxxxxx, "DIMITRIS TSOKAKIS" <TSOKAKIS@xxxx> 
wrote:
> We suppose again the price move from 100 to 110 in one day.
> The DEMA/TEMA averages will exceed the final price by 
MaxDiv1/MaxDiv2 
> respectively.
> The question is to find the range of parameter s which will cause 
to 
> Ti3 smoother a MaxDiv3 with
> 
> MaxDiv1<= MaxDiv3 <=MaxDiv2
> 
> The following IB code will find
> 
> // The parameter s limitations  
> L1=LastValue(Cum(1));D=100;DD=110;
> C0=IIf(Cum(1)<L1-D,D,DD);
> Plot(C0,"\nCLOSE",1,8);
> PERIOD=20;z=WriteVal(period,1.0);
> S1=DEMA(C0,PERIOD);
> S2=TEMA(C0,PERIOD);
> Div1=100*(s1-C0)/LastValue(C0);MaxDiv1=LastValue(Highest(Div1));
> Div2=100*(s2-C0)/LastValue(C0);MaxDiv2=LastValue(Highest(Div2));
> Plot(S1,"\nDEMA",colorRed,1);
> Plot(S2,"\nTEMA",colorBrightGreen,1);
> Title="Maximum Divergence for \nDEMA("+z+") ="+WriteVal(MaxDiv1,1.2)
> +"%"+"\nTEMA("+z+")="+WriteVal(Maxdiv2,1.2)+"%";
> function T3(price,periods,s)//According to Jayson message 59811 
> {
> e1=EMA(price,periods);
> e2=EMA(e1,Periods);
> e3=EMA(e2,Periods);
> e4=EMA(e3,Periods);
> e5=EMA(e4,Periods);
> e6=EMA(e5,Periods);
> c1=-s*s*s;
> c2=3*s*s+3*s*s*s;
> c3=-6*s*s-3*s-3*s*s*s;
> c4=1+3*s+s*s*s+3*s*s;
> Ti3=c1*e6+c2*e5+c3*e4+c4*e3;
> return ti3;
> }
> X=Param("X",5,3,20,1);
> for(s=0.7;s<1;s=s+0.01)
> {
> Ti3=T3(C0,X,s);
> Div3=100*(Ti3-C0)/LastValue(C0);MaxDiv3=LastValue(Highest(Div3));
> if(MaxDiv3>=MaxDiv1 AND MaxDiv3<=MaxDiv2)
> {
> Plot(Ti3,"\nT3",colorBlue,1);
> Title=Title+"\nTi3("+WriteVal(x,1.0)+") [s="+WriteVal(s,1.2)+"]
> ="+WriteVal(maxDiv3,1.2)+"%";
> }
> }
> 
> EXAMPLE
> For Ti3(10) s should be in the range [0.70-0.79]
> For Ti3(5) s should be in [0.77-0.87]
> 
> s values above this range will cause significant perturbation of 
the 
> Ti3 smoother and will introduce probable oscillation.
> Dimitris Tsokakis
> --- In amibroker@xxxxxxxxxxxxxxx, "DIMITRIS TSOKAKIS" 
<TSOKAKIS@xxxx> 
> wrote:
> > Let us suppose a stock goes from 100 to 110 in one day.
> > We shall examine the response of DEMA, TEMA and Ti3 averages.
> > These smoothers catch the new price in some days, then go higher 
> and 
> > find again [asymptotically] the final price.
> > For a given DEMA/TEMA period we may calibrate the Ti3 period to 
> > obtain the same Maximum Divergence from the final price.
> > EXAMPLE
> > For DEMA/TEMA period=20, we need Ti3 periods  x=4 and x=7 
> > respectively to avoid exceeding the DEMA/TEMA MaxDiv.
> > 
> > // Ti3 crash test and Maximum Divergence, by D. Tsokakis, March 
2004
> > function T3(price,periods)//According to Jayson´s message 59811 
> > {
> > s = 0.83;
> > e1=EMA(price,periods);
> > e2=EMA(e1,Periods);
> > e3=EMA(e2,Periods);
> > e4=EMA(e3,Periods);
> > e5=EMA(e4,Periods);
> > e6=EMA(e5,Periods);
> > c1=-s*s*s;
> > c2=3*s*s+3*s*s*s;
> > c3=-6*s*s-3*s-3*s*s*s;
> > c4=1+3*s+s*s*s+3*s*s;
> > Ti3=c1*e6+c2*e5+c3*e4+c4*e3;
> > return ti3;
> > }
> > L1=LastValue(Cum(1));D=100;DD=110;
> > C1=IIf(Cum(1)<L1-D,D,DD);
> > Plot(C1,"\nCLOSE",1,8);
> > PERIOD=20;
> > S1=DEMA(C1,PERIOD);
> > S2=TEMA(C1,PERIOD);
> > X=Param("X",3,3,20,1);
> > Ti3=T3(C1,X);
> > //The maximum divergence
> > Div1=100*(s1-C1)/LastValue(C1);MaxDiv1=LastValue(Highest(Div1));
> > Div2=100*(s2-C1)/LastValue(C1);MaxDiv2=LastValue(Highest(Div2));
> > Div3=100*(Ti3-C1)/LastValue(C1);MaxDiv3=LastValue(Highest(Div3));
> > Plot(S1,"\nDEMA",colorRed,1);
> > Plot(S2,"\nTEMA",colorBrightGreen,1);
> > Plot(Ti3,"\nT3",colorBlue,1);
> > z=WriteVal(period,1.0);
> > Title="Maximum Divergence for \nDEMA("+z+") ="+WriteVal
(MaxDiv1,1.2)
> > +"%"+"\nTEMA("+z+")="+WriteVal(Maxdiv2,1.2)+"%"+"\n     Ti3
> ("+WriteVal
> > (x,1.0)+")="+WriteVal(maxDiv3,1.2)+"%";



Send BUG REPORTS to bugs@xxxxxxxxxxxxx
Send SUGGESTIONS to suggest@xxxxxxxxxxxxx
-----------------------------------------
Post AmiQuote-related messages ONLY to: amiquote@xxxxxxxxxxxxxxx 
(Web page: http://groups.yahoo.com/group/amiquote/messages/)
--------------------------------------------
Check group FAQ at: http://groups.yahoo.com/group/amibroker/files/groupfaq.html 
Yahoo! Groups Links

<*> To visit your group on the web, go to:
     http://groups.yahoo.com/group/amibroker/

<*> To unsubscribe from this group, send an email to:
     amibroker-unsubscribe@xxxxxxxxxxxxxxx

<*> Your use of Yahoo! Groups is subject to:
     http://docs.yahoo.com/info/terms/