公式參考自:http://rane1220.pixnet.net/blog/post/48867946
#property indicator_chart_window
#property indicator_buffers 1
#property indicator_buffers 2
#property indicator_color1 Red
#property indicator_color2 Yellow
double buffer1[];
double buffer2[];
int init(){
int draw_begin;
SetIndexStyle(0,DRAW_LINE);
SetIndexBuffer(0,buffer1);
SetIndexStyle(1,DRAW_LINE);
SetIndexBuffer(1,buffer2);
return 0;
}
int start(){
int limit = Bars - IndicatorCounted();
for(int i=0; i<limit; i++){
buffer1[i] = LssUp(i);
buffer2[i] = LssDown(i);
}
return 0;
}
double LssUp(int shift){
double upv, buv, dup, lssup;
shift++;
upv = iLow(NULL,0,shift) + (iHigh(NULL,0,shift) - iLow(NULL,0,shift+1) +
iHigh(NULL,0,shift+1) - iLow(NULL,0,shift+2) +
iHigh(NULL,0,shift+2) - iLow(NULL,0,shift+3))/3;
buv = iHigh(NULL,0,shift) + (iHigh(NULL,0,shift) - iHigh(NULL,0,shift+1) +
iHigh(NULL,0,shift+1) - iHigh(NULL,0,shift+2) +
iHigh(NULL,0,shift+2) - iHigh(NULL,0,shift+3))/3;
dup = iHigh(NULL,0,shift);
lssup = 2*(iHigh(NULL,0,shift) + iLow(NULL,0,shift) + iClose(NULL,0,shift))/3 - iLow(NULL,0,shift);
return (upv+buv+dup+lssup)/4;
}
double LssDown(int shift){
double downv, bdv, ddown, lssdown;
shift++;
downv = iHigh(NULL,0,shift) - (iHigh(NULL,0,shift+1) - iLow(NULL,0,shift) +
iHigh(NULL,0,shift+2) - iLow(NULL,0,shift+1) +
iHigh(NULL,0,shift+3) - iLow(NULL,0,shift+2))/3;
bdv = iLow(NULL,0,shift) - (iLow(NULL,0,shift+1) - iLow(NULL,0,shift) +
iLow(NULL,0,shift+2) - iLow(NULL,0,shift+1) +
iLow(NULL,0,shift+3) - iLow(NULL,0,shift+2))/3;
ddown = iLow(NULL,0,shift);
lssdown = 2*(iHigh(NULL,0,shift) + iLow(NULL,0,shift) + iClose(NULL,0,shift))/3 - iHigh(NULL,0,shift);
return (downv+bdv+ddown+lssdown)/4;
}
沒有留言:
張貼留言