DBに接続して対数変化率のグラフのプロットから
今考えているのは
bfとbffxで相関係数を比べて
bf↓bffx↑の方向で乖離しすぎた場合
bfjpy買いbffxjpyで売り。戻ってきたとこで決済。
というのを考えているが
必要な入金額的にはbfjpyに10万bffxに3万とかかな、
もっと安くてもやれると思うけど。
まあ自前でデータ取ってるDBに
pythonで接続するところから。
pandasにあるpandas.io.sql.read_sqlをつかう
とりあえず全部読み込む
0.5秒ごとのティックを記録してるので二日分でも大量
%%timeitで計測
216458 rows × 12 columns
8.52 s ± 78.8 ms per loop (mean ± std. dev. of 7 runs, 1 loop each)
1分20秒弱か全部はちょっとだめだというのが分かったので
減らすか、一日単位で区切るとして。
.npz形式のファイルで対数変化率と相関係数を出力
(メモ)このへんはとりあえず今後自動化したいところ。
8日のカラムbidとbidf(fx),askとaskf(fx)を
select id,time,bid,bidf,ask,askf from bf;
dfl = pd.io.sql.read_sql("SELECT * FROM bf where time between '2018-01-08' and '2018-01-09';", cnx)
これだと9日の00:00:00が入っちゃうなあ、
そんなに問題でもないけど。08 23:59:59にするか。
dfl = pd.io.sql.read_sql("SELECT id,time,bid,bidf,ask,askf FROM bf where time between '2018-01-08' and '2018-01-08 23:59:59';", cnx)
pandasのdfにするだけで偉い苦労したわ
とりあえずプロット
横軸を時間じゃなくてIDにするかなあ、
一発で対数変化率には出来ないくさいなあ。
なんか方法あったら教えてほしい。
対数変化率に変換するので長さを取得
>>>len(dfl.index)
134269
(メモ)0を含んでいる数で出る
lenA=len(dfl.index)
lnp = np.array(dfl.bid[:lenA-2])
lnp2 = np.array(dfl.bid[1:lenA-1])
p=(lnp2-lnp)/lnp2
ここまでやってbfで買いbffxで売りなんだから
askとbidfで計算しないとダメだと気付く。
修正した、npzで保存して終わろう。
loadして保存できているのを確認。
プロットしないといけないなあと思いつつ疲れた
データサイエンティストだったらこっからいろいろやれるはずだが私は違うのでかなしいなあ。
ぼやいててもしょうがないので勉強しつつ手を動かすのであるが。
一億円への道は遠い。
今年の目標1億円
去年の目標がパチンコの開発職だったんだけど、
全然景気が悪くってあきらめたというより見限った。
額面18万で残業代もたいして出ねえならやらねえし、
しかも映像系の企画しか求人来ねえし。
プログラムとかできてしまうので下手に決まっても地獄だなあと思ってやめた。
ということで目標未達成。まあ目標自体(残業無し・額面多め)がすげ変わって達成してしまったけどというかほぼ約束された未来(口約束)でまだなんだけど。
技術力的に言えば去年は変な話いろいろと整理されて自分の強みみたいなものを認識できた、あと少しだけプレゼン能力が上がったのと絵コンテの切り方を習得した。
アニメーションは相変わらず描けない模様。
プログラミング的には根性が減ってしまったのであまりよくない、モチベーション=実力だと思っているので非常によろしくない。
だもんで成功体験をそろそろしておく必要がある。
だもんでbitcoinで1億ぐらいは稼がないといけないと思う。
なので今年の目標は1億円にした、馬鹿っぽくてすごくいいね。
とりままとめ
MT4でbitocoin遊べるっぽいので
bot作るにしてもこれで検証でいいじゃないかと思った。
bitpointがbitcoinjpyを土日も動いている、
スクレイピングは意外と難しいことがわかった。
HTMLをまったく理解していないのも原因ではあるが。
apiを直でたたく方がええんやろうなあ、
volを取ってくるんだけどどことどこを見るかも含めて全部持ってきておいて検証したほうがいいんだろう。
apiを集める作業の段階で、bitflyerFXで遊んでるけど簡単すぎてbot作りが進まねえ。税金も払いたくない(めんどい)ので今年はトントンぐらいまでにしたい。
とMT4を使おうかと思ったけど取引所によって全然データが違うのでpythonで検証できるようにしたほうがええんやろうな。
とりあえずヒストリカルデータを集めに行かないと。
なので次回はヒストリカルデータあつめから
データセットの作成
概要
時系列データ:マイジャグ2的なスランプグラフ
教師ラベル:設定値
3000Gで0から2999まで差枚のグラフで3000に設定を入れる。
中断チェリーをカットして常に3枚掛けで
ボーナス成立でボーナスゲームが始まるBIGなら13枚*24回
簡単のためチェリー重複は5枚払い出しに変えて次ゲームからボーナススタート。チェリー重複はボーナス分に1枚プラスする。
そんな感じでやってみるのだが
困ったことにfor文以外の書き方が見当もつかないのでググる
というかpython3のfor文すら怪しいのでまず検討の為にfor文を書いて計測することにした。と思ったけど思いついて直でfor文書かなくて良くなる実装する。
このへんで時系列データを作ることにした。
というか65536のランダム値でいちいち小役を参照するのをやめた。
と思ったけどボーナス引いたときにゲーム数が進まないといけないので使えないのでいちいち条件文を書くしかない気がしてきた、1Gで300枚ぐらい増やす条件に変えるほうがええか。
なのでチェリー重複の場合ボーナスから1枚増やす。
#小役 rip0 pie7 bell12 tanBig311 tanReg103 B+Che312 R+Che104 Che2 Budo4 hazure-3
haraidasi = [0,7,12,311,103,312,104,2,4,-3]
#設定ごとのウエイト
wSe1=[0.13699,0.00098,0.00098,0.00249,0.00150,0.00069,0.00082,0.02624,0.15748,0.671830]
wSe2=[0.13699,0.00098,0.00098,0.00252,0.00189,0.00072,0.00085,0.02625,0.15898,0.66984]
wSe3=[0.13699,0.00098,0.00098,0.00261,0.00201,0.00075,0.00092,0.02716,0.16000,0.667600]
wSe4=[0.13699,0.00098,0.00098,0.00269,0.00244,0.00079,0.00098,0.02807,0.16051,0.665570]
wSe5=[0.13699,0.00098,0.00098,0.00284,0.00256,0.00082,0.00104,0.02808,0.16181,0.663900]
wSe6=[0.13699,0.00098,0.00098,0.00299,0.00299,0.00085,0.00116,0.02808,0.16475,0.660230]
s1=choice(haraidasi,3000,p=wSe3) # 指定した確率で3000個を抽出
こんな感じで配列に入れておいてあとで時系列にするっぽい
桁の丸めで結構苦労した、今後考えないかんと思いながら対策は後回しにするのである。
これを累積和として算出すれば時系列データの出来上がり。
s1.cumsum()
そして設定(ラベル)を最後に付ける
s1=np.append(s1,settei)
さて教師データのつくり方はなんとなくわかったが何個作ろうかな
1/5を答えようにするとして各設定8000:2000で作ってみるか。任意のフォルダに書き出すのとCSVに名前を付けて保存する方法をググる。
numpy.ndarrayのファイル保存(読み込み/書き込み対応表付き) - Python入門から応用までの学習サイト
csvよりもこっちのほうが楽そうなのでこれで保存してみよう。
フォルダの絶対パスとか文字列に変換するだけのことで相当てこずって割とナーバスになりながらどうにかやる。
思ったよりも高速だったので調子に乗って10万個のデータを生成。
次はいよいよTensowFlowから読み込む。一度休憩。
いい感じのtensorflow入門のブログを見つけてきた。
今日はこれを一日で読む。
と思ったけど眠いのとおなかが空いたので半分ぐらいまでだな。
明日と合わせて終わらせればいいか。
なるほどまあ売れるよねって感じ。
データに対して正解ラベルがどうしてそれなのかあんまりよくわからないどういうことなんだろう。
3まで終わり。
まあ結構腑に落ちることが多い記事なのでめっちゃ助かるけども。
TensorFlowはじめましたをはじめましたpart3
連載で無料で読めるのをいまさら発見した
しかし古いな情報が、関数が一年以上前のverだ。
はじめましたの2を見たら校正したもののようだ
最初からこっちを見ればよかった。
先に演習に入る前までは2から見たほうがいいという賢知を得た。