您现在的位置:程序化交易>> 期货公式>> (MC)multicharts>> MC知识>>正文内容

代码编写的问题,请老师指点 [MC]

  • MC用户求助:

    还请老师指定一下,问题一大串一大串的来.

    在文华中,我使用以下代码来提取   MACD指标中  当天红柱堆 的最高值   和  前一个红柱堆 中的最高值

    ==========

    //MACD

    DIF := EMA(CLOSE,12) - EMA(CLOSE,26);//短周期与长周期的收盘价的指数平滑移动平均值做差。

    DEA  := EMA(DIF,9);//DIFF的M个周期指数平滑移动平均

    MACDSX:=2*(DIF-DEA);//DIFF减DEA的2倍画柱状线

     

    //价格

    本HG:=HHV(H,BARSLAST(CROSS(MACDSX,0))+1),NODRAW;//本红柱堆

    1HG:=REF(HHV(H,BARSLAST(CROSS(MACDSX,0))+1),BARSLAST(CROSS(0,MACDSX))+1),COLORRED,NODRAW;//前红柱堆

    2HG:=REF(REF(HHV(H,BARSLAST(CROSS(MACDSX,0))+1),BARSLAST(CROSS(0,MACDSX))+1),BARSLAST(CROSS(0,MACDSX))+1)

    =====我在MC中想写一个函数,到是能够直接调用

    Input: 

    NUM(numericsimple );//输入第一个可以以此调用

    variables:

    DIF( 0 ),

    DEA( 0 ), 

    MACDSX( 0 ),

    BHG(0), HG1(0), HG2(0),HG3(0),

     

    //MACD ZHIBIAO

    DIF =MACD( Close, 12, 26 ) ;

    DEA = XAverage(DIF,9);

    MACDSX = (DIF-DEA)*2;

    //HG-MACD

    BHG=NthHighest(1,H,mro( MACDSX CROSS UNDER 0,1000,1));

    VAR0=mro( MACDSX CROSS UNDER 0,1000,1);

    HG1=BHG[VAR0];

     

    =====

    但出现错误

    References to previous values are not allowed in simple functions.

    错误行 0, 错误列 0

     

    以前的值的引用是不允许在简单的功能

    ==

    调用一个数值之前的值  不是使用[]的吗?   []不是想相当于文华的REF吗?

    查看论坛中之前的案例  使用AGO以后 还是不行

    BHG=NthHighest(1,H,mro( MACDSX CROSS UNDER 0,1000,1));

    VAR0=mro( MACDSX CROSS UNDER 0,1000,1);

    HG1=NthHighest(1,H,mro( MACDSX CROSS UNDER 0,1000,1))of VAR0 bar ago;

     

  • MC回复讨论一:

    看一下这个帖子:“时序类型函数、数值类型函数、自动类型函数”
    您可以在公式编译器的属性中将函数存储的类型更改成“自动”或者“数列”,具体原因看上面的帖子
    您的代码中出现了语句“HG1=BHG[VAR0];”,而这个在数值类型函数中是不允许的

 

有思路,想编写各种指标公式,程序化交易模型,选股公式,预警公式的朋友

可联系技术人员 QQ: 511411198  点击这里给我发消息进行 有偿 编写!不贵!点击查看价格!


【字体: 】【打印文章】【查看评论

相关文章

    没有相关内容