-- 作者:伍星亮
-- 发布时间:2016/3/25 23:49:00
-- 想用编程手段把跨周期引用,本地化
尊敬的工程师:
您好,策略是10分钟,多品种使用,跨周期引用日线,数据都是复权。但因为经常以为没逐个刷日线图表,而经常出现10分钟的信号出错。(数据是绝对补好的,但没刷图表可能就不一样了)
现在想把日线本周期话。本来是要引用日线的MA(C,20),写了以下语句:
DAYCLOSE:=IFELSE(DATE<>REF(DATE,1),REF(C,1),0),NOAXIS;//读取每天最后一支线的收盘价 NO_DAY:=IFELSE(DATE<>REF(DATE,1),1,0),NOAXIS;//标记交易日数目(因为金字塔没有交易日函数) 20DAYS:=SUMBARS(NO_DAY,20),NOAXIS;//返回前20个交易日到现在的周期总数 RXMA:SUM(DAYCLOSE,20DAYS)/20;//加总各天收盘价并除以20
RXDAYCLOSE:VALUEWHEN(DATE<>REF(DATE,1),REF(C,1));//把昨收用VALUEWHEN固定以写条件
CONDLONG:=RXDAYCLOSE>RXMA;//多头过滤条件
本来看上去是成功了。但发现问题不少。(如图)
一、由于商品有15分钟休息,故总交易时间不能整除10分钟,故最后一根K线收盘不一定是当日收盘;
二、短周期事实上是没有完全复权的,对吗?
此主题相关图片如下:qq截图20160325225814.png

恳请工程师帮帮忙想想办法。
|
-- 作者:jinzhe
-- 发布时间:2016/3/28 9:49:04
--
日线非引用ma20计算方法1:
枚举法:
c1:=callstock(stklabel,vtclose,6,-1); c2:=callstock(stklabel,vtclose,6,-2); c3:=callstock(stklabel,vtclose,6,-3); c4:=callstock(stklabel,vtclose,6,-4); c5:=callstock(stklabel,vtclose,6,-5); c6:=callstock(stklabel,vtclose,6,-6); c7:=callstock(stklabel,vtclose,6,-7); c8:=callstock(stklabel,vtclose,6,-8); c9:=callstock(stklabel,vtclose,6,-9); c10:=callstock(stklabel,vtclose,6,-10); c11:=callstock(stklabel,vtclose,6,-11); c12:=callstock(stklabel,vtclose,6,-12); c13:=callstock(stklabel,vtclose,6,-13); c14:=callstock(stklabel,vtclose,6,-14); c15:=callstock(stklabel,vtclose,6,-15); c16:=callstock(stklabel,vtclose,6,-16); c17:=callstock(stklabel,vtclose,6,-17); c18:=callstock(stklabel,vtclose,6,-18); c19:=callstock(stklabel,vtclose,6,-19); ma20_1:(c1+c2+c3+c4+c5+c6+c7+c8+c9+c10+c11+c12+c13+c14+c15+c16+c17+c18+c19+c)/20;
方法2:
计算式:
ma20_2:(stkindi(\'\',\'ma.ma3\',0,6,-1)*20-callstock(stklabel,vtclose,6,-20)+c)/20;
|