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


金字塔客服中心 - 专业程序化交易软件提供商金字塔软件高级功能研发区 → 求助:转化代码

   

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


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

主题:求助:转化代码

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


加好友 发短信
等级:新手上路 帖子:8 积分:8 威望:0 精华:0 注册:2012/5/28 16:42:37
求助:转化代码  发帖心情 Post By:2012/6/8 10:19:00 [只看该作者]

 

这是一个HURET指数的代码,请求您:

1、能不能转化成金字塔中能够计算和运行的代码吗?

2、这个是VB代码,这个和金字塔语言的转换的关键是什么呢?

 

'This program calculates an estimate of the Hurst coefficient.

'Written by Martin Sewell <martin@martinsewell.com>


Sub Hurst()


    Dim Data()

    Dim Array1()

    Dim Array2()

    Dim Mean

    Dim Result()

   

    Dim NoOfDataPoints As Integer

   

    Dim NoOfPlottedPoints As Integer

    Dim PlottedPointNo As Integer

   

    Dim NoOfPeriods As Integer

    Dim PeriodNo As Integer

   

    Dim N As Integer

    Dim i As Integer

    Dim m As Integer

    Dim logten

    Dim R

    Dim S

    Dim RS

    Dim SumSquared

   

    logten = Log(10)

   

    'Delete any previous results

    Worksheets("Data").Range("C3").Value = Null

    Worksheets("Data").Range("D:D").Value = Null

    Worksheets("Data").Range("E:E").Value = Null

   

    'Get total number of data points

    NoOfDataPoints = Worksheets("Data").Range("C1").Value

   

    ReDim Data(NoOfDataPoints)

   

    'Get data, ignoring any spaces

    i = 1

    counter = 1

    Do While counter <= NoOfDataPoints

        Set curCell = Worksheets("Data").Cells(i, 1)

        If Application.WorksheetFunction.IsNumber(curCell.Value) Then

            Data(counter) = curCell.Value

            counter = counter + 1

        End If

        i = i + 1

    Loop

   

    NoOfPlottedPoints = NoOfDataPoints - 2

    ReDim Result(NoOfPlottedPoints, 2)

   

    'Begin main loop

    For N = 3 To NoOfDataPoints

       

        totalR = 0

        totalS = 0

       

        NoOfPeriods = NoOfDataPoints - N + 1

       

        For PeriodNo = 1 To NoOfPeriods

            ReDim Array1(N)

            ReDim Array2(N)

           

            For i = 1 To N

                Array1(i) = Data((PeriodNo - 1) + i)

                Array2(i) = 0

            Next i


            Summ = 0

            SumSquared = 0

            For i = 1 To N

                Summ = Summ + Array1(i)

                SumSquared = SumSquared + ((Array1(i)) * (Array1(i)))

               

            Next i

            Mean = Summ / N


            'STDEV

            'S = Sqr((SumSquared - (Summ * Summ) / N) / (N - 1))

            

            'STDEVP

            S = Sqr((SumSquared - (Summ * Summ) / N) / N)

           

            For i = 1 To N

                Array1(i) = Array1(i) - Mean

            Next i

           

            For i = 1 To N

                For j = 1 To i

                    Array2(i) = Array2(i) + Array1(j)

                Next j

            Next i

           

            Maxi = Array2(1)

            Mini = Array2(1)

            For i = 1 To N

                If Array2(i) > Maxi Then Maxi = Array2(i)

                If Array2(i) < Mini Then Mini = Array2(i)

            Next i

           

            R = Maxi - Mini

            totalR = totalR + R

            totalS = totalS + S

           

        Next PeriodNo

     

        R = totalR / NoOfPeriods

        S = totalS / NoOfPeriods

        RS = R / S

     

      PlottedPointNo = N - 2

        Result(PlottedPointNo, 1) = (Log(N)) / logten

        Result(PlottedPointNo, 2) = (Log(RS)) / logten

         

    Next N

       

    Sumx = 0

    Sumy = 0

    Sumxy = 0

    Sumxx = 0

   

    For i = 1 To NoOfPlottedPoints

        Worksheets("Data").Cells(i + 6, 4).Value = Result(i, 1)

        Worksheets("Data").Cells(i + 6, 5).Value = Result(i, 2)

        Sumx = Sumx + Result(i, 1)

        Sumy = Sumy + Result(i, 2)

        Sumxy = Sumxy + (Result(i, 1)) * (Result(i, 2))

        Sumxx = Sumxx + (Result(i, 1)) * (Result(i, 1))

    Next i

   

    'Calculate Hurst coefficient

    H = (Sumxy - ((Sumx * Sumy) / NoOfPlottedPoints)) / (Sumxx - ((Sumx * Sumx) / NoOfPlottedPoints))

    Worksheets("Data").Range("C3").Value = H

   

End Sub


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


加好友 发短信 czt
等级:蜘蛛侠 帖子:1445 积分:6114 威望:0 精华:3 注册:2012/1/16 10:31:19
  发帖心情 Post By:2012/6/8 10:26:41 [只看该作者]

能不能把思路写出来?

 回到顶部