としおの読書生活

田舎に住む大学院生であるとしおの読書記録を綴ります。主に小説や新書の内容紹介と感想を書きます。 読書の他にも旅行やパソコン関係などの趣味を詰め込んだブログにしたいです。

2018年08月

bot1


最近仮想通貨の取引を始めてみたのですがずっとチャートを見続ける時間がなかったり、感情に流されて売買を行ってしまうためもうけを出すことができません。

そこで、時間に縛られず感情にも流されずに売買を行うために仮想通貨の自動売買を行うための仮想通貨botを作ることにしました。

botの作成が上手くいけば働かなくてもお金が増えていくので幸せな気持ちになれます(笑)

今回はいくつかの記事に分けてbitFlyer(ビットフライヤー)のAPIとPythonを使ってビットコインを自動売買する仮想通貨botを作成していきます。



仮想通貨bot(ボット)とは

botとは、人間に代わって作業を行うコンピュータプログラムの総称です。

仮想通貨botとは、人間に代わって仮想通貨の取引を自動で行ってくれるコンピュータプログラムです。


仮想通貨の自動取引botのメリット

  • 感情に流されずトレードを行うことができる
  • 24時間いつでも自動で取引を行ってくれる
トレードを行っているとついついもう少し待てば値段が上がるかもしれないなどの感情に流されてしまうことがあります。botを使うことで自分が事前に決めたルールに従って取引を行ってくれるため感情に流されることがなくなります。

世の中には副業として仮想通貨の取引を行っている人が多いと思います。そういった人は常にチャートに張り付き続けることができず取引のタイミングを失ってしまいます。botを使えばいつでも自動的に取引を行ってくれるので仕事中などでも利益を出すことができます。



仮想通貨の自動取引botのデメリット

  • ルール通りの取引しかできない
  • プログラミングのスキルが必要
仮想通貨botを作るにはプログラミングの知識が必要です。ただ今の世の中プログラミングの方法を調べれば簡単にインターネットで見れるためこれはあまりデメリットではないのかもしれません。

仮想通貨botのメリットとして事前にルールを決めているので感情に流されることがないというものがありました。しかしそれを逆にいうとルール通りのことしかできないということになります。そのため取引先のサーバーが停まるなどの予想外のことが起こると対応することができません。



仮想通貨botを作成する(サンプルデータの収集)

いよいよ仮想通貨自動取引を行うための仮想通貨botを作成していきます。

しかし、いきなり自分の所持している仮想通貨を使用してbotの作成に挑むとみるみる仮想通貨が溶けていく未来しか見えないためまずは、仮想通貨botを作成するためにチャートのサンプルデータを集め、そのサンプルをもとにbotを作成していきます。

今回、私はbotを作成するためにPythonbitFlyerのAPIを使います。

Pythonの使い方が分からない人はこちらを、bitFlyerのAPIをPythonでしようする方法が分からない人はこちらを参考にしてください。


サンプルデータを収集するコードの例


今回は10秒ごとに最終取引価格を取得するという方法でサンプルデータを集めていきます。

コードは下記のようになります。
# -*- coding: utf-8 -*-
# bitflyerから10秒ごとに最終取引価格を集める

import pybitflyer # bitFlyerのAPIをPythonで使うために必要なライブラリ
import time
from datetime import datetime

def main(): api = pybitflyer.API(api_key="自分のAPI KEY" ,api_secret="自分のAPI Secret") # api keyの取得(pybitflyer.API()でも良い))
  raws = 0 # 最終取引価格を格納
  
  while True:
    # 10秒ごとに稼働
    if int(datetime.now().strftime('%S'))%10 == 0:
      # プロットデータの更新
      tick = api.ticker(product_code = "BTC_JPY")
      raws = tick['ltp']
      now = datetime.now()
# 取得時刻と最終取引価格を表示する print('{}-{}-{}\t{}:{}:{}\t{}'.format(now.year, now.month, now.day, now.hour, now.minute, now.second,raws)) # 7秒後まで休憩(プログラムが無駄に走る時間を短くするため) time.sleep(7) if __name__ == '__main__': main()

if int(datetime.now().strftime('%S'))%10 == 0: の赤字の10の値を変更することで最終取引価格を取得する間隔を変更することができます。その部分を変更する際は time.sleep(7) の赤字の7の値も変更してください。取得したい秒数の間隔より大きい値だと上手くデータを集めることができません。



収集したサンプルデータをグラフ化する


収集したサンプルデータをExcelでグラフ化してみました。グラフもPythonを使って描画してもよかったのですがあまり意味がないので今回はExcelを使います。

今回はとりあえず約一日分(一日分には少し足りない)をグラフ化しました。
bot2


グラフを見るとしっかりとサンプルデータが収集できているみたいです。



最後に

本記事では、仮想通貨bot作成の第一段階としてサンプルデータの集め方を書きました。

次からはこのサンプルデータをもとに仮想通貨botを本格的に作成していきます。

bot1

今回はPythonを使ってbitFlyerのAPIを触ってみたので基本的な使い方をまとめてみました。

PythonをインストールしていることとbitFlyerの口座を作成することを前提として記事を書いていきます。

まだPythonをインストールしていない人はこちらの記事を参考にしてください。

実行環境
  • Python3.7.0
  • Windows10 64bit


PythonでbitFlyerのAPIを使用するためのライブラリのインストール

PythonでbitFlyerのAPIを使用するにはpybitflyerというライブラリをインストールする必要があります。

pipで簡単にインストールできるのでサクッとインストールしてしまいましょう
pip install pybitflyer
のコマンド一発でインストールできます。


pybitflyerを使ってみる

pybitflyerが無事インストールできたら色々といじってみましょう。


1.自分のAPI KEYを確認する


bitFlyerのAPIを使うにはAPI  KEYが必要です。

API KEYをはbitFlyerの口座を持っていれば誰でも取得することができます。まず最初に下記のページからbitFlyer Lightningのページにログインしてください。

https://lightning.bitflyer.com/

ログインしたら左上のメニューバーをクリックしAPIというところをクリックしてください。

bitapi1


ページが遷移すると新しいAPI キーを追加というボタンがあるのでそれをクリックしてください。

そうするとAPI キーを発行することができます。このAPI キーは他人に教えないようにしましょう。もし他人にばれてしまうと勝手に自分の口座のビットコインなどが送金されてしまう恐れがあります。



2.Bitcoinレートを取得


まずは基本的な情報を取得してみる。
import pybitflyer

api = pybitflyer.API() # apiキーの認証
ticker = api.ticker(product_code = "BTC_JPY") # bitcoinのレートを取得
print(ticker) # プリント
たった4行のコードで簡単に情報を取得できる。

取引を行わない場合は自身のapiキーを認証する必要はないみたいです。

トレードを行うのに必要な情報は best_bid(最高買い価格)、best_ask(最低売り価格)、ltp(取引価格)、timestamp かな。それらのみを取得してみる。
import pybitflyer

api = pybitflyer.API() # apiキーの認証

while True:
  ticker = api.ticker(product_code = "BTC_JPY") # bitcoinのレートを取得
  data = [ticker['best_bid'], ticker['best_ask'], ticker['ltp'], ticker['timestamp']] # 必要な情報だけ取り出す
  print(data) # プリント

実行結果は以下のようになります。

bitapi2

仮想通貨botを作る際にサンプルデータを集めるのなら時間間隔をあけて情報を取得したほうが良いみたいだ。


3.Bitcoinを売買する


ビットコインを売買するコードは以下のようになる。
api = pybitflyer.API(api_key="自分のAPI KEY" ,api_secret="自分のSecret KEY") # apiの認証
# 成行買い注文
api.sendchildorder(product_code="BTC_JPY", child_order_type="MARKET", side="BUY", size="ビットコインの取引量", minute_to_expire=10, time_in_force="GTC")
# 成行売り注文
api.sendchildorder(product_code="BTC_JPY", child_order_type="MARKET", side="SELL", size="ビットコインの取引量", minute_to_expire=10, time_in_force="GTC")
# 指値買い注文
api.sendchildorder(product_code="BTC_JPY", child_order_type="LIMIT", price="取引したい価格", side="BUY", size="ビットコインの取引量", minute_to_expire=10, time_in_force="GTC")
# 指値売り注文
api.sendchildorder(product_code="BTC_JPY", child_order_type="LIMIT", price="取引したい価格"
, side="SELL", size="ビットコインの取引量", minute_to_expire=10, time_in_force="GTC")
売買を行う際は自身のAPI KEYの認証を行う必要がある。

priceには自分が取引を行いたい価格を入力し, sizeには取引するビットコインの量を入力すれば売買を行うことができる。



最後に

pybitflyerの基本的な操作方法について使い方を説明したが最低限これだけの操作方法が分かっていれば仮想通貨botを作る際に困らないのではないのだろうか。

さらに詳しくAPIの扱い方を知りたいのならばbitflyerの公式サイトを参考にするといいと思う。

koto1


ゲーミングPCでKotoのマイニングを始めてから一ヶ月がたちました。

Kotoをマイニングしているという記事はよく見るがどれぐらい採掘できるかという記録を書いた記事がなかったので2018年7月の約一ヶ月でどれぐらい採掘できたのか記そうと思います。

今後Kotoをマイニングする人の参考になれば幸いです。



マイニング環境
  • CPU:corei7-930
  • GPU:GeForce GTX 1060 6GB
CPUは温度が上がりすぎないように最大のプロセッサの状態を75%ほどに抑えています。

GPUは初期設定のまま特にいじっていないのでオーバークロック(OC)はしていません。

マイニングプールはKPOOLを利用しています。



2018年7月のKoto(コト)マイニング記録

一ヶ月で約5150Koto採掘することができました。

Koto_report


ゲームをしている時はマイニングをやめたり、作業をしている時はGPUのみでマイニングを行っていたりしていたため常にマイニングし続けるのであればさらに採掘量が増えることが期待できます。

私の最初の見積もりでは月に4000Kotoほどマイニングできたらいいなと思っていたので思ったよりたくさん掘れていて嬉しかったです。

できてからまだ日が浅い仮想通貨なだけあってbitzeny(ビットゼニー)やbitcoin(ビットコイン)と比べるとたくさん掘れるのでマイニングしていて楽しいな。



今後の方針

とりあえず7月は思ったよりも掘れたので8月もKotoのマイニングを続けていこうと思います。

先月はGPUの電源効率をあまり考えずにマイニングをしていたので今月はAfterburnerで調整しつつ効率よく採掘できる設定を見つけたいと思います。

また今月できるか分からないがGPUをもう一台増築したいと考えています。GTX 11xx が発売されたら増築しようかな…。



最後に

本記録を見てKotoマイニングをはじめたいと思った人は下の記事にマイニングの始め方をまとめているので参考にしてみてください。

CPUでマイニングできるKotoをマイニングしてみた。

Kotoは現在上場していませんが今後再上場して価値があがる仮想通貨であると踏んでいるので今のうちに集めてみてはどうでしょうか。

↑このページのトップヘ