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

[amibroker] Re: how to realize zig function DIFF_METHODs?



PureBytes Links

Trading Reference Links

Any one could modify codes below for zig function use point 
method.It's very useful.
Please consider these two examples: from 100 to 1 (a -99-point
difference) there is a change of -99%, whereas from 1 to zero
(a -1-point difference) we have a -100% change! Similarly, -
2 to zero represents a 100% change, while -1 to +1 (also a twopoint
difference) is interpreted as a 200% change.


>From AFL library:

Description:
normal zig zag with following differences:
- uses log difference instead of percentage
- has trigger point indicating when highs and /lows were detected

log difference is better because it is symmetrical, log(5/10) and log
(10/5) has same absolute value, whereas 5/10 and 10/5 have different 
values.

trigger is when you can make a trade. usually a rookie mistake, 
trades are shown to be made at the peaks and troughs of a move, 
especially in backtesting.

Formula:
// 'thold' is the threshold for the zig-zag turning points
// it is set to a minimum of 2.5% (approx, uses log difference
//  which is more accurate) or a volatility measure
// based on 2 day range over the past 100 days

min_thold=0.025;
thold=Max(min_thold,Median(ln(HHV(H,2)/LLV(L,2)),100));
thold=IIf(IsEmpty(thold),min_thold,thold);

// 't' is a multiplier of 'thold'
// the larger the value of 't', the more significant the
// turning point. Adjust it by opening the Parameter window
// (press ctrl-R)

t=Param("significance",2,2,6,1);

// initialization of variables

d=init=trig=HH=LL=z=0;

// main body
// this program is different than the canned zigzag in that
// it is symmetrical, it does not use percentages, but rather
// log differences. close price is not used either. high and
// low trades are used. an additional item is the trigger
// indicator. it shows the point where the zig or zag was
// identified.

for(i=1;i<BarCount;i++){
	if (log(H[i]/L[init])>HH) HH=log(H[i]/L[init]);
	if (log(L[i]/H[init])<LL) LL=log(L[i]/H[init]);
	if (HH>(t*thold[init]) && d<=0)
		{ z[init]--; trig[i]=-0.5; d=1;init=i;HH=0;LL=0; }

	if (H[i]>H[init] && d==1){init=i;LL=0;}

	if (LL<(-t*thold[init]) && d>=0)
		{ z[init]++; trig[i]=0.5; d=-1;init=i;HH=0;LL=0; }

	if (L[i]<L[init] && d==-1){init=i;HH=0;}
}

z_up=z>0; z_dn=z<0;

Plot(z_up,"zig",colorGreen,1);
Plot(-z_dn,"zag",colorRed,1);
Plot(trig,"trigger",colorBlue,1);




Please note that this group is for discussion between users only.

To get support from AmiBroker please send an e-mail directly to 
SUPPORT {at} amibroker.com

For NEW RELEASE ANNOUNCEMENTS and other news always check DEVLOG:
http://www.amibroker.com/devlog/

For other support material please check also:
http://www.amibroker.com/support.html
 
Yahoo! Groups Links

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

<*> Your email settings:
    Individual Email | Traditional

<*> To change settings online go to:
    http://groups.yahoo.com/group/amibroker/join
    (Yahoo! ID required)

<*> To change settings via email:
    mailto:amibroker-digest@xxxxxxxxxxxxxxx 
    mailto:amibroker-fullfeatured@xxxxxxxxxxxxxxx

<*> 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/