以文本方式查看主题

-  金字塔客服中心 - 专业程序化交易软件提供商  (http://weistock.com/bbs/index.asp)
--  高级功能研发区  (http://weistock.com/bbs/list.asp?boardid=5)
----  还是有问题,请帮忙解决一下吧。  (http://weistock.com/bbs/dispbbs.asp?boardid=5&id=12816)

--  作者:∑
--  发布时间:2012/7/6 13:06:04
--  还是有问题,请帮忙解决一下吧。

公式:

runmode:1;
m:PEAKBARS(4,5,1),linethick0;
tmp:readtest(m),linethick0;
if c>O then tmp1:=writetest(m,50);

 

自定义函数:

 

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 , "G:\\1.ini")
    NEXT
    readtest=ResultMa
End Function

 

Function writetest(Formula,m,value)
    \'系统会在逐K线模式解释公式时的每个周期都会调用此函数一遍,因此设计时应该注重程序的执行效率,不要重复的执行一些没必要的代码
    writetest=0
   tag = document.WritePrivateProfileInt("aa",m,value, "G:\\1.ini")
End Function

 

1.ini 内宾:

[aa]
0=3
1=10
2=7
3=6
4=8
5=10

 

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

能读出1.ini文件中的数据,可是没有成功写入。

我也知道这样很烦人,可是自己确实搞不了,需要金字塔帮助。拜托了.


--  作者:Leon
--  发布时间:2012/7/6 15:00:10
--  

楼主试试这样能写入吗

公式中:

 

runmode:1;
M:PEAKBARS(4,5,1),linethick0;
tmp:readtest(m),linethick0;
if c>o then
begin
tmp1:writetest(m,50);
end

 

 

 

自定义函数中: \'将盘符替换成ini文件放置的盘符

 

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 , "F:\\1.ini")
    NEXT


   readtest=ResultMa

 

End Function

 

 

Function writetest(Formula,m,value)
    \'系统会在逐K线模式解释公式时的每个周期都会调用此函数一遍,因此设计时应该注重程序的执行效率,不要重复的执行一些没必要的代码
 tag = document.WritePrivateProfileInt("aa",m,value,"F:\\1.ini")

End Function


--  作者:∑
--  发布时间:2012/7/6 15:09:15
--  

一句话是不用begin end的,应该是writetest函数不对。等待客服的回答


--  作者:Leon
--  发布时间:2012/7/6 15:18:14
--  
试了一下,如果加条件if c>o就会无法写入,另外如果要写入必须每次更改一下公式编辑,也就是加个回车再次生成,才会写入。原因正在查找。
[此贴子已经被作者于2012-7-6 15:25:52编辑过]

--  作者:Leon
--  发布时间:2012/7/6 15:30:02
--  
经过刚才测试,首先c>o必须条件成立,才会触发,并且修改过公式一定要把公式重启一次,这样就能写入了。
--  作者:∑
--  发布时间:2012/7/6 16:35:04
--  
谢谢leon.您说是加个begin end函数吗?我回家试一下,现在单位不方便测试。
--  作者:Leon
--  发布时间:2012/7/6 16:42:13
--  
以下是引用在2012-7-6 16:35:04的发言:
谢谢leon.您说是加个begin end函数吗?我回家试一下,现在单位不方便测试。

这个和begin end没有关系的,应该是WritePrivateProfileInt函数内m参数类型的问题,如果将m替换成一个具体值。在最后一根k线为阳线并且修改过公式一定要把公式编辑器重启一次

这样才能出现写入操作。

\'这里我将m替换成了具体数值

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

if c<o then tmp1:writetest(10,50);


--  作者:∑
--  发布时间:2012/7/6 17:10:00
--  
是的。我也猜是序列变量的问题。等待客服回答吧。。谢谢L了