这个平空单子本来是开多的
因为一个全局变量赋值错误结果下了平空单...
妈的
这下搞的没心情了
我手动补单子的时候行情已经 不等了
查看orderlog..
======================sniper的监控===============
2011-05-31 09:44:49.630 =======
2011-05-31 09:44:49.630 bk=2997.38003
2011-05-31 09:44:49.630 sk=2957.78003
2011-05-31 09:44:49.645 price1=2977.58003
2011-05-31 09:44:49.645 xn=2977.80005
2011-05-31 09:44:49.645 num_trade=0.00000
2011-05-31 09:44:49.645 hold=0.00000
2011-05-31 09:44:50.129 =======
2011-05-31 09:44:50.129 bk=2997.38003
2011-05-31 09:44:50.129 sk=2957.78003
2011-05-31 09:44:50.129 price1=2977.58003
2011-05-31 09:44:50.129 xn=2977.80005
2011-05-31 09:44:50.129 num_trade=0.00000
2011-05-31 09:44:50.129 hold=0.00000
2011-05-31 09:45:30.606 =======
2011-05-31 09:45:30.606 bk=2997.38003
2011-05-31 09:45:30.606 sk=2957.78003
2011-05-31 09:45:30.606 price1=2977.58003
2011-05-31 09:45:30.606 xn=2977.00000
2011-05-31 09:45:30.606 num_trade=1.00000
2011-05-31 09:45:30.606 hold=-1.00000
2011-05-31 09:45:31.277 =======
2011-05-31 09:45:31.277 bk=2997.38003
2011-05-31 09:45:31.277 sk=2957.78003
2011-05-31 09:45:31.277 price1=2977.58003
2011-05-31 09:45:31.277 xn=2977.00000
2011-05-31 09:45:31.277 num_trade=1.00000
2011-05-31 09:45:31.292 hold=-1.00000
只要成交价格大于BK则开多~小于SK则开空~hold是外生全局变量的虚拟持仓~num_trade是今天的下单笔数~xn是最新价
另外~hold全局变量虚拟持仓lastbar才赋值...
这笔单出问题是因为hold这个虚拟全局变量出了问题~
本来9点45的时候没有下空单~实盘没有下单动作的~不知道为啥这个地方hold给赋值成了-1...系统认为我持有空单
在下午13点55的时候~本来的开多单子变成了平空单....预警响了铃声但因为帐户里实际持仓为0所以没有平空单发出...
关键问题出在早上9点45那个hold的赋值错误
============orderlog=================
2011-05-31 09:44:48.132 【后台】IF06 运行结束
2011-05-31 09:44:48.663 【图表】IF06 运行完毕
2011-05-31 09:44:48.663 【后台】IF06 运行结束
2011-05-31 09:44:49.224 【图表】IF06 运行完毕
2011-05-31 09:44:49.224 【后台】IF06 运行结束
2011-05-31 09:44:49.661 【图表】IF06 运行完毕
2011-05-31 09:44:49.661 【后台】IF06 运行结束
2011-05-31 09:44:50.145 【图表】IF06 运行完毕
2011-05-31 09:44:50.160 【后台】IF06 运行结束
2011-05-31 09:45:18.981 【图表】IF06 运行完毕
2011-05-31 09:45:19.215 【图表】IF06 运行完毕
2011-05-31 09:45:19.651 【图表】IF06 运行完毕
2011-05-31 09:45:20.151 【图表】IF06 运行完毕
2011-05-31 09:45:20.684 【图表】IF06 运行完毕
2011-05-31 09:45:21.137 【图表】IF06 运行完毕
2011-05-31 09:45:21.183 【图表】IF06 运行完毕
2011-05-31 09:45:21.636 【图表】IF06 运行完毕
2011-05-31 09:45:22.088 【图表】IF06 运行完毕
2011-05-31 09:45:22.151 【图表】IF06 运行完毕
2011-05-31 09:45:22.556 【图表】IF06 运行完毕
2011-05-31 09:45:22.697 【图表】IF06 运行完毕
2011-05-31 09:45:23.024 【图表】IF06 运行完毕
2011-05-31 09:45:23.211 【图表】IF06 运行完毕
2011-05-31 09:45:23.492 【图表】IF06 运行完毕
2011-05-31 09:45:23.711 【图表】IF06 运行完毕
2011-05-31 09:45:23.960 【图表】IF06 运行完毕
2011-05-31 09:45:24.116 【图表】IF06 运行完毕
2011-05-31 09:45:24.428 【图表】IF06 运行完毕
2011-05-31 09:45:24.662 【图表】IF06 运行完毕
2011-05-31 09:45:25.130 【图表】IF06 运行完毕
2011-05-31 09:45:25.193 【图表】IF06 运行完毕
2011-05-31 09:45:25.380 【图表】IF06 运行完毕
2011-05-31 09:45:25.676 【图表】IF06 运行完毕
2011-05-31 09:45:26.207 【图表】IF06 运行完毕
2011-05-31 09:45:26.519 【图表】IF06 运行完毕
2011-05-31 09:45:26.643 【图表】IF06 运行完毕
2011-05-31 09:45:27.174 【图表】IF06 运行完毕
2011-05-31 09:45:27.470 【图表】IF06 运行完毕
2011-05-31 09:45:27.673 【图表】IF06 运行完毕
2011-05-31 09:45:28.188 【图表】IF06 运行完毕
2011-05-31 09:45:28.625 【图表】IF06 运行完毕
2011-05-31 09:45:29.155 【图表】IF06 运行完毕
2011-05-31 09:45:29.685 【图表】IF06 运行完毕
2011-05-31 09:45:30.216 【图表】IF06 运行完毕
2011-05-31 09:45:30.590 【后台】 启动后台程式化交易
2011-05-31 09:45:30.621 【图表】IF06 运行完毕
2011-05-31 09:45:30.637 【后台】IF06 运行结束
2011-05-31 09:45:31.308 【图表】IF06 运行完毕
9点44的时候我的后台图表监控的走的好好的
突然后台停了一下
在9点45的时候【后台】 启动后台程式化交易
我不记得当时发生了什么问题~但是图表的监控没有断~那么金字塔应该没有关闭
有可能是我手动关了后台又重新开启了...
但即使是那样的话~为啥那个hold的赋值会出问题呢?
我实在想不通了...
从给出的内容,分析不出原因.
可否大致给出一个简单的代码示例.
我这个公式跑了3个月了没问题
今天因为一个全局变量赋值出现了问题
现在问题是
2011-05-31 09:44:50.160 【后台】IF06 运行结束
2011-05-31 09:45:18.981 【图表】IF06 运行完毕
2011-05-31 09:45:19.215 【图表】IF06 运行完毕
这个之间有28秒间断~
我可以保证我没有手动去改那个全局变量数值
可能是因为我手动停了一下后台还是怎么~
但为啥那个会影响到全局变量的赋值呢?
我 的全局变量赋值只有早上一个初始化归零~
另外还有下单的时候才会赋值...
为啥停止监控会自动赋值呢?!...搞不清了...
每次启动时全局变量都应该赋初值。
每次启动时全局变量都应该赋初值。
这样很难啊~比如我的hold虚拟持仓全局变量是在9点半之前初始化为0
如果每次启动时全局变量初始化为0~假设是10点...
我9点40的时候开了一手多~hold=1
结果9点50的时候掉线重启了~
我下次启动交易的时候如果全局变量又初始化为0..
那就麻烦了...
所以还得自己盯这个全局变量怕出问题啊...
全局变量的确是个问题,只能在最初的时候初始化,不可能在开仓后再来初始化。
请版主找几个好帖,好好学习一下,总是出问题。
我今天的空仓没有开出:
if buyshortcond then begin
Tbuyshort(1,sv,MKT,0,0,'83060','IF06'),orderqueue;
//Tbuyshort(1,2,MKT,0,0,'8114','IF06'),orderqueue;
Tbuyshort(1,2,MKT,0,0,'8306','IF06'),orderqueue;
EXTGBdataset(1C_TotalHoldings,-sv);
end
当buyshortcond满足的时候,我检测到1C_totalHoldings 的值变成了-sv. 但是竟然没有任何开仓动作。而且监控中也没有看到任何开仓的信号出来。
请教到底发生了什么问题?
1.6楼的是一个后台策略,请不要双击显示在K线主图上.------后台策略就后台运行
2.这个开平仓的简单示例,可以运行一下,下单情况一致,全局变量的赋值也完全符合要求.
//1分钟K线,K线走完
RUNMODE:0; //工作于逐周期模式
THold:='THold';
IF currenttime>=144800 and currenttime<=145200 and islastbar and tholding=0 THEN
begin
Tbuyshort(1,1,MKT,0,0,'','IF06');
EXTGBdataset('THold',1);
end
IF currenttime>145500 and tholding<0 THEN
begin
Tsellshort(1,1,MKT);
EXTGBdataset('THold',0);
end
IF ISLASTBAR then begin
DEBUGFILE2('d:\quanju.txt','THOLDING:%.2f',EXTGBdata('THold'),1);
END
附:quanju.txt中的全局变量THold的输出
2011-06-02 14:47:01.632 THOLDING:0.00
2011-06-02 14:48:02.585 THOLDING:1.00
2011-06-02 14:49:01.616 THOLDING:1.00
2011-06-02 14:50:01.632 THOLDING:1.00
2011-06-02 14:51:01.600 THOLDING:1.00
2011-06-02 14:52:01.616 THOLDING:1.00
2011-06-02 14:53:01.710 THOLDING:1.00
2011-06-02 14:54:01.632 THOLDING:1.00
2011-06-02 14:55:01.600 THOLDING:0.00
2011-06-02 14:56:02.585 THOLDING:0.00
2011-06-02 14:57:01.647 THOLDING:0.00
2011-06-02 14:58:02.632 THOLDING:0.00
2011-06-02 14:59:01.647 THOLDING:0.00