2003年飞析家5.0版已实现迭代、分支、循环等算法,数组,买卖函数中成交量参数可用变量等,已基本达到TradeStation 2000i的水平,并在有些方面有所超越,但十分可惜后来没有继续开发,而是卖给了万国股评公司,改成了乱七八糟的大智慧新一代。 金字塔加油!
误会了. 多谢加油! 我是说,不能直接支持 #1 的写法。但可利用EMA(X,N)和WMA(X,N)简单实现; 也可利用循环在公式中实现,如下 input:N(10,1,100),P(0.5,0,60); VARIABLE:A=0;CC:=C; //变量申明 IF NOT(ISLASTBAR) THEN EXIT; FOR J=1 TO DATACOUNT DO BEGIN A:=P*A+(1-P)*CC[J]; IF J>=N THEN BEGIN AA[J]:A; END; END; 金字塔完全可以实现迭代、分支、循环等算法以及数组运算。
我认为递归和迭代是许多自适应技术的基础,不知下面这几句TS代码能否用金字塔实现? inputsrice((H+L)/2), alpha(0.7); vars:smooth(0),cycle(0),q1(0),I1(0),DeltaPhase(0),MedianDelta(0), DC(0),InstPeriod(0),Period(0),I2(0),Q2(0); smooth=(price+2*price[1]+2*Price[2]+Price[3])/6; Cycle=(1-0.5*alpha)*(1-0.5*alpha)*(Smooth-2*Smooth[1]+Smooth[2])+2*(1-alpha)*Cycle[1]-(1-alpha)*(1-alpha)*Cycle[2]; if currentbar<7 then Cycle=(price-2*price[1]+price[2])/4; Q1=(0.0962*Cycle+0.5769*Cycle[2]-0.5769*Cycle[4]-0.0962*Cycle[6])*(0.5+0.08*InstPeriod[1]); I1=Cycle[3]; if Q1<>0 and Q1[1]<>0 then DeltaPhase=(I1/Q1-I1[1]/Q1[1])/(1+I1*I1[1]/(Q1*Q1[1])); if DeltaPhase<0.1 then DeltaPhase=0.1; if DeltaPhase>1.1 then DeltaPhase=1.1; MedianDelta=Median(DeltaPhase,5); if MedianDelta=0 then DC=15 else DC=6.28318/MedianDelta+0.5; InstPeriod=0.33*DC+0.67*InstPeriod[1]; Period=0.15*InstPeriod+0.85*Period[1];
第4句 Cycle=(1-0.5*alpha)*(1-0.5*alpha)*(Smooth-2*Smooth[1]+Smooth[2])+2*(1-alpha)*Cycle[1]-(1-alpha)*(1-alpha)*Cycle[2]; 这里Cycle是递归调用,用自带的函数(EMA、DMA、WMA)如何表示? 第6句 Q1=(0.0962*Cycle+0.5769*Cycle[2]-0.5769*Cycle[4]-0.0962*Cycle[6])*(0.5+0.08*InstPeriod[1]); InstPeriod数组的值在倒数第2句才计算出来,在第6句如何获得计算结果?