版主好:我写了一个很简单的交易测试程序(一分钟期指),逢K线是双数,就开一手多单,逢单数就平单一手,然后又开单。代码如下:
VARIABLE:n=0;
if date<>ref(date,1) then begin
n:=0;
end
A:=todaybar; //目前K线数目
if intpart(a/2)=a/2 and n=0 and A>=0 then begin //取整后检验单双
buy(1,1,MARKETR); //是双数就开多单
n:=1;
end
if intpart(a/2)<>a/2 and holding>0 then begin //单数就平多
sell(1,1,MARKETR);
n:=0;
end
这个程序运行后,出现了一些奇怪的下单日志,无法理解。日志如下(只取其中的一次开单):另外,我的开单模式是选的“走完一根K线之后”
2015-01-20 10:07:05.421 2015.01.20 10:07:05【图表】框架:Technic 触发下单 BUY 品种 IF02 下单K线 2015.01.20 10:07:00 公式:交易模式测验 窗格ID:0 代码行:7
2015-01-20 10:07:05.421 【图表】模型下单 1
2015-01-20 10:07:05.421 【图表】下单系数调整后 手数:1
2015-01-20 10:07:05.421 【图表】直接下单
2015-01-20 10:07:05.421 【图表】IF02 运行完毕
2015-01-20 10:07:05.421 【下单】IF02 价0.000000 量1 买卖0 类型1 开平0 账户811699 Formula 1
2015-01-20 10:07:05.734 【回报】811699 : IF02 - 正在申报 1 价格:3399.600 开仓 买入
2015-01-20 10:07:05.984 【回报】811699 : IF02 全部成交 1 价格:3399.0 开 买
现在问题来了:
1、为什么日志第一行的时间是“2015-01-20 10:07:05.421 ” ?按理,应该是走完10点07分这一根K线后的一瞬间,就立即就发出开单请求的,为什么还要延迟5秒?请指教。
2、日志倒数第二行,申报价格是“3399.6”,这个价格是根据申报代码实际发生时间(也就是倒数第二行的时间)那会的市价来确定的吗?如果不是,那是根据什么来确定呢?肯定不是根据10点07分的收盘价来定的,因为不符。请指教!
1,日志记录的是本地时间,看是是不是您本地时间与行情时间有点出入
2,模拟交易价格是根据模拟交易所行情来的,没有撮合成交。所以没有市价这个概念,按照报单当时模拟交易所里面对应的对手单价格成交
2,模拟交易价格是根据模拟交易所行情来的,没有撮合成交。所以没有市价这个概念,按照报单当时模拟交易所里面对应的对手单价格成交
=========
版主好:如果是实盘的话,在走完一根K线模式下,代码会在这根K线走完后,立即从第一行开始执行我们所编的代码,然后如果开单条件成立的话,立即以此时的市价开单(开单参数是market),是这样吗?
此时,一定是距离刚走完的那根K线大约毫秒级别的距离,是这样吗?
如果支持市价的话就是市价报单,市价成交位置是无法控制的,如果你要控制成交价自己改用限价或对手价报
[此贴子已经被作者于2015/1/20 14:22:33编辑过]