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

连续满足如何编写 [MC]

  • MC用户求助:

    不知道您这里是要求close>lowest(L,10) 连续满足十根bar还是十天,那这两种情况下面都会给出相应的代码:

    一、连续满足十根bar,countif(close>lowest(L,10),10)=10即可,因为countif(test,length)统计的是最近length根bar(包括当根bar)上test成立的次数,若结果是length次就表明连续length根bar都满足条件。

    二、连续满足十天,这个有点麻烦,需要使用数组、关于每天的开始时间和结束时间的初始参数。
    input: starttime(2100), endtime(1500);
    {一天的开始时间starttime和一天的结束时间endtime}
    var: flag(-1), var_true(true);
    {flag用于统计天数,var_true变量用于判断当天close>lowest(low,10)是否连续成立,默认是true}

    array: arr0[9](false);

    if time=starttime then begin
            var_true=true;
            flag=flag+1;
    end;
    {每天的开始时间点,变量设定,将flag累加1,将var_true赋值为true,因为在下面只判断为false的情况}

    if flag<>-1 and var_true=true and close<=lowest(low,10) then
            var_true=false;
    {判断当天是否有不连续的情况,若有则赋值var_true为false,当天的剩余时间将不再判断}

    if time=endtime and flag<>-1 then
            arr0[mod(flag,10)]=var_true;
    {每天的结束时间点,将var_true赋值存储到数组中,通过mod求余运算,使数组中存储的是始终是最近10天是否连续的情况}

    if flag>9 then
            condition1=not array_contains(arr0,false);
    {当flag>9说明数组中已经存储了最近10天是否连续的情况,若数组中没有false,则说明连续10天close>lowest(low,10)成立,此时condition1为true;否则condition1为false}

    注意事项:对于短周期,比如1分钟甚至更小,或者对于交易量比较小的商品合约,有可能开始时间或者结束时间点没有K线,那么这个算法就会出现问题;所以这里只是给出一个模板,关于时间的界定,您可能需要贴出您的具体情境,然后特别定制代码界定时间。

    此外,更简单的办法是,通过插入日线周期的子图,然后声明一个基于子图的变量,通过这个变量来保存当天是否连续。

     

  • MC回复讨论一:

    不知道您这里是要求close>lowest(L,10) 连续满足十根bar还是十天,那这两种情况下面都会给出相应的代码:

    一、连续满足十根bar,countif(close>lowest(L,10),10)=10即可,因为countif(test,length)统计的是最近length根bar(包括当根bar)上test成立的次数,若结果是length次就表明连续length根bar都满足条件。

    二、连续满足十天,这个有点麻烦,需要使用数组、关于每天的开始时间和结束时间的初始参数。
    input: starttime(2100), endtime(1500);
    {一天的开始时间starttime和一天的结束时间endtime}
    var: flag(-1), var_true(true);
    {flag用于统计天数,var_true变量用于判断当天close>lowest(low,10)是否连续成立,默认是true}

    array: arr0[9](false);

    if time=starttime then begin
            var_true=true;
            flag=flag+1;
    end;
    {每天的开始时间点,变量设定,将flag累加1,将var_true赋值为true,因为在下面只判断为false的情况}

    if flag<>-1 and var_true=true and close<=lowest(low,10) then
            var_true=false;
    {判断当天是否有不连续的情况,若有则赋值var_true为false,当天的剩余时间将不再判断}

    if time=endtime and flag<>-1 then
            arr0[mod(flag,10)]=var_true;
    {每天的结束时间点,将var_true赋值存储到数组中,通过mod求余运算,使数组中存储的是始终是最近10天是否连续的情况}

    if flag>9 then
            condition1=not array_contains(arr0,false);
    {当flag>9说明数组中已经存储了最近10天是否连续的情况,若数组中没有false,则说明连续10天close>lowest(low,10)成立,此时condition1为true;否则condition1为false}

    注意事项:对于短周期,比如1分钟甚至更小,或者对于交易量比较小的商品合约,有可能开始时间或者结束时间点没有K线,那么这个算法就会出现问题;所以这里只是给出一个模板,关于时间的界定,您可能需要贴出您的具体情境,然后特别定制代码界定时间。

    此外,更简单的办法是,通过插入日线周期的子图,然后声明一个基于子图的变量,通过这个变量来保存当天是否连续。

 

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

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


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

相关文章

    没有相关内容