小米 发表于 2016-1-29 11:10:09

fqxing95 发表于 2016-1-29 10:23 static/image/common/back.gif
我是按数据库持仓来调整,这样看来数据库是没有问题的,还是持仓函数的问题。。。。。。。。。 ...

好的,这个我转交开发人员排查 一下吧。

fqxing95 发表于 2016-1-29 13:39:45

小米 发表于 2016-1-29 11:10 static/image/common/back.gif
好的,这个我转交开发人员排查 一下吧。

谢谢,结果如何希望能在这里反馈一下。

fqxing95 发表于 2016-1-29 15:20:27

if(BarStatus()==2 and jytime==True)
{
buycc=A_BuyPosition();
sellcc=A_SellPosition();
if(buycc==InvalidNumeric or sellcc==InvalidNumeric or buycc>10000 or sellcc>10000 or BuyLotsz01==InvalidNumeric or BuyLotsz02==InvalidNumeric or BuyLotsz01>10000 or BuyLotsz02>10000) {
                   FileAppend("d:\\A"+Symbol+"_"+Text(CurrentDate)+".txt",DateTimeToString(SystemDateTime)+"多头"+Text(buycc)+"数据库多头"+text(BuyLotsz01)+"空头"+text(sellcc)+"数据库空头"+text(BuyLotsz02)+"无效值返回");
                                   return;}
if(TimeDiff(Myvar0,SystemDateTime)>300)
{
  if(strValued_x=="x+1" and buycc<>BuyLotsz01)
   {
                                   if(buycc>BuyLotsz01)  {A_SendOrder(Enum_Sell,Enum_Exit,buycc-BuyLotsz01,Q_BidPrice-3*chajia);SetGlobalVar(44,SystemDateTime);
                                   FileAppend("d:\\A"+Symbol+"_"+Text(CurrentDate)+".txt",DateTimeToString(SystemDateTime)+"多头"+Text(buycc)+"数据库多头"+text(BuyLotsz01)+"空头"+text(sellcc)+"数据库空头"+text(BuyLotsz02)+"多头错误1");
                                   return;}
                                   if(buycc<BuyLotsz01)  {A_SendOrder(Enum_Buy,Enum_Entry,BuyLotsz01-buycc,Q_AskPrice+3*chajia);SetGlobalVar(44,SystemDateTime);
                                   FileAppend("d:\\A"+Symbol+"_"+Text(CurrentDate)+".txt",DateTimeToString(SystemDateTime)+"多头"+Text(buycc)+"数据库多头"+text(BuyLotsz01)+"空头"+text(sellcc)+"数据库空头"+text(BuyLotsz02)+"多头错误2");
                                   return;}
                                   }
  if(strValuek_x=="x-1" and sellcc<>BuyLotsz02)
   {
                                   if(sellcc>BuyLotsz02) {A_SendOrder(Enum_Buy,Enum_Exit,sellcc-BuyLotsz02,Q_AskPrice+3*chajia);SetGlobalVar(44,SystemDateTime);
                                   FileAppend("d:\\A"+Symbol+"_"+Text(CurrentDate)+".txt",DateTimeToString(SystemDateTime)+"多头"+Text(buycc)+"数据库多头"+text(BuyLotsz01)+"空头"+text(sellcc)+"数据库空头"+text(BuyLotsz02)+"空头错误1");
                                   return;}
                                   if(sellcc<BuyLotsz02) {A_SendOrder(Enum_Sell,Enum_Entry,BuyLotsz02-sellcc,Q_BidPrice-3*chajia);SetGlobalVar(44,SystemDateTime);
                                   FileAppend("d:\\A"+Symbol+"_"+Text(CurrentDate)+".txt",DateTimeToString(SystemDateTime)+"多头"+Text(buycc)+"数据库多头"+text(BuyLotsz01)+"空头"+text(sellcc)+"数据库空头"+text(BuyLotsz02)+"空头错误2");
                                   return;}
                                   }
  if(strValued_x=="xdt" and buycc<>0)    {A_SendOrder(Enum_Sell,Enum_Exit,buycc,Q_BidPrice-3*chajia);SetGlobalVar(44,SystemDateTime);return;}
  if(strValuek_x=="xkt" and sellcc<>0)   {A_SendOrder(Enum_Buy,Enum_Exit,sellcc,Q_AskPrice+3*chajia);SetGlobalVar(44,SystemDateTime);return;}
                   }
if((strValued_x=="x+1" and buycc<>BuyLotsz01) or (strValuek_x=="x-1" and sellcc<>BuyLotsz02) or (strValued_x=="xdt" and buycc<>0) or (strValuek_x=="xkt" and sellcc<>0)) {
                   FileAppend("d:\\A"+Symbol+"_"+Text(CurrentDate)+".txt",DateTimeToString(SystemDateTime)+"多头"+Text(buycc)+"数据库多头"+text(BuyLotsz01)+"空头"+text(sellcc)+"数据库空头"+text(BuyLotsz02)+"错误返回");
                                   return;}

//记录一下,到底是什么东西错误。下午测了30分钟也没有发现问题,毕竟好像3天左右出现一次。

uniwin 发表于 2016-1-29 19:23:12

本帖最后由 uniwin 于 2016-1-29 21:54 编辑

TB 版本 5257 32 位。同时交易10个品种。碰到好几次JD1605空头有持仓,然后数据库键值会莫名清0。 而其它品种,以及多头持仓好象没发现类似问题。

fqxing95 发表于 2016-1-29 21:07:17

uniwin 发表于 2016-1-29 19:23 static/image/common/back.gif
同时交易10个品种。碰到好几次JD1605空头有持仓,然后数据库键值会莫名清0。 而其它品种,以及多头持仓好象 ...

最近两次也是空头,前面有点忘记了有没有多头出问题。

fqxing95 发表于 2016-2-1 11:37:53

本帖最后由 fqxing95 于 2016-2-1 17:17 编辑

通过输出信息分析,发现我自己读写数据库错误,数据库错误是平仓后数据库持仓数据没有清零。但是判断数据库持仓时前面还有加一个条件判断,而再次交易时,数据库是必须重新写的,好像也不至于造成和实际持仓不符的情况,再观察看看。。。

zxjt10224500 发表于 2016-2-24 09:25:53

今天测试发现,数据库错误和机器运行速度有一定关系,高内存,将内存虚拟成磁盘,然后将tb安装进去,错误率降低很多,但还不能完全不出错。

luyuan126 发表于 2017-4-13 07:25:41

fqxing95 发表于 2016-1-26 00:47 static/image/common/back.gif
这样问吧:账户实际有持仓,函数A_BuyPosition、A_SellPosition在什么情况下返回值为0 ...

个人卓见:持仓是读取的交易所的数据,网络的原因,丢包引起的

luyuan126 发表于 2017-4-13 07:28:25

网络丢包引起的:)

hupnos 发表于 2017-6-26 10:15:54

请问频繁读数据库数据发生的读出数据错误后来解决了吗?各位前辈是怎么处理这个问题的?前些天突然就错误把我仓位平掉了,太可怕了!!
页: 1 2 3 [4] 5
查看完整版本: tb数据库读写bug