量化团队将不定期的公布一些经典技术指标改版或者源码公式
自动多重波浪指标
对波浪理论有研究的可以做一个参考,可以有效区分主升浪,次级浪
源码获取方式:
加入我们的知识星球获取
部分源码展示
int start() { int i, m; bool calculate;
if (Bars-currentBars+1>2) { for (i=0;i<3;i++) { saveBars[i]=0; } }
currentBars=Bars;
for (i=0;i<3;i++) { // 镳钼屦觇 潆 觐痧尻蝽钽?疣聍蛤?桧滂赅蝾疣 if ((iBars(NULL,GrossPeriod_[i])-1<ExtDepth_[i]) || (ExtDepth_[i]<=0)) continue;
calculate=false;
limit=iBars(NULL,GrossPeriod_[i])-saveBars[i]+1;
if (limit>2) { calculate=true; Grosstf_DT[i]=false; ZZ_tf[i]=false;
if (ExtDepth_[i]>=ExtBackstep_[i]) m=ExtDepth_[i]; else m=ExtBackstep_[i]; if ((ExtMaxBar_[i]>iBars(NULL,GrossPeriod_[i])-m) || (ExtMaxBar_[i]==0)) limit=iBars(NULL,GrossPeriod_[i])- m; else limit=ExtMaxBar_[i];
if (i==0) { arr_resize(LowestBufferGross1, HighestBufferGross1, limit+m, i);
ArrayInitialize(LowestBuffer1,0); ArrayInitialize(HighestBuffer1,0); } else if (i==1) { arr_resize(LowestBufferGross2, HighestBufferGross2, limit+m, i);
ArrayInitialize(LowestBuffer2,0); ArrayInitialize(HighestBuffer2,0); } else if (i==2) { arr_resize(LowestBufferGross3, HighestBufferGross3, limit+m, i);
ArrayInitialize(LowestBuffer3,0); ArrayInitialize(HighestBuffer3,0); }
} else { if (lBar[i]>iLow(NULL,GrossPeriod_[i],0) || hBar[i]<iHigh(NULL,GrossPeriod_[i],0) || tiZZ[i]!=iTime(NULL,GrossPeriod_[i],0)) { calculate=true; } }
if (calculate) { switch (i) { case 0: { if (GrossPeriod_[i]==0) { ZigZag_(LowestBuffer1, HighestBuffer1, i); } else { if (limit==2) Shift_elements(LowestBufferGross1,HighestBufferGross1);
if (ZigZag_(LowestBufferGross1, HighestBufferGross1, i)==0) { ZigZagDT (LowestBuffer1, HighestBuffer1, LowestBufferGross1, HighestBufferGross1, i); } }
break; } case 1: { if (GrossPeriod_[i]==0) { ZigZag_(LowestBuffer2, HighestBuffer2, i); } else { if (limit==2) Shift_elements(LowestBufferGross2,HighestBufferGross2);
if (ZigZag_(LowestBufferGross2, HighestBufferGross2, i)==0) { ZigZagDT (LowestBuffer2, HighestBuffer2, LowestBufferGross2, HighestBufferGross2, i); } }
break; } case 2: { if (GrossPeriod_[i]==0)