欢迎使用金字塔普通技术服务论坛,您可以在相关区域发表技术支持贴。
我司技术服务人员将优先处理 VIP客服论坛 服务贴,普通区问题处理速度慢,请耐心等待。谢谢您对我们的支持与理解。


金字塔客服中心 - 专业程序化交易软件提供商金字塔软件高级功能研发区 → [求助]帐户掉线重新登录导致持仓函数出错的问题~

   

欢迎使用金字塔普通技术服务论坛,您可以在相关区域发表技术支持贴。
我司技术服务人员将优先处理 VIP客服论坛 服务贴,普通区问题处理速度慢,请耐心等待。谢谢您对我们的支持与理解。    


  共有5005人关注过本帖树形打印复制链接

主题:[求助]帐户掉线重新登录导致持仓函数出错的问题~

帅哥哟,离线,有人找我吗?
bbking
  1楼 | 信息 | 搜索 | 邮箱 | 主页 | UC


加好友 发短信
等级:小飞侠 帖子:1609 积分:4924 威望:0 精华:0 注册:2010/10/28 14:02:46
[求助]帐户掉线重新登录导致持仓函数出错的问题~  发帖心情 Post By:2012/9/3 14:34:43 [只看该作者]

我用VBA监控某帐户的实际持仓的时候~

经常有帐户掉线重连后持仓返回出错的问题~

实盘中帐户掉线重连是个小概率事件~(比如说出金后金字塔显示交易成功~你点确定然后帐户就自动掉线重连)

但是还是需要考虑到这种情况~

 

Sub Application_VBAStart()
    Call Application.SetTimer(0,500)      '设置一个0号计时器
End Sub

 

Sub Application_Timer(ID)
dim acfl
acfl="800052"'跟踪帐户

 

call Document.SetExtData("ACFL1_isac1",order.IsAccount(acfl))'这个是跟踪帐户

    If ID=0 and order.IsAccount(acfl) then
call Order.HoldingInfoByCode2("if09","zj",BuyHolding,BuyCost,BuyTodayHolding,SellHolding,SellCost,SellTodayHolding,PNL,UseMargin,acfl)
call Document.SetExtData("ACFL1_thold_if",BuyHolding-SellHolding)

 

    end if
End Sub

 

 

====================

以上代码在帐户800052登录的状态下把IF09上的持仓导出为一个外生全局变量~

但是会出现这种情况~

如果800052帐户持有1手IF09多单~然后退出帐户~

这时候ACFL1_thold_if返回的还是1手多单没错~

重连后~按道理ACFL1_thold_if不会变成0~而应该还是直接为1~

但是我用后台监控这个全局变量~

在800052这个帐户登录后ACFL1_thold_if这个全局变量会自动初始化一次~

先变成0然后变成1~

我想问一下金字塔的设计师这是为什么?

因为这个变动~我的另外一个帐户会多出一次开平操作...

[此贴子已经被作者于2012-9-3 14:40:19编辑过]

 回到顶部
帅哥哟,离线,有人找我吗?
bbking
  2楼 | 信息 | 搜索 | 邮箱 | 主页 | UC


加好友 发短信
等级:小飞侠 帖子:1609 积分:4924 威望:0 精华:0 注册:2010/10/28 14:02:46
  发帖心情 Post By:2012/9/3 14:52:59 [只看该作者]

我以为是帐户重连后持仓暂时刷新不出来~先会显示帐户登录

然后帐户持仓再显示出来~中间可能差个几秒

于是我用后台监控里写上一段~

800052帐户掉线重连后先sleep 20秒~

然后再记录ACFL1_thold_if这个全局变量

谁知道~ACFL1_thold_if在20秒后还是先变成0再变成1~

请问一下这是怎么回事?


 回到顶部
帅哥哟,离线,有人找我吗?
王锋
  3楼 | 信息 | 搜索 | 邮箱 | 主页 | UC


加好友 发短信
等级:罗宾汉 帖子:11808 积分:20695 威望:0 精华:10 注册:2009/8/18 8:15:13
  发帖心情 Post By:2012/9/3 15:06:34 [只看该作者]

使用2.93版,

Account2 方法

 

返回255表示当前是无效状态



金字塔—专业程序化软件提供商

金字塔-技术部

-----------------------------------------------------------------------------------------------------

工作时间:周一至周五 08:30 - 17:30   周末及法定节假日休息

Email:service@weistock.com
 回到顶部
帅哥哟,离线,有人找我吗?
rushtaotao
  4楼 | 信息 | 搜索 | 邮箱 | 主页 | UC


加好友 发短信 czt
等级:蜘蛛侠 帖子:1445 积分:6114 威望:0 精华:3 注册:2012/1/16 10:31:19
  发帖心情 Post By:2012/9/3 15:16:29 [只看该作者]

那你断线之后全局变量里面的值有变化吗?我测了一下 我的全局变量里面没有变化

 回到顶部
帅哥哟,离线,有人找我吗?
bbking
  5楼 | 信息 | 搜索 | 邮箱 | 主页 | UC


加好友 发短信
等级:小飞侠 帖子:1609 积分:4924 威望:0 精华:0 注册:2010/10/28 14:02:46
  发帖心情 Post By:2012/9/3 15:45:32 [只看该作者]

以下是引用rushtaotao在2012-9-3 15:16:29的发言:
那你断线之后全局变量里面的值有变化吗?我测了一下 我的全局变量里面没有变化

 

 


2012-09-03 15:43:37.936    跟踪帐户真实持仓=6.00000
2012-09-03 15:43:38.927    =======
2012-09-03 15:43:38.928    跟踪帐户真实持仓=6.00000
2012-09-03 15:43:39.948    =======
2012-09-03 15:43:39.949    跟踪帐户真实持仓=0.00000
2012-09-03 15:43:40.962    =======
2012-09-03 15:43:40.963    跟踪帐户真实持仓=0.00000
2012-09-03 15:43:41.969    =======
2012-09-03 15:43:41.970    跟踪帐户真实持仓=6.00000
2012-09-03 15:43:42.995    =======
2012-09-03 15:43:42.996    跟踪帐户真实持仓=6.00000
2012-09-03 15:43:44.004    =======
2012-09-03 15:43:44.005    跟踪帐户真实持仓=6.00000
2012-09-03 15:43:45.022    =======
2012-09-03 15:43:45.023    跟踪帐户真实持仓=6.00000
2012-09-03 15:43:46.030    =======

 

 

==============================

 

FILEPATH:='C:\debug\t3.TXT'; DEBUGFILE(FILEPATH,'=======',0);
DEBUGFILE(FILEPATH,'跟踪帐户真实持仓=%.5f',extgbdata('ACFL1_thold_if'));


 

 

用这个代码再监控一下

不间断监控(无论有无新行情...)

先手动退出那个目标帐户~再然后登录

我监控的结果是全局变量会变成0再变成6

 

我断线后全局变量是没有变化的

是重新登录之后全局变量会先变成0再变成6...

为什么他会先变成0~我一直搞不清这个问题~所以才发帖

[此贴子已经被作者于2012-9-3 15:46:32编辑过]

 回到顶部
帅哥哟,离线,有人找我吗?
bbking
  6楼 | 信息 | 搜索 | 邮箱 | 主页 | UC


加好友 发短信
等级:小飞侠 帖子:1609 积分:4924 威望:0 精华:0 注册:2010/10/28 14:02:46
怎么优化应用公式的指标参数???  发帖心情 Post By:2012/9/3 15:52:40 [只看该作者]

以下是引用王锋在2012-9-3 15:06:34的发言:

使用2.93版,

Account2 方法

 

返回255表示当前是无效状态

 

我这里不是有个order.IsAccount来防止帐户掉线吗?

干嘛还要用那个Account2返回225呢?

 

我是不明白为什么帐户重连后那个全局变量会先变成0再变成真实持仓~

能否帮我调试一下?

我非常确定不是我某段代码写错了...

 

我用的是2.93版

[此贴子已经被作者于2012-9-3 15:57:01编辑过]

 回到顶部
帅哥哟,离线,有人找我吗?
bbking
  7楼 | 信息 | 搜索 | 邮箱 | 主页 | UC


加好友 发短信
等级:小飞侠 帖子:1609 积分:4924 威望:0 精华:0 注册:2010/10/28 14:02:46
  发帖心情 Post By:2012/9/3 16:02:05 [只看该作者]

以下是引用王锋在2012-9-3 15:06:34的发言:

使用2.93版,

Account2 方法

 

返回255表示当前是无效状态

 

   If ID=0 and order.Account2(2,acfl)<255 then

 

我改成这样的确没出现全局变量变成0的情况了~

明天交易时间我再测试一下...

谢谢啦


 回到顶部
帅哥哟,离线,有人找我吗?
rushtaotao
  8楼 | 信息 | 搜索 | 邮箱 | 主页 | UC


加好友 发短信 czt
等级:蜘蛛侠 帖子:1445 积分:6114 威望:0 精华:3 注册:2012/1/16 10:31:19
  发帖心情 Post By:2012/9/3 16:16:56 [只看该作者]

问题正在处理

 回到顶部
帅哥哟,离线,有人找我吗?
rushtaotao
  9楼 | 信息 | 搜索 | 邮箱 | 主页 | UC


加好友 发短信 czt
等级:蜘蛛侠 帖子:1445 积分:6114 威望:0 精华:3 注册:2012/1/16 10:31:19
  发帖心情 Post By:2012/9/3 16:18:44 [只看该作者]

Sub Application_VBAStart()
    Call Application.SetTimer(0,500)      '设置一个0号计时器
End Sub

 

Sub Application_Timer(ID)
dim acfl
acfl="80008"'跟踪帐户

 

call Document.SetExtData("ACFL1_isac1",order.IsAccount(acfl))'这个是跟踪帐户


    If ID=0 and order.Account(2)<>"255" then
call Order.HoldingInfoByCode2("if09","zj",BuyHolding,BuyCost,BuyTodayHolding,SellHolding,SellCost,SellTodayHolding,PNL,UseMargin,acfl)
call Document.SetExtData("ACFL1_thold_if",BuyHolding-SellHolding)


    end if
End Sub

sub vbaend()
    call application.KillTimer(0)
end sub


 回到顶部
帅哥哟,离线,有人找我吗?
rushtaotao
  10楼 | 信息 | 搜索 | 邮箱 | 主页 | UC


加好友 发短信 czt
等级:蜘蛛侠 帖子:1445 积分:6114 威望:0 精华:3 注册:2012/1/16 10:31:19
金字塔数据导出问题  发帖心情 Post By:2012/9/3 16:19:03 [只看该作者]

代码改下 我这里测了 用上面的vba就没你那问题了

 


 回到顶部