我只能提示你一下:"昨天"与"今天"之间的时间参数有何不同,今天的第一分钟和昨天的最后一分钟有何参数不同,利用这个不同做间隔. 另:AFL并不是很难的语言,简单的数据统计比较容易完成.但方法(或算法)必须在在自己理解的基础上不断的实践才会对今后的编程过程形成经验积累.
我现在用一个最笨的方法,定义了093000和160000两个Bar,timenum()在这之间,且Datenum()不等于DateNum(),-1,index为1,否则为0,然后每个volume都最后与index相乘。非程序员出身,见笑了。 我想应该有更好的办法解决这个问题,还请多指教。
多谢指教。 我现在想按天统计每分钟上升和下降的量的总和,也就是说上升Volume为正,下降为负,每天相加,下面这个公式好像一天都不work,跨天以后ABV就没有了,第一天ABVtoday又没有,不知道问题出在哪儿,还请继续赐教。 TimeFrameSet(in1Minute); Bars_so_far_today = 1 + BarsSince( Day() != Ref(Day(), -1)); StartBar=ValueWhen(TimeNum() == 093000, BarIndex()); EndBar=ValueWhen(TimeNum()==160000, BarIndex()); ABV=IIf(Close>Ref(Close,-1), V, -V); ABVToday=Sum(ABV,EndBar); Plot(ABV,"ABV",colorGreen, styleCandle); Plot(ABVToday,"ABVToday", colorBlue,styleLine); TimeFrameRestore();
看来你需要反复阅读并理解USERGUIDE,我可以给出并非唯一的答案,但这种帮助可能意义不大: Bars=1 + BarsSince( Day() != Ref(Day(), -1)); V_up=IIf(bars>1 AND Close>=Ref(Close,-1), V, 0); V_down=IIf(bars>1 AND Close<Ref(Close,-1), V, 0); V_up_all=IIf(bars<Ref(bars,-1),Sum(V_up,Ref(Bars,-1)),0); V_down_all=IIf(bars<Ref(bars,-1),Sum(V_down,Ref(Bars,-1)),0);