连续满足如何编写 [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 进行 有偿 编写!(不贵!点击查看价格!)
相关文章
-
没有相关内容