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


金字塔客服中心 - 专业程序化交易软件提供商金字塔软件高级功能研发区 → 关于VB编程的两个问题

   

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


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

主题:关于VB编程的两个问题

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


加好友 发短信
等级:黑侠 帖子:791 积分:856 威望:0 精华:0 注册:2011/11/16 23:34:34
关于VB编程的两个问题  发帖心情 Post By:2014/5/18 17:07:54 [只看该作者]

1。用金字塔的图表交易,如果设定每秒轮询一次,但是执行的程序用时超过一秒会出现怎么情况, 具体例子,10:00:00的时候, 第一次轮询,但是执行的程序10:00:02秒的时候还没结束, 还在执行,那么10:00:01秒的时候,系统还会重新激发一次程序吗? 金字塔用多线程来执行吗? 线程之间会共享什么资源? 金字塔的图表交易是 线程安全的吗(thread safe)
2。用金字塔的VB后台交易,一定要有窗体吗? 能够解释一下,后台交易和当前展示的图表有联系吗?比如,我可以打开一个品种的日线图,但是交易另外一个品种的5分钟K线吗 (只是一个虚构的例子)
[此贴子已经被作者于2014/5/18 17:08:35编辑过]

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


加好友 发短信
等级:管理员 帖子:7302 积分:32559 威望:1000 精华:45 注册:2003/12/30 16:34:32
  发帖心情 Post By:2014/5/18 18:55:11 [只看该作者]

图表交易是排队执行触发,即如果图表数据若未计算完毕,则会影响到分笔数据的接收处理。如果你的公式计算复杂不能在下一个分笔数据到来,会导致软件K住,如果长时间这样,整个软件会卡住并且死机。

后台程序化逻辑跟图表不一样,是异步进行的,如果上一笔未计算完毕,那么会丢掉下一笔的分笔数据处理。保证分笔数据的接收与后台程序异步进行,就算是后台程序化无论多复杂,也不会导致软件卡死。

 

VBA的交易与图表和后台是没有关系的,无法与他们联系在一起,VBA是个独立的工作模块


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


加好友 发短信
等级:新手上路 帖子:27 积分:116 威望:0 精华:0 注册:2012/2/26 19:34:07
  发帖心情 Post By:2014/5/19 21:24:06 [只看该作者]

以下是引用admin在2014/5/18 18:55:11的发言:

图表交易是排队执行触发,即如果图表数据若未计算完毕,则会影响到分笔数据的接收处理。如果你的公式计算复杂不能在下一个分笔数据到来,会导致软件K住,如果长时间这样,整个软件会卡住并且死机。

后台程序化逻辑跟图表不一样,是异步进行的,如果上一笔未计算完毕,那么会丢掉下一笔的分笔数据处理。保证分笔数据的接收与后台程序异步进行,就算是后台程序化无论多复杂,也不会导致软件卡死。

 

VBA的交易与图表和后台是没有关系的,无法与他们联系在一起,VBA是个独立的工作模块

 

如果VBA和图表/后台完全没有关系,但是在自定义的函数例子里面,如果自定义了一个

Function CU_MA1(Formula,CLOSE,Cyc)

公式系统就可以直接引用 MA1:CU_MA1(CLOSE,5);

 

后台交易的时候,下单以后无法知道订单号码(orderId), 这样的话可不可以建一个自定义函数,比如:

 


Function QT_BUY(Formula,Type,Vol,Price,StoplmtPrice,Code,Market,AccountID,Valid)
    QT_BUY=0
    QT_BUY=Buy(Type,Vol,Price,StoplmtPrice,Code,Market,AccountID,Valid)

End Function

 

然后在公式系统里面直接调用QT_BUY去获得orderId呢?

 

如果以上方法不可以,那么在后台交易里面,怎么样才能获得刚下的订单号码

谢谢


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


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

你的做法是可以的,即使用VBA自己去处理下单动作。

但是你返回了订单ID后,后台程序也无法去处理的,建议你还要在VBA中处理下单回报信息,确认订单是否成交,然后再使用VBA撤单函数撤单



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

金字塔-技术部

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

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

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


加好友 发短信
等级:新手上路 帖子:27 积分:116 威望:0 精华:0 注册:2012/2/26 19:34:07
  发帖心情 Post By:2014/5/20 7:41:24 [只看该作者]

谢谢回复, 

有一个Order对象的问题, Order.buy(..), Order.sell(..), Order.BuyShort(...), Order.sellShort() 这几个方法, 是thread safe的吗? 

比如上面我写的这个自定义函数, 怎么样才能保证同一时间, 只有一个线程去调用这个函数? 因为里面准备对未处理的单子处理去解决重复下单的问题, 或者怎么样才能避免重复下单呢? 你有什么建议?

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


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

是thread safe的,金字塔已经内部做过线程同步处理


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

金字塔-技术部

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

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

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


加好友 发短信
等级:新手上路 帖子:27 积分:116 威望:0 精华:0 注册:2012/2/26 19:34:07
  发帖心情 Post By:2014/5/20 11:07:08 [只看该作者]

谢谢, 请问, 我怎么样才能对VB的自定义函数做线程的同步处理?

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


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

这个是不需要你来做的,你就尽管放心使用即可


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

金字塔-技术部

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

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

Email:service@weistock.com
 回到顶部