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


金字塔客服中心 - 专业程序化交易软件提供商金字塔软件高级功能研发区 → 请问,VBS如何得知发生断网或服务器断线的情况?

   

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


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

主题:请问,VBS如何得知发生断网或服务器断线的情况?

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


加好友 发短信
等级:新手上路 帖子:28 积分:0 威望:0 精华:0 注册:2016/8/3 23:19:09
请问,VBS如何得知发生断网或服务器断线的情况?  发帖心情 Post By:2016/8/24 19:12:27 [只看该作者]

请问,VBS如何得知发生断网或服务器断线的情况?
发生断网或服务器断线时,金字塔软件立刻就会得知情况并报警重新连接网络,那么我的在里面编写的VBS程序如何能收到发生断网或服务器断线的消息?从而做出相应的操作。

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


加好友 发短信
等级:超级版主 帖子:21598 积分:0 威望:0 精华:1 注册:2010/7/31 16:35:30
  发帖心情 Post By:2016/8/25 9:13:38 [只看该作者]

这个没法做的,都断网了你让软件怎么发出信号呢,何况重新连接这个。。。

方便的话你直接配合我们的手机监控助手就行了,里面可以直接去监控行情,还有交易账户是否异常

如果出现状况手机端马上就能收到警报


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


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

 

vba 的Order对象中的 事件同样能收到账户的连接以及断线消息的,我们VBA的教程中没有写,后面会补上

 

Connected       表示连接成功
Disconnected   表示连接失败

 

相关范例

Sub ORDER_OrderStatusEx2(OrderID, Status, Filled, Remaining, Price, Code, Market, OrderType, Aspect, Kaiping, Account, AccountType)
 Application.MsgOut status
End Sub



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

金字塔-技术部

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

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

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


加好友 发短信
等级:新手上路 帖子:28 积分:0 威望:0 精华:0 注册:2016/8/3 23:19:09
  发帖心情 Post By:2016/8/25 15:52:06 [只看该作者]

谢谢!
那么,比如网络中断了十几分钟,恢复后,金字塔就会很快的自动下载并显示出来这缺失的十几根K线(假设正打开的是某品种1分钟K线图)。

 我想问的是,如果我用Call MarketData.RegReportNotify("RB10","SQ")注册了一个品种,网络恢复时,当我在Sub MarketData_ReportNotify(ReportData)事件中,收到第一个Tick时,此时缺失的十几根K线的数据金字塔是否已经补充好了?
也就是说,金字塔是先补充缺失的数据,再发出第一个Tick,还是,补数据和发Tick是两个独立的线程,时间上没有先后关系?

之所以问这个问题,是因为我自己的代码维护K线的话,新收到第一个Tick,就认为网络恢复了,这时我会用marketdata.GetHistoryData()或者 Grid.GetHistoryData() 方法读取这缺失的十几根K线,而此时如果金字塔K线数据还没有补好,那我读回来的数据也就有问题。

另外,marketdata.GetHistoryData()或者 Grid.GetHistoryData()哪一个执行快一些?高级教程上说marketdata.GetHistoryData()是读取本地硬盘的数据,如果我只要缺失的十几根K线,还要等金字塔存了盘后,我才从盘里读出来,岂不是很慢?
<!--[if !supportLineBreakNewLine]-->
<!--[endif]-->

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


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

断网重连后,是很快就会下载缺失的K线,但是你必须是品种已经加载到图表上的品种才可以,金字塔虽然是全推数据,但是是全推即时数据,历史数据还是需要点播的。没有在图表上加载的品种是不会自动补充缺失数据的。

是先接收到最新一笔的TICK报价,补充数据是随后另外的线程补充的,这个过程视你的缺失数据多少而不同。

 

不清楚你为何非要自己维护K线,如果你希望有个稳定的网络质量,家庭网络这种肯定是不靠谱的,建议你租用云服务器



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

金字塔-技术部

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

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

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


加好友 发短信
等级:新手上路 帖子:28 积分:0 威望:0 精华:0 注册:2016/8/3 23:19:09
  发帖心情 Post By:2016/8/25 16:27:43 [只看该作者]

“”云服务器“”我在调研一下。。。

我是想用VBS实现自己的策略,那么策略计算就需要正确的K线数据。读金字塔的K线当然可以,可是marketdata.GetHistoryData()或者 Grid.GetHistoryData()执行起来是不是会都太慢?我不知道。我自己逐个Tick去维护K线当然是最实时最快的。可是,断线恢复后,历史的十几根缺失的K线数据就只好从金字塔中读取,这是,上面的问题就来了。

我看到,application.PostMessage(),有个:查看菜单->刷新    编号是:32883。我是否可以先执行一个这个,强制金字塔刷新一下再读取?

或者我看到Grid对象有个ReInitData 方法:重新初始化数据,再配合上Frame的CalcDataed 事件:当窗格计算完毕数据后发生。然后用 Grid.GetHistoryData()读取,可行吗?


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


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

当然是Grid.GetHistoryData()更快一些,因为这是从图表上直接读取已经加载计算过的数据,marketdata.GetHistoryData() 这个还需要从新从硬盘加载。作为程序员你应该懂得哦。

不建议你自己维护数据,你就是再怎么快,也没有金字塔直接帮你计算好快的



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

金字塔-技术部

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

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

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


加好友 发短信
等级:新手上路 帖子:28 积分:0 威望:0 精华:0 注册:2016/8/3 23:19:09
  发帖心情 Post By:2016/8/26 13:41:11 [只看该作者]

好的。
那就直接从Grid里读取吧。

我试了下,当一个Tick来到时, Sub MarketData_ReportNotify事件、Sub Technic_CalcData(Grid, DataCount)事件和Sub Technic_CalcDataed(Grid)事件的发生顺序。发现是:
第一: Sub MarketData_ReportNotify事件
第二: Sub Technic_CalcData(Grid, DataCount)
第三:Sub Technic_CalcDataed(Grid)事件
由此不难推测,如果发生服务器或者网络故障,数据缺失后,当故障恢复时,新Tick的事件会先于数据补充动作。

那么,我想,对于很多使用图表自动化交易,或者后台自动化交易的人,也许会发生:新Tick导致交易动作,而后续补充的数据回来后,又发现这个交易信号是错误的。
建议金字塔考虑下这个漏洞,毕竟短时的断网和断服务器的情况,对于一般交易者,还是较易发生的。可以设个选项:新数据补齐后再发生新的Tick事件。

 回到顶部