野良ジニアのスクラップブック

野良エンジニアによる雑記帳。技術、本、便利グッズなどを気の向くままに。

【仮想通貨 zaif】取引履歴CSVをAPIで作成【exe化しました】

こんにちわ、野良ジニアです。

【2018/01/28 22:30追記】

本記事/ツール は zaif の取引履歴 CSV が提供再開されるまでの代替手段として公開しました。2018/1/26(金)より、公式に CSV が提供再開されています。

corp.zaif.jp

公式の取引履歴が良いという方は、こちらよりダウンロードされてください。




公式 CSV が提供再開したわけですが、以下の理由によりツール自体の提供は継続します。

  • 公式 CSV のフォーマットが変わってしまった
    • 以前は通貨ペアごとにファイルが分かれていましたが、新フォーマットでは年単位で全ての通貨ペアをまとめたファイルになっている
    • 買い/売り が bid/ask 表記に変更されている
  • 本ツールでは以下の CSV ファイルを出力している
    • all.csv : 全ての取引履歴 CSV ※現在の公式 CSV と同等
    • all_jpy.csv : JPY建ての全ての取引履歴CSV
    • all_btc.csv : BTC建ての全ての取引履歴CSV
    • (currency_pair).csv : 通貨ペアごとの取引履歴CSV ※以前の公式 CSV と同等
  • 「フォーマットが変わってしまって困っている」「通貨ペアごとのファイルが欲しい」などという方向け
  • Cryptactに急いで取引履歴をアップしたい
    • オプションで「買い/売り」表記、「bid/ask」表記の出力を変更可能
      • 旧フォーマット(買い/売り) 表記で、cryptact にアップロードできることを確認済
    • 2018/01/28 22:30現在、新フォーマットに未対応。下記 Twitter の通り、その内対応される予定

【2018/01/28 22:30追記おわり】




昨日、こんな記事を書きました。

www.stray-scrapbook.work

ですが、やっぱり「Ruby インストールして、コマンドプロンプトで実行して〜…」って難しいですよね。ってことで、Windows ユーザー向けに実行ファイル(exe)作りました。

リポジトリはこちら。

github.com

【仮想通貨 zaif】2017年 終値一覧表【確定申告】

【2018/01/22 09:30追記】

ツールの更新情報やバグ情報

以下に該当する方は、大変お手数ですがツールをダウンロードしなおして、CSVファイルの出力を再実行してください。

  • BTC建での取引を行った
  • zaif の正式なフォーマットでないと困る
    • 例:cryptactで確定申告しようとしている

zaif の BTC建での取引に関して、CSV フォーマットが異なっていたようです。

【2018/01/22 09:30追記おわり】

【2018/01/22 12:40追記】

あべさんから連絡頂いて、all.csv の出力にバグがあることが判明しました。週末までPC触れないので週末に急いで修正します。

xem_btc.csv などの個別ファイルは問題ありません。なお、all.csv は本ツールの独自ファイルになります。(なので困る方はあまり居ないとは思いますが

【2018/01/22 12:40追記おわり】

【2018/01/28 22:30追記】

列ズレのバグを修正しました。あわせて以下を変更しました。

  • all_jpy.csv, all_btc.csv ファイルを出力追加
  • config¥zaif.yamlaction_english オプション追加
    • 0 指定で「買い/売り」出力、 1 指定で「bid/ask」出力

【2018/01/28 22:30追記おわり】

何はともあれ使いたい

github 上にゴニョゴニョ書いてますが、イチイチ見てらんないって方も多いと思うので、ブログ上にも簡単にまとめておきます。基本的に github の README のコピペです。

実行ファイルをダウンロード

このZipファイル をダウンロードして、適当なフォルダに展開。画像は Mac ですが、こんな構成になっています。

f:id:ryota-17:20180117154957p:plain

API Keyを作る

Zaif の API Key のページに移動。リンクは怪しいから怖いって方は以下の手順で移動。

f:id:ryota-17:20180117154946p:plain f:id:ryota-17:20180117154947p:plain

二段階認証を設定している場合は入力。

f:id:ryota-17:20180117154950p:plain

二段階認証パス後に現れる Create Key を入力して Create。

名前は何でも良いです。 必要な権限は Info のみ。(勝手に取引されたり、出金されたりする恐れはないから安心ですね!)

f:id:ryota-17:20180117154951p:plain

作成に成功するとこんな感じ。取引履歴や通貨ペアが多い方は、同じ手順を繰り返して 複数の Key/Secret を作っておく ことをオススメします。

f:id:ryota-17:20180117154949p:plain

設定ファイルの変更

以下の2ファイルを変更します。

  • keys¥zaif.yaml : API Key/Secret を設定
  • config¥zaif.yaml : 対象通貨ペア を設定

f:id:ryota-17:20180117154957p:plain

API Key/Secret 設定

keys¥zaif.yaml をテキストエディタで開きます。

前段で作成した Key/Secret をコピーして貼り付けます

複数の Key/Secret を使う場合は、 必要数分だけ行数を増やして ください。その際、 必ず Key/Secret の順番が同じ になるようにしてください。

※1番目の Key、1番目の Secret がペア、2番目の Key、2番目の Secret がペア…という感じになっています。写真の例で言うと、key1 = f5..., secret1 = 04...、key2 = bb..., secret2 = 73... という感じですね。

f:id:ryota-17:20180117154955p:plain

通貨ペア 設定

config¥zaif.yaml をテキストエディタで開きます。

集計したい通貨ペアを探して 0 から 1 に変更します。

設定するのが面倒な方は all1 にすれば、全通貨ペアを対象に処理しますが、 zaif API の反応が遅いので時間がかかります。 きちんと設定するのをオススメします。

f:id:ryota-17:20180117154956p:plain

【2018/01/28 22:30追記】

action_english 設定

config¥zaif.yaml をテキストエディタで開きます。

取引種別を日本語(買い/売り)で出力する場合は action_english : 0 に、英語(bid/ask)で出力する場合は action_english : 1 に変更します。

※日本語(買い/売り) が旧フォーマット、英語(bid/ask) が新フォーマット になります。cryptact に急いでアップしたい方は 0 に設定してください。cryptact さんが対応完了したら 1 でやらないとダメになるかもなのでご注意ください。

【2018/01/28 22:30追記おわり】

CSV 作成!!

get_trade_csv.exe をダブルクリック!

実行完了後、results フォルダに CSV ファイルが出力されます。通貨ペアごと、JPY建て全取引、BTC建て全取引、全通貨をまとめたものがファイル出力されます。

念のため、取引履歴ページで内容に相違が無いか確認してください。

f:id:ryota-17:20180117154957p:plain

後片付け(API Key/Secret の 削除or無効化)

API を使った不正出金など発生しているので、Key/Secret は削除しておきましょう。

Zaif の API Key のページに移動して、二段階認証を実施。

チェックを外して Save するか、Disable を押して削除してください。

お疲れ様でした。

f:id:ryota-17:20180117154953p:plain

注意事項

  • 本ツールの利用は自己責任でお願いします。確定申告で使ったら、数年後に追徴課税来た、とか言われても責任は負いかねます。
    • その内、zaif さんが公式にCSVファイルの提供を開始すると思います。不安な方はそちらを待たれた方が良いです。
  • API を使った不正出金が発生しているようなので、ツール利用後は API Key/Secret の削除や無効化を必ず行ってください。
  • 「このツール使ったら資産とか情報とか抜かれるんじゃないの?」という方は、ソースコード眺めるなりして判断してください。ソースコード読めない(けど疑惑を感じる)という方は利用を見合わせてください。
    • 他ツールからコードを流用、かつ突貫で作ったのでコードは汚いと思います。温かく見守ってあげてください。
  • 作成者の環境でしか動作確認できていません。環境によってはエラーが発生して、上手く動かない可能性もあります。
    • エラーが発生した場合は、github上でissueなり作成するか、@stray_engineerまでご連絡ください。
  • 確認環境
    • macOS High Sierra v10.13.2
      • ruby v2.45.2p198
      • gem v2.6.13
      • Bundler v1.16.1
    • Windows 7 Pro SP1(64bit)
      • ruby v2.5.0p0
      • gem v2.7.4
      • Bundler v.1.16.1
  • 2018/01/16 19:57 現在、現物取引にしか対応しておりません。ご了承ください。
    • 信用取引のCSVフォーマットが分かれば、対応するかもしれません。

寄付/投げ銭 大歓迎

このツールのおかげで助かりました、 彼女ができました、 という方は@stray_engineerにチップ投げてくれたり、 以下のアドレスに寄付してくれたりすると大変喜びます。

  • BTC : 12Mg188NpkhtborkmW4gN36dxTTsdyvgSQ
  • BCH : 12EzzGLuSavWL8YsMZmmeSV3SSU7hQFqtL
  • ETH : 0x87b8ba3d2d43206ac7e911800e7b057f9598c27b
  • mona : MV9zR6DKhscyhMQYtZgj1x4MjhSnCqwdXT
  • XEM :
    • アドレス : NAGJG3-QFWYZ3-7LMI7I-QPSGQN-YADGSJ-ZGJRD2-DIYA
    • メッセージ : 5ea003c26771adde

【2018/01/22 09:30追記】

ツール利用者の声

ツール利用された方から「無事に取り出せた」との報告を何件か受けてます!中にはチップを下さった方も…ありがとうございます!

一部、上手く動作していない方もいるみたいです。連絡来てないだけで他にもいるかも…?

【2018/01/28 22:30追記】

その後、無事に動作できました!原因は log, results フォルダが無かったことでした。zip ファイル中に含めているので、展開すればできるはずなのですが…同じ原因で上手くいかないという方は手作業でフォルダを作成してください。

【2018/01/28 22:30追記おわり】

これからチャレンジ(するかも)な方もいらっしゃいます。

【2018/01/22 09:30追記おわり】

よもやま話

exe 作ろうと思ったきっかけ

この方の引用RTから。

いちおう、言い訳(?)させてもらうと昨日の公開前から「やっぱ実行ファイルじゃないとキツイよなー」ってのは気にしてました。

僕の心情や検証状況などはこの辺のスレッドを見てもらえると…

あと、Twitter には書いてないけど、どこの誰が作ったかも分からん実行ファイルを叩くのって怖くないですか?そういう意味でも、ソースコード公開してスクリプト実行ってのは、(ソース読める人には)ある程度の安心感はあるのかなーと。(って書くと後出し感が半端ないw

まずは neri を使ってみた

MOONGIFTさんの以下記事を見つけたので試したんだけど、上手くいかずに断念。

www.moongift.jp

結局 ocraを使ったらうまくいった

github.com

一番最初に ocra が検索に引っ掛かったんだけど、出て来る記事がどれも 2011年とか古い情報ばっかりで避けてました。

いくつかハマったものの、無事に exe ファイル作成できました。最初から ocra で試しておくべきだったなぁと後悔。

ちなみにハマった際に参考になった記事を残しておく。

覚え書き: ocra による Ruby の EXE 化

巳2已己のメモ帳 Ocraの豆知識 [環境変数:OCRA_EXECUTABLE 編]

Windows上のRubyでSSL接続時にcertificate verify failedが出る場合の対処 - Qiita

Windows の Ruby で SSL のエラーが出ないようにしたときのメモ。 · GitHub

exe化配布 | sgmmgsのブログ

Mac 版の実行ファイルについて

色々とやってみたけど上手くいかんかったので、Windows版を使うか、Rubyインストールからやるかで対応ください。

EasyWine を試したけど NG

www.tocolog.net

ここを見て、EasyWine でそのまま実行できると楽だなー、って試したのですがダメでした。

なんとなく、32bit/64bit 絡みの問題っぽかった、Windows で使ってる ruby が 64bit 版だからだと思う。rbenv 使ってゴニョゴニョやってみたけど、今度はライブラリの依存関係とかでエラーになり、ここまで時間かける話じゃねーなと諦めました。

Platypus も試したけど NG

neri についてつぶやいてたら、まさかのMOONGIFTさんからリプライがきました。普通にビックリしたw

Platypus | Sveinbjorn Thordarson | を教えてもらい、EasyWine の後に試してみたんだけど、Bundler 使ってる場合にどうすれば上手く動くのかが分からず。色々とやってみたけど、これも時間の都合で断念。