2017/03/22(Wed) 17:54:04 編集(投稿者)
■No83417 (shu さん) に返信
すみません。
取り敢えずは
http://k-db.com/futures/F101-0000/5m
にあった「日経平均先物 期近限月つなぎ 5分足 時系列データ」をCSV保存し、そのデータを活用してみましたので、
もし可能でしたらそれを修正いただけないでしょうか?
このデータは5分単位なのですが、それを20分毎とか30分毎とかで設定をし表示が出来るようであれば多分OKだと思うのです。
ただ、開始もですが終了も"年月日時分"は様々ですし、データも途中で抜けてるとこもあります。
Private Sub Form1_Load(ByVal sender As System.Object, ByVal e As System.EventArgs) Handles MyBase.Load
'CSVファイル読み込み <----- http://k-db.com/futures/F101-0000/5m など、取り敢えずは「日経平均先物 期近限月つなぎ 5分足 時系列データ」をCSV保存し、そのデータを活用してみました。
Dim datS As Integer = -1 'データ数
Dim dat_ymdHm(500) As String '"年月日時分"
Dim dat_suryo(500) As Integer '数量
Dim sfileM As String = "C:\Users\++++\Downloads\futures_F101-0000_5m.csv" 'CSV保存をしたファイル名
Using sr As New System.IO.StreamReader(sfileM, System.Text.Encoding.Default)
Do While Not sr.EndOfStream
Dim da As String = sr.ReadLine '1行全てを読み取る(ReadLineメソッド)
Dim dat0() As String
dat0 = da.Split(",") '一行を, (カンマ)で区切って項目ごとに分解
If dat0(0) <> "日付" Then
If Val(dat0(7)) > 0 Then '0 の場合はデータとしての活用意味がないため除く
datS = datS + 1
dat_ymdHm(datS) = dat0(0)
dat_ymdHm(datS) = dat_ymdHm(datS) & " " & dat0(1) & ":00" '時分
Mid(dat_ymdHm(datS), 5, 1) = "/" : Mid(dat_ymdHm(datS), 8, 1) = "/" '"2016/10/11 10:24:00" などに書式を変換する
dat_suryo(datS) = Val(dat0(7)) '売買代金のみ数量として利用
End If
End If
Loop
sr.Close()
End Using
'データの配列を逆にし時系列に変更する。(もっと良い方法があるのでしょうが)
Dim dummy_datS As Integer = -1
Dim dummy_dat_ymdHm(500) As String
Dim dummy_dat_suryo(500) As Integer
For i = datS To 0 Step -1
dummy_datS = dummy_datS + 1
dummy_dat_ymdHm(dummy_datS) = dat_ymdHm(i)
dummy_dat_suryo(dummy_datS) = dat_suryo(i)
Next
For i = 0 To datS
dat_ymdHm(i) = dummy_dat_ymdHm(i)
dat_suryo(i) = dummy_dat_suryo(i)
Next
'チャートの作成
Dim ds As New DataSet
Dim dt As New DataTable
Dim dtRow As DataRow
'列の作成
dt.Columns.Add("年月日時分", GetType(String))
dt.Columns.Add("数量", GetType(Integer))
ds.Tables.Add(dt)
'データの追加
For i = 0 To datS
dtRow = ds.Tables(0).NewRow
dtRow(0) = dat_ymdHm(i)
dtRow(1) = dat_suryo(i) '売買代金を数量としてセット
ds.Tables(0).Rows.Add(dtRow)
Next
'Chart1
Chart1.DataSource = ds 'Chart に表示するデータソースを設定
Chart1.Series.Clear() '系列を初期化
Dim oresen = Chart1.Series.Add("棒グラフ")
With oresen
.ChartType = DataVisualization.Charting.SeriesChartType.Column
.XValueMember = "年月日時分" ' X軸
.YValueMembers = "数量" ' Y軸
.IsVisibleInLegend = False
End With
If False Then
With Chart1.ChartAreas(0)
With .AxisX
.LabelStyle.Format = "yyyy/MM/dd HH:mm" ' "yyyy/MM/dd HH:mm" "yyyy/MM/dd"日
.IntervalType = DataVisualization.Charting.DateTimeIntervalType.Minutes
.Interval = 15
End With
End With
End If</pre></pre></pre></pre>