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


金字塔客服中心 - 专业程序化交易软件提供商金字塔软件高级功能研发区 → 自定义函数返回的数据在指标显示不对,请帮忙看一下

   

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


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

主题:自定义函数返回的数据在指标显示不对,请帮忙看一下

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


加好友 发短信
等级:新手上路 帖子:4 积分:0 威望:0 精华:0 注册:2013/8/6 10:35:41
自定义函数返回的数据在指标显示不对,请帮忙看一下  发帖心情 Post By:2013/8/6 12:55:00 [只看该作者]

各位老大们,我是金字塔的使用新手,现遇到一个问题,我写了一个自定义函数计算某只股票的涨跌幅,然后想把它当做一个指标来显示,函数计算的值是正确的(我把结果写到文件看了一下,没问题),但是在附图上的显示明显不对,不知道为啥,哪位大神指点一下。一下是自定义函数和公式的代码:

 

Function ZHZDF(Formula)
    '系统会在逐K线模式解释公式时的每个周期都会调用此函数一遍,因此设计时应该注重程序的执行效率,不要重复的执行一些没必要的代码
    ZHZDF=0
   
    dim fsObj
    dim file
    dim History
    dim DataCount
    dim LastClose
   
    Set fsObj = CreateObject("Scripting.FileSystemObject")
 Set file = fsObj.CreateTextFile("c:\test.txt", True)

    Set History =  marketdata.GetHistoryData("600036","SH",0)
    DataCount=History.Count
   
    Dim Result
    Redim Result(DataCount)
   
    For i=0 to DataCount-1
     if i=0 then
      LastClose=History.Close(i)
      Result(i)=0
     else
      if DATEDIFF("d",History.Date(i-1),History.Date(i))>=1 then
       LastClose=History.Close(i-1)
      end if
      Result(i)=(History.Close(i) - LastClose) / LastClose * 100
     end if  
     file.WriteLine ("时间:" & History.Date(i) & "     昨收:" & LastClose  & "     收价:" & History.Close(i) & "     涨跌:" & Result(i) )
    Next
   
    file.Close
   
 ZHZDF=Result
 
End Function

 

公式:MA1:ZHZDF();

 

附上截图和日志
此主题相关图片如下:pic.jpg
按此在新窗口浏览图片
,从图上看涨跌幅大部分是负数,和日志文件不一样

 

 


 下载信息  [文件大小:   下载次数: ]
点击浏览该文件:test.txt


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


加好友 发短信
等级:新手上路 帖子:4 积分:0 威望:0 精华:0 注册:2013/8/6 10:35:41
  发帖心情 Post By:2013/8/6 14:27:39 [只看该作者]

有没有神飘过呀,在线等图片点击可在新窗口打开查看

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


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

你观察太不仔细了,金字塔K线图上的涨跌就只是简单的这根K线跟上根K线的幅度比较,你的代码好像是不是这么处理的


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

金字塔-技术部

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

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

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


加好友 发短信
等级:新手上路 帖子:4 积分:0 威望:0 精华:0 注册:2013/8/6 10:35:41
  发帖心情 Post By:2013/8/6 15:09:09 [只看该作者]

大神终于现身了,太感谢了。其实我的问题不是具体哪根K线跟哪根K线比的问题,我关注的问题是为啥自定义函数中返回的数组怎么样才能在副图中显示正确,根据日志文件中的数据和副图曲线中数字的对比,明显不一样。怎么样才能解决?

[此贴子已经被作者于2013/8/6 15:10:03编辑过]

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


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

没看懂你的意图,你指的是自定义函数返回的数据在图形上显示的跟你写在文本中的不一致?


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

金字塔-技术部

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

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

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


加好友 发短信
等级:新手上路 帖子:4 积分:0 威望:0 精华:0 注册:2013/8/6 10:35:41
  发帖心情 Post By:2013/8/8 15:13:26 [只看该作者]

和写的文本不一致,文本的数据是对的


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


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

你的问题应该是数据的取值范围导致的,你的代码

 

    Set History =  marketdata.GetHistoryData("600036","SH",0)

这样表示的是从硬盘中读取数据,这样会导致从硬盘读取的数据跟你图表显示的在数据的起始时间是没法对齐的,如果你希望是按照你图表显示的完全对齐,那么你应该使用图表上的数据运算而不应该从硬盘读取。

 

    Set Grid = Formula.ParentGrid

    Set History =  Grid.GetHistoryData


 回到顶部