金字塔是否支持递归调用?

Discussion in '金字塔决策交易系统' started by dsafdsa, Jun 8, 2009.

  1. 很多策略都有递归,分析家和飞狐都不能完全实现,虽然dll可以,但麻烦,不知道金字塔系统能否实现?
    比如
    a:=c*0.5+(1-0.5)*ref(a,1);
    显示“未定义的变量A”
     
  2. 不支持。但上述例子就是EMA(C,3),看利用EMA(X,N)和WMA(X,N)等能否简单实现。或者利用循环来实现。
     
  3. 2003年飞析家5.0版已实现迭代、分支、循环等算法,数组,买卖函数中成交量参数可用变量等,已基本达到TradeStation 2000i的水平,并在有些方面有所超越,但十分可惜后来没有继续开发,而是卖给了万国股评公司,改成了乱七八糟的大智慧新一代。
    金字塔加油!
     
  4. 误会了. 多谢加油!

    我是说,不能直接支持 #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;

    金字塔完全可以实现迭代、分支、循环等算法以及数组运算。
     
  5. 我认为递归和迭代是许多自适应技术的基础,不知下面这几句TS代码能否用金字塔实现?
    inputs:price((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];
     
  6. 基本能用金字塔实现。
     
  7. 好!
     
  8. 第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句如何获得计算结果?