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


金字塔客服中心 - 专业程序化交易软件提供商金字塔软件高级功能研发区 → vba数学函数

   

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


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

主题:vba数学函数

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


加好友 发短信
等级:论坛游侠 帖子:144 积分:0 威望:0 精华:0 注册:2016/10/29 1:47:53
vba数学函数  发帖心情 Post By:2017/3/15 9:43:33 [只看该作者]

请问用vba编程计算两个商品相关性要怎么做?在vba编程信息里没有找到相关函数是不是要自己定义还是可以调用金字塔函数?

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


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

Array 对象

 

 

Alike        计算该数组与其他Array对象之间的相似系数,例如Alike(ar)表示求与ar数组对象之间的相似度

Releate      计算该数组与其他Array对象之间的相关系数



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

金字塔-技术部

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

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

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


加好友 发短信
等级:论坛游侠 帖子:144 积分:0 威望:0 精华:0 注册:2016/10/29 1:47:53
  发帖心情 Post By:2017/3/16 10:54:01 [只看该作者]

Sub TLStart1()
  call marketdata.RegReportNotify("P05","DQ")
  call marketdata.RegReportNotify("Y05","DQ")
End Sub

Sub MARKETDATA_ReportNotify(ReportData)
  Set Report1 = marketdata.GetReportData("P05","DQ")
  Set Report2 = marketdata.GetReportData("Y05","DQ")
    Set histroydata1 = MarketData.GetHistoryData("P05","DQ",0)
    Set histroydata2 = MarketData.GetHistoryData("Y05","DQ",0)

    Dim data 
    Set data = CreateObject("Stock.Array")
        For i =0 to 149
        data.AddBack(histroydata1.Close(histroydata1.count-i))
        next
        if data.count>150 then
        ata.removeat(0)
    end if 

    Dim data1 
    Set data1 = CreateObject("Stock.Array")
        For i =0 to 149
        data1.AddBack(histroydata2.Close(histroydata2.count-i))
        next
        if data1.count>150 then
        data1.removeat(0)
    end if 

'相关性计算
corr = data.releate(data1)  
application.MsgOut  Cdate(time)& ",相关性:" & corr 



Set d1 = nothing '释放对象
Set d2 = nothing 

End Sub
    
请问为什么输出的相关性数值都是1呢?是不是这么计算是错误的

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


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

MarketData 对象

 

HistoryDataMode   历史数据处理处理模式 0默认值,GetHistoryData,GetHistoryDataByDate 方法取到的对象为共享模式;1为独立模式,打开不同品种可以分别处理各自的数据,数据处理完毕后要调用DestroyHistoryData方法销毁内存缓冲区.



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

金字塔-技术部

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

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

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


加好友 发短信
等级:论坛游侠 帖子:144 积分:0 威望:0 精华:0 注册:2016/10/29 1:47:53
  发帖心情 Post By:2017/3/16 11:03:56 [只看该作者]

明白了,还有一个问题,就是数组元素如何监控?用application.msgout data(0)输出显示对象不支持

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


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

GetAt        取数组指定位置的数据

SetAt        设置数组指定位置的数据



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

金字塔-技术部

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

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

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


加好友 发短信
等级:论坛游侠 帖子:144 积分:0 威望:0 精华:0 注册:2016/10/29 1:47:53
  发帖心情 Post By:2017/3/16 13:39:26 [只看该作者]


Sub TLStart1()
  call marketdata.RegReportNotify("P05","DQ")
  call marketdata.RegReportNotify("Y05","DQ")
End Sub

Sub TLStart1()
  call marketdata.RegReportNotify("P05","DQ")
  call marketdata.RegReportNotify("Y05","DQ")
End Sub

Sub MARKETDATA_ReportNotify(ReportData)
  Set Report1 = marketdata.GetReportData("P05","DQ")
  Set Report2 = marketdata.GetReportData("Y05","DQ")
 
  marketdata.HistoryDataMode=1'不同品种为独立的缓冲区
 
    Set histroydata1 = MarketData.GetHistoryData("P05","DQ",0)
    Set histroydata2 = MarketData.GetHistoryData("Y05","DQ",0)
    

    Dim data 
    Set data = CreateObject("Stock.Array")
        For i =0 to 149
        data.AddBack(histroydata1.Close(histroydata1.count-i))
        next
        if data.count>150 then
        data.removeat(0)
    end if 

    Dim data1 
    Set data1 = CreateObject("Stock.Array")
        For i =0 to 149
        data1.AddBack(histroydata2.Close(histroydata2.count-i))
        next
        if data1.count>150 then
        data1.removeat(0)
    end if 
    

marketdata.DestroyHistoryData'清理缓冲区
 
'相关性计算
corr = data.releate(data1)
cc = data.getat(1)  
application.MsgOut  Cdate(time)& ",相关性:" & corr & ",data(1):" & cc & ",data1(1):" & data1.getat(1)

Set d1 = nothing '释放对象
Set d2 = nothing 

End Sub
    
为什么根据您的建议改完之后相关性计算还是错误的呢?
图片点击可在新窗口打开查看此主题相关图片如下:cm8viux`4l`z)x5o0l97uw.png
图片点击可在新窗口打开查看

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


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

建议你调试一下2个数组的数据内容是不是有问题,此外如果你觉得确实是计算错误,那么正确的应该是多少?


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

金字塔-技术部

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

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

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


加好友 发短信
等级:论坛游侠 帖子:144 积分:0 威望:0 精华:0 注册:2016/10/29 1:47:53
  发帖心情 Post By:2017/3/16 14:58:29 [只看该作者]


1.输出数组data三个元素发现返回的数值没有错误
相关性:RELATE(C1,C2,CORR_len); 
这是用pel语言写的,然后输出到TXT文档。数据已经补充完整,得到的数值是0.7左右

2.请问VB是否有类似pel语言的ref函数可以回溯前值,不然很多计算的东西需要保存的时候不是要创建多个数组?还有,可否直接调用在金字塔图表计算的公式数值或者Excel的数据

3.cross语句在VB里面有什么比较简单的判断方法?

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


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

1, 你要看数据是否完全一致的? 估计你遇到的问题是图表上加载的数据量与你碰到的不一致,CORR_len 这个很重要。

2,用for

3,for里自己做



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

金字塔-技术部

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

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

Email:service@weistock.com
 回到顶部
总数 13 1 2 下一页