以文本方式查看主题

-  金字塔客服中心 - 专业程序化交易软件提供商  (http://weistock.com/bbs/index.asp)
--  高级功能研发区  (http://weistock.com/bbs/list.asp?boardid=5)
----  请高手指点  (http://weistock.com/bbs/dispbbs.asp?boardid=5&id=3052)

--  作者:fly
--  发布时间:2010/9/30 11:08:38
--  请高手指点

在function里面我有一个class。
这个class里面我有一个property是计算盈亏的。
 
 

public Property Get mktPNL
  
      Set ReportClass = marketdata.GetReportData( code, exchange )
      application.MsgOut ( time &",function,mktPNL," & code & "," & exchange )

      if qty > 0 then
           mktPNL = qty * ( ReportClass.BuyPrice1 - entryPrice ) * 10
      else
           mktPNL = qty * ( ReportClass.SellPrice1 - entryPrice ) * 10
      end if

 end Property

 

为什么有时候,是有时候,不是每次。他会告诉我。
object required, reportclass
在mktPNL = qty * ( ReportClass.BuyPrice1 - entryPrice ) * 10那行

是不是在function里面我不能用

Set ReportClass = marketdata.GetReportData( code, exchange )

还是有别的什么问题

请高手指点


[此贴子已经被作者于2010-9-30 11:09:10编辑过]

--  作者:wattwei
--  发布时间:2010/9/30 12:34:24
--  
可以这样用,应该不是这里的问题。
加语句
      On Error Resume Next
      if qty > 0 then
           mktPNL = qty * ( ReportClass.BuyPrice1 - entryPrice ) * 10
      else
           mktPNL = qty * ( ReportClass.SellPrice1 - entryPrice ) * 10
      end if

      If Err.Number<>0 Then
            msgbox TypeName(ReportClass)
      End If
捕捉下错误原因,


--  作者:fly
--  发布时间:2010/9/30 12:55:32
--  
同样的价格,在报一次就被filled。很奇怪
--  作者:admin
--  发布时间:2010/9/30 16:23:07
--  

Set ReportClass = marketdata.GetReportData( code, exchange )

 

这种情况,说明你的code和exchange有问题了,没有正常取到行情报价

建议你仔细检查你的代码,在调用mktPNL属性时,务必检查code,exchange是正确的


--  作者:martingale
--  发布时间:2010/10/10 2:40:21
--  
 typename(ReportClass) 返回的是 Nothing
说明什么?我的code 和exchange msgout 显示没有错误。
这个问题不是每一次都发生,偶尔有发生。

奇怪

--  作者:admin
--  发布时间:2010/10/10 8:15:44
--  

请确认是否是在系统启动或者某些初始化时出现的,如果是这样,就采取一些措施,等系统准备完成后再来运行VBS代码。


--  作者:admin
--  发布时间:2010/10/22 16:20:19
--  

代码中加上对象有效性判断,这样就健壮多了

if Report1 is NoThing Then
    Exit Sub
  End if