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

请问mc怎么抓取上一个条件满足的位置 [MC]

  • MC用户求助:

    如果您需要用到上个同样条件满足时的currentbar,您可以使用函数mro,该函数返回指定表达式为true的之前柱状线数量,具体用法如下:
    MRO(Test, Length, Instance) 
    Test 
    设置要检查的 True/False 表达式(即 Close > Open)。
    Length 
    设置要检查的柱状线数量。
    Instance 
    设置发生顺序,例如 1 = 最近发生,2 = 次最近发生,以此类推。
    举例,若您需要在最近10根bar上返回第二次满足close>open的bar离当根bar的距离,可以使用mro(close>open, 2, 10);

    但是这个函数会使用instance限定搜索的范围,所以您可以使用变量来保存满足条件时的currentbar

    “当前条件满足的currentbar减去上个同样条件满足时的currentbar,怎么得到具体数字“,这句话不是很理解;若通过变量保存上一次条件满足时的currentbar,当条件再次满足时,可以直接用当根bar的currentbar减去上一次条件满足时的currentbar即可,得到一个相对位置(比如,这里用cur来代表);若您还需要通过这个相对位置去回溯上一次条件满足时的bar上的价格,例如close价格,可以使用symbol_close[cur],这里不能使用close[cur],原因是当使用close[cur]时,cur不能超过最大bar数量(默认是50),超过就会报错的;而symbol_close[cur]不受最大bar数量限制,这是close和symbol_close的区别,其它没有区别。

    还有其它一类的symbol系列关键字,您可以看一下这个帖子,http://forums.icetech.com.cn/for ... &extra=page%3D7

     

  • MC回复讨论一:

    如果您需要用到上个同样条件满足时的currentbar,您可以使用函数mro,该函数返回指定表达式为true的之前柱状线数量,具体用法如下:
    MRO(Test, Length, Instance) 
    Test 
    设置要检查的 True/False 表达式(即 Close > Open)。
    Length 
    设置要检查的柱状线数量。
    Instance 
    设置发生顺序,例如 1 = 最近发生,2 = 次最近发生,以此类推。
    举例,若您需要在最近10根bar上返回第二次满足close>open的bar离当根bar的距离,可以使用mro(close>open, 2, 10);

    但是这个函数会使用instance限定搜索的范围,所以您可以使用变量来保存满足条件时的currentbar

    “当前条件满足的currentbar减去上个同样条件满足时的currentbar,怎么得到具体数字“,这句话不是很理解;若通过变量保存上一次条件满足时的currentbar,当条件再次满足时,可以直接用当根bar的currentbar减去上一次条件满足时的currentbar即可,得到一个相对位置(比如,这里用cur来代表);若您还需要通过这个相对位置去回溯上一次条件满足时的bar上的价格,例如close价格,可以使用symbol_close[cur],这里不能使用close[cur],原因是当使用close[cur]时,cur不能超过最大bar数量(默认是50),超过就会报错的;而symbol_close[cur]不受最大bar数量限制,这是close和symbol_close的区别,其它没有区别。

    还有其它一类的symbol系列关键字,您可以看一下这个帖子,http://forums.icetech.com.cn/for ... &extra=page%3D7

     

  • MC回复讨论二:

    是的,我的目的就是您“这句话不是很理解”的下一句,但是因为条件是相同的,我可以记录前满足条件时的数据,但是上一次满足的数据会因为重新满足了一次而数据被重新取值,也就是无法获得上一个条件满足的数据了

     

  • MC回复讨论三:

    array: cur[1](0);

    condition1=close>open;  //这里只是一个例子,也可以使用其它的条件
    if condition1 then begin
            cur[1]=cur[0];
            cur[0]=currentbar;  //这里只是一个例子,也可以保存close等数据,不一定要保存currentbar数据
    end;

    新建一个两元素的数组,cur[1]保存上一次满足条件时的数据,而cur[0]保存当前满足条件时的数据。当条件condition1条件再次满足时,首先将cur[0]的数据赋值给cur[1],然后再将最新的数据赋值给cur[0]即可。

     

  • MC回复讨论四:

    array: cur[1](0);

    condition1=close>open;  //这里只是一个例子,也可以使用其它的条件
    if condition1 then begin
            cur[1]=cur[0];
            cur[0]=currentbar;  //这里只是一个例子,也可以保存close等数据,不一定要保存currentbar数据
    end;

    新建一个两元素的数组,cur[1]保存上一次满足条件时的数据,而cur[0]保存当前满足条件时的数据。当条件condition1条件再次满足时,首先将cur[0]的数据赋值给cur[1],然后再将最新的数据赋值给cur[0]即可。

 

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

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


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

相关文章

    没有相关内容