求助:轉(zhuǎn)化代碼 [金字塔]
- 咨詢內(nèi)容:
這是一個HURET指數(shù)的代碼,請求您:
1、能不能轉(zhuǎn)化成金字塔中能夠計算和運(yùn)行的代碼嗎?
2、這個是VB代碼,這個和金字塔語言的轉(zhuǎn)換的關(guān)鍵是什么呢?
'This program calculates an estimate of the Hurst coefficient.
'Written by Martin Sewell <[email protected]>
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
- 金字塔客服: 能不能把思路寫出來?
如果以上指標(biāo)公式不適用于您常用的行情軟件
或者您想改編成選股公式,以便快速選出某種形態(tài)個股的話,
相關(guān)文章
-
沒有相關(guān)內(nèi)容