-
.複数の移動平均は既にやっているので、ここではボリンジャーバンドの様に移動平均の±5%を表示し、そして指標1の領域には移動平均に対する標準偏差を描くようなスクリプトを書いてみました。
-
といっても、IdouHeikin(kikan, index)は前述のコードを、また標準偏差を求める関数CalStd(term,
index)は以前掲示板で出た話題にサンプルとして示したものを、それぞれそのままコピーして使い回しているので、スクリプト本体の作成所要時間は1,2分というところです。寧ろ、文章作成の方が何十倍もの時間を要しています。
'ここから
Option Explicit
'移動平均
Function IdouHeikin(kikan, index)
Dim sum, j
IdouHeikin = 0
If index-(kikan-1)>= 0 Then
sum = 0
For j = 0 To kikan-1
sum
= sum + ITGetClose(index-j)
Next
IdouHeikin = sum / kikan
End If
End Function
'標準偏差
Function CalStd(term, index)
Dim j, stock, sum, sum2, ave
CalStd = 0
If index <= term Then Exit Function
If term < 1 Then Exit Function
sum = 0:sum2 = 0
For j = 0 To term - 1
sum = sum + ITGetClose(index -
j)
sum2 = sum2 + ITGetClose(index
- j)*ITGetClose(index - j)
Next
ave = sum/term
CalStd = (ITGetClose(index) - ave) / Sqr(sum2/term
- ave*ave)
End Function
'main
Dim i, ave, pen1, pen2, pen3, pen4
ITCreateObjStdPen 4
Set pen1 = ITObjStdPen(0)
Set pen2 = ITObjStdPen(1)
Set pen3 = ITObjStdPen(2)
Set pen4 = ITObjStdPen(3)
pen1.SetCnd ITAreaStock, ITChartLine1, ITStyleSolid, 1, ITModeCopypen
pen2.SetCnd ITAreaStock, ITChartLine1, ITStyleDot, 1, ITModeCopypen
pen3.SetCnd ITAreaStock, ITChartLine1, ITStyleDot, 1, ITModeCopypen
pen4.SetCnd ITAreaOpt1, ITChartLine1, ITStyleSolid, 1, ITModeCopypen
ITSetYRange ITAreaOpt1, 3, -3, 1 'スケール設定
For i = 0 To ITMaxCnt-1
ave = IdouHeikin(20, i) '20日移動平均
pen1.SetData i, ave, 0, True, RGB(0, 255, 0)
'移動平均
pen2.SetData i, ave * 1.05, 0, True,
RGB(255, 0, 0) '日移動平均+5%
pen3.SetData i, ave * 0.95, 0, True,
RGB(255, 0, 0) '日移動平均-5%
pen4.SetData i, CalStd(20, i), 0, True, RGB(0, 0,
255) '20日移動平均に対する標準偏差
Next
ITDraw
' ここまで |
-
尚、「Exit Function」はその時点でその関数を終了させる命令、「Sqr」は平方根を求める関数です。
|