VBScript入門 for ITicker
■ 第0章 基本的なステートメント
ヘルプファイルのサンプルで使用しているVBscriptのステートメントは、ほとんどの場合以下の5つのステートメントだけです。つまりこれらのステートメントを理解すればかなりの事が出来るということです。
以下これらのステートメントについて詳しく(というか必要最小限だけ)説明していきます。
  1. Rem ステートメント
  2. Option Explicit ステートメント
  3. Dim ステートメントと変数
  4. If...Then...Else ステートメント
  5. For...Next ステートメント
1 .Rem ステートメント
Rem コメントです
' コメントです
  • 「Rem」又は「'」以降から改行までの記述はプログラムの動作に影響を与えません。
  • プログラムをわかりやすくするためのコメント を記述するために使用します。
  • Remステートメントとシングル クォーテーション 「'」 は同じ意味です。
2. Option Explicit ステートメント
'ここから
Option Explicit
' ここまで
  • 不用意なプログラムミスを防ぐ為のおまじないです。
  • ここはともかく黙ってプログラムの先頭に必ず記述するようにして下さい。
  • どうしても気になる方はこちらへ
3. Dim ステートメントと変数
'ここから
Option Explicit
Dim x, y
Dim z
' ここまで
  • Dim ステートメントで使用する変数の名前を宣言します。
  • 変数名の先頭文字は必ずアルファベットを使用し、2つ目以降はアルファベットと数字が使えます。
  • 変数が複数ある時は、複数行宣言するか、カンマ 「,」 で区切って宣言します。
  • 宣言を行った後、代入演算子「=」を使って、宣言した変数に値を代入することが出来ます。
  • 「x」に数値の「1」を代入するには「x=1」とします。この場合の「=」は等しいという意味ではなく、右辺の値を左辺に代入するという意味です。イメージ的には「x←1」みたいな表現の方が合っている感じです。
  • 計算に用いる四則演算の記号「+,-,/」は一般的なものと同じですが、掛け算は「*」を使用します。
  • 変数には文字列も代入することが出来ます。
  • 直接文字列を指定する場合は文字列をダブルクォーテーション「""」で囲みます。
  • 文字列と文字列を結合させる場合は「&」を使用します。

'ここから
Option Explicit
Dim x, y
Dim str

x = 1 'xには1が入る
y = 2 'yには2が入る
x = x + y '左辺のxには3(1+2の結果)が入る

str = "VBScript 入門 "
str = str & "for ITicker" '左辺strには「VBScript 入門 for ITicker」が入る

' ここまで

  • ITickerで検索やチャートを作成するためには、VBScriptが提供している機能だけでなく、ITickerが独自に提供している関数を使用することになります。
  • ITickerが提供している関数名には全て頭に「IT」が付きます。詳しくはヘルプの「スクリプト」項を参照して下さい。
  • ここではその中のITGetClose(index)を紹介します。
  • ITGetClose(index)は現在開いているチャートの終値を取得する関数です。
  • カッコ内の「index」には「0〜ITMaxCnt - 1」までの数値を指定します。
  • 一番古いデータは「index」が「0」で、値が増えるにつれて新しいデータになります。
  • 「ITMaxCnt」はチャートの総データ数を意味しています。
  • 「index」は0から始まるので、一番新しいデータの「index」は「ITMaxCnt - 1」となります。

'ここから
Option Explicit
Dim x1, x2, x3
Dim ave

' 例えば現在開いているチャートの最新終値が500、前日終値510、前々日520だったとすると
x1 = ITGetClose(ITMaxCnt - 1) 'x1には最新日[ITMaxCnt-1]の500が入る
x2 = ITGetClose(ITMaxCnt - 2) 'x2には最新日より1日前[ITMaxCnt-1-1]の510が入る
x3 = ITGetClose(ITMaxCnt - 3) 'x3には最新日より2日前[ITMaxCnt-1-2]の520が入る
ave = (x1 + x2 + x3) / 3 'aveには3日平均の510が入る
' ここまで

  • 以下の関数も使い方は同じです。
    • 始値: ITGetOpen(index)
    • 高値: ITGetHi(index)
    • 安値: ITGetLow(index)
    • 出来高: ITGetVol(index)
4. If...Then...Else..End If. ステートメント
  • これは文字通り、もし(If)...の判定が合っていれば、その時は(Then)...を実行しそれ以外は(Else)...を実行する、ということです。
'ここから
Option Explicit
Dim x0, x1
Dim check

' 例えば現在開いているチャートの最新始値が800、前日始値750だったとすると
x0 = ITGetOpen(ITMaxCnt-1) 'x0には800が入り
x1 = ITGetOpen(ITMaxCnt-2) 'x1には750が入り
If x0 = x1 Then 'x0に入っている値(800)とx1に入っている値(750)は等しくはない
   check = 1 'すなわち「x1 = x0」でないので、ここの処理は行われず
Else 'それ以外の場合の
   check = 0 'こちらの処理が実行される
End If
' 従って、この時点で変数「check」には0が入っている
' ここまで
  • If Thenの間に使われている「=」は、先に出た代入演算子の意味ではなく、比較演算子として用いられます。すなわち「等しいか」という判定です。
  • その他にも、「より大きい・小さい」の判定として「<, >」が、「以上・以下」の判定として「<=, >=」、「等しくない」判定として「<>」等があります。
5. For...Next ステートメント
  • 「For」の後には次のような形式の文が続きます。
  • For [変数] = [開始値] To [終了値]
  • 「For」文以降に設定した条件の間だけ、「For」と「Next」の間の実行文を繰り返して実行します。
  • 繰り返される毎に[変数]に1が加算されていきます。
'ここから
Option Explicit
Dim x
Dim i

For i = 0 To 3
  x = i '@
Next
' この時点で、
'    変数「x」には数値の「3」が入っています。
'    変数「i」には数値の「4」が入っています。

' ここまで
  • 変数「i」に開始値「0」が代入され「For」と「Next」の間の文「@」を実行して、
  • 変数「i」に1が加算されます。
  • 変数「i」が終了値「3」以下の場合まで「For」と「Next」間の実行文「@」を繰り返し実行します。
  • つまり上記リストは、展開すると下記リストのような動作となります。
'ここから
Option Explicit
Dim x
Dim i

i = 0 '変数「i」には[開始値]の0が入る
x = i '@の処理:xに0が入る

i = i + 1 ' 変数「i」を+1増加、iには1が入る
'変数「i」は[終了値]の3以下なので続けて@の処理に移る

x = i '@の処理:xには1が入る

i = i + 1'変数「i」を+1増加、iには2が入る
'変数「i」は[終了値]の3以下なので続けて@の処理に移る

x = i '@の処理:xには2が入る

i = i + 1 '変数「i」を+1増加、iには3が入る
'変数「i」は[終了値]の3以下なので続けて@の処理に移る

x = i '@の処理:xには3が入る

i = i + 1 '変数「i」を+1増加、iには4が入る
'変数「i」は[終了値]の3より大きいので@は実行せず「Next」を抜ける

' ここまで

6. 折れ線グラフ
  • 折れ線グラフのスクリプトです。ただ、終値ベースの折れ線グラフはITickerに搭載されているので、ここでは始値と終値の平均ベースの折れ線グラフを描くようにします。
  • ここでは敢えてスクリプトにコメントは付けていません。
  • ITickerが提供している関数名には全て頭に「IT」が付きます。これらについてはヘルプの「スクリプト」項を参照して下さい。
'ここから
Option Explicit
Dim ave, pen, index
ITCreateObjStdPen 1
Set pen = ITObjStdPen(0)
pen.SetCnd ITAreaStock, ITChartLine1, ITStyleSolid, 1, ITModeCopypen

For index = 0 To ITMaxCnt-1
    ave = ( ITGetOpen(index) + ITGetClose(index) ) / 2
    pen.SetData index, ave, 0, True, RGB(255,0,0)
Next
ITDraw
' ここまで


第1章へ

[トップページに戻る]