トップ «前の日記(2017/06/14) 最新 次の日記(2017/06/17)» 編集

kaztomo日記


2017/06/15

_ [Python][SQL]とりあえず1分足を sqlite3 へ登録してみる

  • OANDA REST API にて、Tickストリームを取得し、OHLC情報を更新
  • setitimer を使って 60秒ごとに OHLC情報を fix
  • fixした OHLC情報と、現在時刻 (ただし秒は "00"固定) を sqlite3 へ execute

作成してみたら、こんな感じになった (^o^)/

Pythonでの SQL文 (ポイントの抜粋):

cDate = dnow.strftime("%Y/%m/%d")   # 2017/06/15
cTime = dnow.strftime("%H:%M:00")   # 09:01:00

sqlstr = "delete from hd where date=? and time=?"
conns = c.execute(sqlstr, (cDate, cTime)).fetchall()

sqlstr = "insert into hd (date,time,open,high,low,close) values (?, ?, ?, ?, ?, ?)"
conns = c.execute(sqlstr, (cDate, cTime,
                     _usdjpy[1], _usdjpy[2], _usdjpy[3],
                     _usdjpy[4])).fetchall()

sqlstr = "select * from hd order by date desc, time desc limit 2"
conns = c.execute(sqlstr).fetchall()

結果:

% sqlite3 USDJPY1.db
sqlite> select * from hd;
6|2017/06/15|18:06:00|109.703|109.703|109.691|109.692
7|2017/06/15|18:07:00|109.693|109.713|109.692|109.7
8|2017/06/15|18:08:00|109.695|109.698|109.689|109.693
9|2017/06/15|18:09:00|109.692|109.695|109.692|109.695
10|2017/06/15|18:10:00|109.691|109.694|109.69|109.694
sqlite>

OHLC の正確な情報としては'秒'情報は "00" ではないけど、自分用だし気にしない (^^;;


参考にさせて頂いた情報: