ITickerによるテクニカル分析検証例

ITickerのダウンロード

三点チャージ

はらみ線

チャネルブレイクアウト

曜日と株価

ゴールデンクロスとデッドクロス

検証:曜日と株価
・「曜日によって株価変動に何かしらの癖があるのでは?」と一度でも思ったことがある方は結構多いと思います。
シミュレーション例
[スクリプトの作成例]
・曜日毎の、「陰陽線の発生回数と割合」、「前日終値に対する当日終値の上下回数と割合」を集計してダイアログに表示するITicker用のスクリプトを作成してみました。 


その他にも、値幅の積算等も加えると面白いかもしれません。後は皆さんの工夫次第です。

◎以下のような操作を行えば、下記サンプルスクリプトがそのまま実行出来ます。
  1. マウスで「'//スクリプト開始」〜「'//スクリプト終わり」までを選択
  2. 右クリック→コピー(C)でクリップボードにコピー
  3. メモ帳などのテキストエディターに貼り付け
  4. 名前はなんでも構いませんが、拡張子を必ずitcにして保存。
    (*メモ帳で保存する場合は、ファイルの種類を必ず「すべてのファイル」に指定して拡張子itcを付けて保存して下さい。)
  5. ITickerからチャートを開き、をクリック。
  6. 選択のダイアログから保存したファイルを選択。
'//スクリプト開始
Option Explicit '変数の明示的な宣言を強制

'//////////////////////
'//関数の定義
'//
'表示を見やすくするため桁数によってスペースを挿入
Function AddSP(data)
    If data < 10 And data >= 0 Then
        AddSP = "  " & data
    ElseIF data < 100 Then
        AddSP = " " & data
    Else
        AddSP = "" & data
    End If
End Function

'////////////////////////////
'// オブジェクト・変数の設定
'//
Dim hChart
Dim index, wday
Dim strLog
'0:日、1:月、2:火、3:水、4:木、5:金、6:土
Dim cntSum(6)
Dim cntYo(6), cntIn(6), cntDo(6), cntUp(6), cntEven(6), cntDown(6)
Dim ratioYo(6), ratioIn(6), ratioDo(6), ratioUp(6), ratioEven(6), ratioDown(6)
Dim strWDay(6)

strWDay(0) = "日"
strWDay(1) = "月"
strWDay(2) = "火"
strWDay(3) = "水"
strWDay(4) = "木"
strWDay(5) = "金"
strWDay(6) = "土"
For wday = 0 To 6
    cntSum(wday) = 0
    cntYo(wday) = 0
    cntIn(wday) = 0
    cntDo(wday) = 0
    cntUp(wday) = 0
    cntEven(wday) = 0
    cntDown(wday) = 0
    ratioYo(wday) = FormatNumber(Round(0.0, 2), 2)
    ratioIn(wday) = FormatNumber(Round(0.0, 2), 2)
    ratioDo(wday) = FormatNumber(Round(0.0, 2), 2)
    ratioUp(wday) = FormatNumber(Round(0.0, 2), 2)
    ratioEven(wday) = FormatNumber(Round(0.0, 2), 2)
    ratioDown(wday) = FormatNumber(Round(0.0, 2), 2)
Next

'時系列データオブジェクトITObjHistDataを作成
Set hChart = ITCreateObjHistData


'///////////////////////////
'// 判定・カウント
'//
hChart.SetCurrentChart '現在開いているチャートの時系列データを取得
For index = 1 To hChart.GetCnt-1
    '曜日番号の取得
    wday = Weekday(hChart.GetDate(index)) - 1
    '陰陽線の判定・カウント
    If hChart.GetOpen(index) > hChart.GetClose(index) Then
        cntIn(wday) = cntIn(wday) + 1
    ElseIf hChart.GetOpen(index) < hChart.GetClose(index) Then
        cntYo(wday) = cntYo(wday) + 1
    Else
        cntDo(wday) = cntDo(wday) + 1
    End If
    '前日比の判定・カウント
    If hChart.GetClose(index-1) > hChart.GetClose(index) Then
        cntDown(wday) = cntDown(wday) + 1
    ElseIf hChart.GetClose(index-1) < hChart.GetClose(index) Then
        cntUp(wday) = cntUp(wday) + 1
    Else
        cntEven(wday) = cntEven(wday) + 1
    End If

    cntSum(wday) = cntSum(wday) + 1
Next

strLog = "  |     陽線     |     陰線     |     同値     |      Up      |     Down     |     Even     " & vbNewLine & _
              "--+--------------+--------------+--------------+--------------+--------------+--------------" & vbNewLine
For wday = 0 To 6
    If cntSum(wday) <> 0 Then
        ratioYo(wday) = FormatNumber(Round(cntYo(wday)/cntSum(wday) * 100, 2), 2)
        ratioIn(wday) = FormatNumber(Round(cntIn(wday)/cntSum(wday) * 100, 2), 2)
        ratioDo(wday) = FormatNumber(Round(cntDo(wday)/cntSum(wday) * 100, 2), 2)
        ratioUp(wday) = FormatNumber(Round(cntUp(wday)/cntSum(wday) * 100, 2), 2)
        ratioEven(wday) = FormatNumber(Round(cntEven(wday)/cntSum(wday) * 100, 2), 2)
        ratioDown(wday) = FormatNumber(Round(cntDown(wday)/cntSum(wday) * 100, 2), 2)
    End if
    strLog = strLog & strWDay(wday) & "|" & _
            AddSP(cntYo(wday)) & "回(" & AddSP(ratioYo(wday)) & "%)|" & _
            AddSP(cntIn(wday)) & "回(" & AddSP(ratioIn(wday)) & "%)|" & _
            AddSP(cntDo(wday)) & "回(" & AddSP(ratioDo(wday)) & "%)|" & _
            AddSP(cntUp(wday)) & "回(" & AddSP(ratioUp(wday)) & "%)|" & _
            AddSP(cntDown(wday)) & "回(" & AddSP(ratioDown(wday)) & "%)|" & _
            AddSP(cntEven(wday)) & "回(" & AddSP(ratioEven(wday)) & "%)" & _
            vbNewLine
Next

ITMsgBox strLog
'//
'// スクリプト終わり 
[トップページへ戻る]