账户原有持仓100000股某品种。
进行图表程序化时,开多条件为:BUY(开多条件 AND HOLDING=0, 手数,MARKET);
于是早上十点钟的时候开多了10000股该品种。
问题是,BUY的条件中有个HOLDING=0,而我的账户中因为原来有持仓所以 HOLDING≠0的,为什么能开出来呢?
因为图表判断的是虚拟持仓,不是实际持仓,虚拟持仓指的是k线图上的信号持仓,和实际持仓没有关系
为什么图表上有很多开多信号,可是我的交易记录中只开了一笔呢?
1、2不太懂;
3.4.5我看了都不是这些原因。
而且最新的两次k线满足了开仓条件
开空条件:= L<L30 AND (MID-L30)/MID<N1 AND CYC>=30 AND T1;
如图,为什么k线上没显示呢?

此主题相关图片如下:图表02.png

[此贴子已经被作者于2016-5-19 13:16:15编辑过]
//准备需要的中间变量
INPUT:SS(10000,10000,1000000,10000),N1(0.005,0.001,1,0.001);
CYC:=BARSLAST(DATE<>REF(DATE,1))+1; //返回当天开盘到现在的K线根数
H30:REF(HHV(H,30),1); //上一个周期(30周期内最高价)的最高价
L30:REF(LLV(L,30),1); //上一个周期(30周期内最低价)的最低价
MID:(H30+L30)/2; //中轴
T1:=TIME>090000 AND TIME <145500;
T2:=TIME>=145500;
手数:=SS;
//进场的条件
开多条件:= H>H30 AND (H30-MID)/MID<N1 AND CYC>=30 AND T1;
开空条件:= L<L30 AND (MID-L30)/MID<N1 AND CYC>=30 AND T1;
//系统
收盘平多:SELL((T2 OR ABS(CLOSE-AVGENTERPRICE)*手数>=100) AND ref(holding,todaybar)-holding<0 AND HOLDING>0 , holding-ref(holding,todaybar),MARKET) ;
收盘平空:SELLSHORT((T2 OR ABS(CLOSE-AVGENTERPRICE)*手数>=100) AND ref(holding,todaybar)-holding>0 AND HOLDING<0, ref(holding,todaybar)-holding,MARKET) ;
开空:BUYSHORT(开空条件 AND HOLDING<=100000,手数,MARKET);
开多:BUY(开多条件 AND HOLDING<=100000, 手数,MARKET);
//其他
当前持仓:HOLDING,COLORGRAY,LINETHICK0;
当前资产:ASSET,NOAXIS,COLORGRAY; //输出当前资产,但不影响坐标最高最低值
当时行情:开盘价3.075,盘价3.070,最高3.075,最低3.067,H30为3.081,MID为3.076,L30为3.072。
开孔条件: L<L30 AND (MID-L30)/MID<N1 AND CYC>=30 AND T1;
那就简单了,前面的开多还没被平掉,开空信号不会产生,必须要开多的信号持仓全平了,才会出开空信号
还有一个疑问,为什么记录中的下单时间和k线上的不一致呢?日志和交易记录是一致的
[此贴子已经被作者于2016-5-19 13:46:07编辑过]