看了手册和一些帖子,对固定轮询模式和走完K线模式的理解归纳如下,麻烦帮忙看看是否正确。
另外,对于限价委托,如果设置的价格超出了本周期或者次周期的High-Low的范围,在回测和实盘时会分别如何?
交易指令详解看这个帖子:
http://www.weistock.com/bbs/dispbbs.asp?boardid=17&Id=159473&page=2
固定时间间隔和走完k线是检测抓取信号的时机。在图表中不会影响图表公式的正常计算。图表中的策略都是k线更新一次,公式计算一次。
如果只是K线更新一次,公司计算一次,那么请问阿火秘笈中提到cc变量,如果当前周期是15分钟,那么cc变量也应该是15分钟才变一次,对吗?那么Bar内交易是如何实现的呢?
简单的改法,自然是把各个条件“过去化”,如:ma5 改为 ref(ma(c,5),1);但这种方法碰到大型的、复杂的模型时,容易出错
可采用这种方法,把holding用全局变量cc替换,然后加入红色部分代码,红色部分代码要放在信号语句的前面:
runmode:0;
variable:cc=0;
ma5:=ma(c,5);
ma20:=ma(c,20);
entertime:=time>100000 and time<144500;
if holding>0 and cc<=0 then sell(1,1,limitr,o);
if holding<0 and cc>=0 then sellshort(1,1,limitr,o);
if holding=0 and cc>0 then buy(1,1,limitr,o);
if holding=0 and cc<0 then buyshort(1,1,limitr,o);
if cc>0 and ma5<ma20 then cc:=0;
if cc<0 and ma5>ma20 then cc:=0;
if cc=0 and ma5>ma20 and entertime then cc:=1;
if cc=0 and ma5<ma20 and entertime then cc:=-1;
if time>=150000 then begin
cc:=0;
end
如果固定轮询设成每秒一次,那么K线就是每秒刷新一次,公式就是每秒运行一次,除了Holding/Enterbars外的所有变量都是每秒刷新一次,这个理解对吧?
写了个简单程序,就下面两句
ma5:ma(close,5);
DEBUGFILE2('C:\TEST.TXT','MA5=%.2f',MA5,1);
在15分钟焦炭图上,信号执行选择固定间隔10秒,结果如下。请问为啥MA5的刷新时间间隔在0.8秒左右,为啥不是设定的10秒?为啥不是一个Tick的0.5秒?
每一个分笔,CLOSE的值都会变化,MA(Close,5)的值也跟着变了,所以程序也是每个分笔都运行一次,但是交易信号的确认,就是按照设定每10秒检测一次。这个理解对吧?