2016年3月5日土曜日

Bitcoin関連データ収集自動化3 Jason2XML and auto Gmail

地道にシェルスクリプトを追加している。

なぜXML?というつっこみはしないでくれ。
スクリプトで簡単に処理できるデータベース言語を他に知らないだけだからw
多少冗長になるけど、見やすいんだよね…。

というわけで2つのスクリプトの紹介。

<ひとつは自動E-mail送信スクリプト>
GmailのAPIを使った。
まず、捨てアカウントを作成。
次にセキュリティ設定(アプリケーション)を下げ,特定のアプリケーション以外でも使用可能に。
それから肝心のスクリプト作成。
https://gist.github.com/kawaz/4152434
の記述を主に使ったが、うまく行かなかった部分もあったので、修正した。

base64のところは苦労したので、問題の切り分けのときに変数($EN64)化した。
今となっては意味ないけど。

#!/bin/sh

user="hoge" #Only the username. Should not include @gmail.com
pass="hogehoge"
to="friend@hoge.hoge"
message="Today is hot.\nIt is winter, though."

EN64=`perl -MMIME::Base64 -e 'print encode_base64("\000'$user'\@gmail.com\000'$pass'")'`


( sleep 1
  echo "EHLO localhost"
  sleep 1
  echo "AUTH PLAIN $EN64"
  sleep 1
  echo "MAIL FROM: <"$user"@gmail.com>"
  sleep 1
  echo "rCPT TO: <$to>"
  sleep 1
  echo "DATA"
  sleep 1
  ( echo "Subject: Checklist"
    echo "From: $user@gmail.com"
    echo "To: $to"
    echo ""
    echo "$message"
    echo ""
    echo "."
  ) | perl -pe's/(?<!\r)\n/\r\n/'
  sleep 1
  echo "quit"
) | openssl s_client -connect smtp.gmail.com:465


<もうひとつはJason 2 XML スクリプト。>
ちょっとずつ専門的になってきているので、スクリプト全部は公開しない。
だれか買うかな?とも思うけど、儲かるなら自分で使う罠wwwwwww

価格チャートの時系列記録スクリプトだ。
ブログの最初に出力されたXMLの画像を貼り付けた。

#Time description
SYSTEM_DATE=`date '+%Y-%m-%d'`
SYSTEM_DATE_year1=`date '+%Y'`
SYSTEM_DATE_month1=`date '+%m'`
SYSTEM_DATE_day1=`date '+%d'`
SYSTEM_DATE_hour1=`date '+%H'`
SYSTEM_DATE_minute1=`date '+%M'`

で時間を全部とってきて、価格データと共にXMLに埋めた。
ファイルが大きくなりすぎないように、上記の変数をファイル名にも転用し、
一日ごとに区切った。

トラブルにならない程度に数分Sleepさせた上で、
Jason2XMLスクリプトをfor関数で繰り返した。
ダブルクオテーションの記述をあまり考えたくなかったので、少しXMLが冗長…。

また独立したスクリプトで5日分(日数は変数化してある)のXMLを参照するXMLを作るものを作成した。 これで、XSLで5日分まとめて変換できる。あまり日数を多くすると負荷が大きいのと実用的でなくなる。古い記録を残したままにできるのは我ながら良い。

あとは本当の意味での”関数”であるXSLを考えないといけない。
  1. 大きな変動があれば携帯宛にメールで送る
  2. グラフにして変化を視覚的に見る。統計ソフトに計算させる。
    • SVG
    • CSVにしてR(統計・グラフ描画ソフト)に引き渡す。
  3. メールに2を添付して送る
  4. 最終的には売買APIに渡して売買の自動化
    1. Log出力でテスト
    2. 最小額でテスト
    3. 実用化
の順番で考えている。
2・4は2が先行だが必要があれば双方向で修正。
4が最高に難しいので、じっくりやっていく予定。
当面は実際の売買でなくlogとグラフ出力させメール送信(1,2,3)になるだろう。
起きている時間帯は最終判断を自分でする方が良いが、
仕事中や寝ている間はある程度任せられるぐらいのスクリプトを組みたいものだ。

すでにBitcoin取引所とYahoo financeは自動で取得できる。
メールは送れるので、あとは送る条件を関数化することで1は終了だ。

実際のところYahoo financeは株価でも使えるので、今後株取引でも応用がきく。

コンパイルされたソフトウェアと違い、スクリプトは対話式で一個ずつ修正がしやすい。
XMLはかなり厳密な記述を要するので相性が良い。

コンパイルが不要なのは助かるが、取引の時に処理による一瞬の遅れが出るのが致命的になる可能性もある。
もちろん、そういう取引をするつもりはないのだが、不測の事態はやはり怖い。
逆指値スクリプトで下げ幅を大きくとって保険にする必要があるのかもしれない。
逆指値も万能ではないし、きりがないが…。

ともかく、目指せ金儲けプログラム!

0 件のコメント:

コメントを投稿