设为首页收藏本站

 找回密码
 注册
查看: 18464|回复: 42

tb数据库读写bug [复制链接]

Rank: 1

精华
0
UID
205882
积分
11
帖子
9
主题
2
阅读权限
10
注册时间
2015-3-25
最后登录
2020-7-31
发表于 2016-1-13 15:24:50 |显示全部楼层
前提,用A程序写入数据库变量,频率很低,只有发生信号才会写,6个B程序读取A写入的数据库变量,B程序是tick出发读取,不写入。
发现绝大部分程序运行正常,但小概率事件会出现,其中5个B程序读取正常,1个B程序读取错误,这个错误并不是invalidstring类型,而是数据库别的某个变量值。这个数值正确与否比较难判断。
很闹心,万一读错了,造成大量开仓和平仓是件非常可怕的事情。希望tb能解决上述数据库读写bug。

Rank: 1

精华
0
UID
205882
积分
11
帖子
9
主题
2
阅读权限
10
注册时间
2015-3-25
最后登录
2020-7-31
发表于 2016-1-13 15:25:47 |显示全部楼层
补充一下:每个程序分别占用一个图表。

使用道具 举报

高级操盘手

「你若能信,在信之人,凡事皆能。」

Rank: 10Rank: 10Rank: 10

精华
0
UID
117005
积分
98544
帖子
1121
主题
14
阅读权限
200
注册时间
2013-3-18
最后登录
2022-10-29
发表于 2016-1-13 16:22:07 |显示全部楼层
是的,我也发现了,特别是读写的程序一多,就会出现读写错误,会读写到别的健名上,比如我这里有30个公式(A01—A30)每个TICK对数据库进行读写,30个公式分别读写同一个块名(Section)下30个不同键名(Key)下的值(Value),经常就会出现交叉写入跟交叉读取的情况,比如A01公式正常是读写键名A01下的值,却读到键名A05的值,写数据时写到键名A12下。这个情况发生的几率很低,只是偶尔会出现,原因不明,现在我暂时的处理就是在每个值后面加上一个编号标识,然后在公式里验证,防止错误。


不要因为众生的愚疑,而带来了自己的烦恼。

使用道具 举报

Rank: 1

精华
0
UID
205882
积分
11
帖子
9
主题
2
阅读权限
10
注册时间
2015-3-25
最后登录
2020-7-31
发表于 2016-1-13 16:28:29 |显示全部楼层
superwin 发表于 2016-1-13 16:22
是的,我也发现了,特别是读写的程序一多,就会出现读写错误,会读写到别的健名上,比如我这里有30个公式( ...

你说的确实是个不错的解决方案,我试试。

使用道具 举报

Rank: 6Rank: 6

精华
0
UID
14994
积分
2352
帖子
449
主题
54
阅读权限
70
注册时间
2010-7-31
最后登录
2021-12-26
发表于 2016-1-22 13:58:28 |显示全部楼层
我也发现读写数据库有问题,希望tb马上处理。

使用道具 举报

Rank: 6Rank: 6

精华
0
UID
14994
积分
2352
帖子
449
主题
54
阅读权限
70
注册时间
2010-7-31
最后登录
2021-12-26
发表于 2016-1-22 14:01:52 |显示全部楼层
if(xxxx==InvalidNumeric){return;}都无效。

使用道具 举报

Rank: 6Rank: 6

精华
0
UID
14994
积分
2352
帖子
449
主题
54
阅读权限
70
注册时间
2010-7-31
最后登录
2021-12-26
发表于 2016-1-22 14:24:49 |显示全部楼层
读写数据库有问题,我是这样发现的。我的目的是公式每5分钟检查一下数据库持仓和实际持仓(A_BuyPosition、A_SellPosition)的差别,以便按数据库持仓为准来调整实际持仓,因交易时间或其他原因会造成实际持仓和数据库持仓的不同步。
我当初以为是函数A_BuyPosition、A_SellPosition有问题,看来不是。后来我在读数据库持仓时,加入if(xxxx==InvalidNumeric){return;}也无法避免错误出现。也就是说,当我的数据库持仓和实际持仓相等时,程序也会做出调整持仓的动作(其实是错误的),而后又出现纠错的调整(这次是正确的)。这样就造成无谓的交易动作,损失手续费的同时,还有可能出现交易损失(当然有可能出现交易获利),非常郁闷,找不出具体问题根源,希望tb做出回应,如确实是读写数据库问题,请尽快纠正。

使用道具 举报

Rank: 6Rank: 6

精华
0
UID
14994
积分
2352
帖子
449
主题
54
阅读权限
70
注册时间
2010-7-31
最后登录
2021-12-26
发表于 2016-1-22 14:28:36 |显示全部楼层
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) {return;}
if(TimeDiff(GetGlobalVar(44),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);return;}
                                   if(buycc<BuyLotsz01)  {A_SendOrder(Enum_Buy,Enum_Entry,BuyLotsz01-buycc,Q_AskPrice+3*chajia);SetGlobalVar(44,SystemDateTime);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);return;}
                                   if(sellcc<BuyLotsz02) {A_SendOrder(Enum_Sell,Enum_Entry,BuyLotsz02-sellcc,Q_BidPrice-3*chajia);SetGlobalVar(44,SystemDateTime);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)) {return;}

使用道具 举报

Rank: 6Rank: 6

精华
0
UID
14994
积分
2352
帖子
449
主题
54
阅读权限
70
注册时间
2010-7-31
最后登录
2021-12-26
发表于 2016-1-22 14:32:32 |显示全部楼层
本帖最后由 fqxing95 于 2016-1-22 14:33 编辑

strValued_x=="x+1"-------多头有持仓
strValuek_x=="x-1"--------空头有持仓
BuyLotsz01-------数据库多头持仓数量
BuyLotsz02-------数据库空头持仓数量
strValued_x=="xdt"---------多头无持仓
strValuek_x=="xkt"---------空头无持仓

使用道具 举报

Rank: 6Rank: 6

精华
0
UID
14994
积分
2352
帖子
449
主题
54
阅读权限
70
注册时间
2010-7-31
最后登录
2021-12-26
发表于 2016-1-22 14:35:03 |显示全部楼层
以上读数据库出现问题,也没有什么规律,而是偶尔出现错误。

使用道具 举报

您需要登录后才可以回帖 登录 | 注册

bottom

静态版|手机版|联系我们|交易开拓者 ( 粤ICP备07044698   

GMT+8, 2024-3-28 22:38

Powered by Discuz! X2 LicensedChrome插件扩展

© 2011-2012 交易开拓者 Inc.

回顶部