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


金字塔客服中心 - 专业程序化交易软件提供商金字塔软件高级功能研发区 → 新手,请帮忙看看这个函数

   

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


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

主题:新手,请帮忙看看这个函数

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


加好友 发短信
等级:新手上路 帖子:16 积分:0 威望:0 精华:0 注册:2016/7/6 10:12:01
新手,请帮忙看看这个函数  发帖心情 Post By:2016/7/7 1:22:18 [显示全部帖子]

因为我发现在公式编辑器里直接使用sendmail函数真的好卡好卡  所以我想把我需要的信息都写入到具有发邮件功能的自定义函数里面,然后再公式里直接执行。

因为刚开始接触金字塔,以前也没学过VBA,所以对金字塔的对象的一些用法还不是很熟悉   麻烦斑竹帮我看看

Function jf_mail(Formula,n)
    If Formula.WorkMode = 0 Then
        Exit Function 
    End If
    jf_mail=0

    Set jfmainGrid = GetMainGrid  ’获得当前指标的主图对象
    symbol=jfmainGrid.StockName    ’获取主图对象的品种名称
    prperio=jfmainGrid.CycType     ’获得主图当前周期属性 并且在下面的select case函数里得到实际的周期数值
    Select Case prperio
Case 0
perio=1
Case 1
perio=5
Case 2
perio=15
Case 3
perio=30
Case 4
perio=60
Case 5
perio=240
Case Else
perio=0
End Select
    
    Set jfHistory = Grid.GetHistoryData() ’获取当前指标窗体对象
    now_j=jfHistory.j(jfHistory .Count-1)   ’获取当前kdj的 j 值
    if jfHistory.j(jfHistory .Count-2)>=now_j   ’对比j值  看是上升还是下降,上升则赋值con1字符到kdj_dk,下降则赋值kdj_dk为con2
    Then kdj_dk="con1"
    else kdj_dk="con2"
mailcont= symbol + "M" + prperio + " KDJ." + kdj_dk + "." + now_j    ’将获取到的数值都加起来赋值给mailcont
    
     ’下面是发邮件的部分
    Set smtpmail=CreateObject("jfmail.smtpmail")    
    smtpmail.sendername="111"
    smtpmail.senderaddress="111@126.com"
    smtpmail.subject="预警邮件"'        
    Call smtpmail.addreceiver("1","111@126.com") '前面第一个参数不知道是什么
    Call smtpmail.addtextcontent(mailcont)
    Call smtpmail.sender("smtp.126.com","111@126.com","111")
End Function



想确认的是
1  获得主窗体的品种名,当前周期, 获得指标窗口(假设是KDJ指标)的J值并对比与前一根k对应的J值 方法是否正确,如果不对该怎么写
2  发邮件就这样子写就可以了吗
[此贴子已经被作者于2016-7-7 1:23:59编辑过]

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


加好友 发短信
等级:新手上路 帖子:16 积分:0 威望:0 精华:0 注册:2016/7/6 10:12:01
  发帖心情 Post By:2016/7/7 1:28:43 [显示全部帖子]

我的目的是在公式里的某个条件成立的时候执行这个函数,并且让这个函数里有指标和当前品种的几个信息

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


加好友 发短信
等级:新手上路 帖子:16 积分:0 威望:0 精华:0 注册:2016/7/6 10:12:01
  发帖心情 Post By:2016/7/7 11:11:31 [显示全部帖子]

没反应、、、、


Function jfma(Formula,n)
    jfma=0
    d=0
    MsgBox d
End Function

新建了这个一个自定义函数


然后我在公式里写
aaa:if(ref(c,2)!=ref(c,1),JFMA(0),0);

这样子也没反应

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


加好友 发短信
等级:新手上路 帖子:16 积分:0 威望:0 精华:0 注册:2016/7/6 10:12:01
  发帖心情 Post By:2016/7/7 11:23:29 [显示全部帖子]

在试啊, 我不是重新写了4楼的这样子的自定义函数嘛,就是想一步一步来边调边写, 只可惜直接倒在起跑线上了,一个messagebox都弹不出来
[此贴子已经被作者于2016-7-7 11:23:53编辑过]

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


加好友 发短信
等级:新手上路 帖子:16 积分:0 威望:0 精华:0 注册:2016/7/6 10:12:01
  发帖心情 Post By:2016/7/7 11:42:25 [显示全部帖子]

我是发现了 公式完全就没有调用自定义函数的感觉

Function zhouq(Formula,n)
    
d=3
zhouq=d
End Function


我都写成这样子了,但是公式里得不到返回值

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


加好友 发短信
等级:新手上路 帖子:16 积分:0 威望:0 精华:0 注册:2016/7/6 10:12:01
  发帖心情 Post By:2016/7/7 12:02:08 [显示全部帖子]

晕死  好像又可以了,  我试了下调用自带的自定义函数那个ma,调用完后 再调用我写的 就出来了  也弹窗了

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


加好友 发短信
等级:新手上路 帖子:16 积分:0 威望:0 精华:0 注册:2016/7/6 10:12:01
  发帖心情 Post By:2016/7/7 15:30:24 [显示全部帖子]

今天总算有点成果

Set jfmainGrid = Formula.ParentGrid   这才是获取当前指标的主图对象的方法

now_j = Formula.GetBufData("j",formula.DataSize-1)   这是获取当前指标某变量值的方法


Set smtpmail=CreateObject("WWSCommon.SmtpMail")   还有就是邮件对象中接口写错了

 回到顶部