以文本方式查看主题

-  金字塔客服中心 - 专业程序化交易软件提供商  (http://weistock.com/bbs/index.asp)
--  高级功能研发区  (http://weistock.com/bbs/list.asp?boardid=5)
----  能帮忙写个函数吗?  (http://weistock.com/bbs/dispbbs.asp?boardid=5&id=12810)

--  作者:∑
--  发布时间:2012/7/6 10:11:14
--  能帮忙写个函数吗?

公式:

runmode:1;
m:PEAKBARS(4,5,1),linethick0;
tmp:readtest(m),linethick0;

 

自定义函数:

Function readtest(Formula,M)
    \'系统会在逐K线模式解释公式时的每个周期都会调用此函数一遍,因此设计时应该注重程序的执行效率,不要重复的执行一些没必要的代码
    DataCount = UBound(M)
    If DataCount <> Formula.DataSize-1 Then
        Exit Function
    End If

\'定义一个计算返回的数组
    Dim ResultMa
    Redim ResultMa(DataCount)
    For i = 0 To Formula.DataSize-1
      ResultMa(i) =  document.GetPrivateProfileInt("aa", M(i),0 , "C:\\1.ini")
    NEXT
    readtest=ResultMa
End Function

 

 

1.ini 内容

 

[aa]
0=0
1=2
2=4
3=6

===============================================

请问:

if 条件为真 then tag:=writetest(M,99); 中的writetest该如何写呢。也是序列转换吗?

 

 

Function writetest(Formula,m,value)

      tag = document.WritePrivateProfileInt("aa",m,value , "C:\\1.ini")

End Function

以上我写的没成功。不能改1.ini中的数据。


--  作者:王锋
--  发布时间:2012/7/6 17:58:27
--  

前面的例子你是一点都没看懂啊


--  作者:∑
--  发布时间:2012/7/6 19:42:20
--  
帮个忙吧,我不是专业人士,今天白天向贵公司打长途电话就20多分钟,给解决一下吧。谢谢了
--  作者:王锋
--  发布时间:2012/7/7 21:20:45
--  

Function writetest(Formula,m,value)

    DataCount = UBound(M)
    If DataCount <> Formula.DataSize-1 Then
        Exit Function
    End If

 

    For i = 0 To Formula.DataSize-1
      document.WritePrivateProfileInt("aa", M(i),value , "C:\\1.ini")
    NEXT
    readtest=0

End Function


--  作者:∑
--  发布时间:2012/7/8 13:34:55
--  

多谢版主。

 

 

 

 

 


--  作者:lufuding
--  发布时间:2012/7/9 2:01:12
--  
以下是引用王锋在2012-7-7 21:20:45的发言:

Function writetest(Formula,m,value)

    DataCount = UBound(M)
    If DataCount <> Formula.DataSize-1 Then
        Exit Function
    End If

 

    For i = 0 To Formula.DataSize-1
      document.WritePrivateProfileInt("aa", M(i),value , "C:\\1.ini")
    NEXT
    readtest=0

End Function

 

 

Function readtest(Formula,m)
     \'系统会在逐K线模式解释公式时的每个周期都会调用此函数一遍,因此设计时应该注重程序的执行效率,不要重复的执行一些没必要的代码
    DataCount = UBound(M)
    If DataCount <> Formula.DataSize-1 Then
        Exit Function
    End If

\'定义一个计算返回的数组
    Dim ResultMa
    Redim ResultMa(DataCount)
    For i = 0 To Formula.DataSize-1
      ResultMa(i) =  document.GetPrivateProfileInt("aa", M(i),0 , "C:\\1.ini")
    NEXT
    readtest=ResultMa


End Function

 

夜以继日地开发~~~~~这么晚还发贴!!!

这两个函数通不过啊

提示是:编译器错误 1044    调用过程(SUB)不能使用括号

 

 

正要用这两个函数

不懂VBA麻烦版主把这两个函数写好

先谢过

 


--  作者:王锋
--  发布时间:2012/7/9 5:17:52
--  
VBS是公用的语言,初学者应该多利用一下GOOGLE的资源