仮想通貨の暴落が怖くて不眠症になったので、科学の力を持ってこれに対抗した | PyBitFlyer + Pandas + Cron で自動売買
前回までのあらすじ
仮想通貨のオラオラなボラボラに振り回されていた私は、ビットコインの暴騰暴落を見ては一喜一憂するだけの廃人生活を送っていた。
やがて、このままではいけない・・・と、真っ当に生きるために自動売買システムに手を出しはじめる。
しかしテクニカル指標を計算するために時系列データを取得しようとした時点で、BTCの為替データが高くて買えず、泣く泣く有給をとってデイトレードに勤しんだのであった・・・
今回のあらすじ
サーバーを使わず自分のPCから、定期的に為替データを取得して、csvに保存する簡易プログラムを書く。
PyBitFlyerで為替情報を取る
pybitflyerをpipして、BitFlyer APIからBTC/JPYを取得する
import pybitflyer api = pybitflyer.API(api_key="[KEY]", api_secret="[SECRET]") tick = api.ticker(product_code="BTC_JPY") #BTC_JPYを選択 time = datetime.now().strftime("%Y/%m/%d %H:%M:%S") #apiにも時刻あるけど、扱いやすいのでこっちにする ask = tick["best_ask"] bid = tick["best_bid"] mid = ( ask + bid ) / 2 #ASKとBIDの中間値をとる
Pandasでcsvにデータを追加していく
import pandas as pd df = pd.read_csv('jpyeth.csv') #よむ row = pd.Series([time,mid], index=df.columns) #行つくる df = df.append(row,ignore_index=True) #行たす df.to_csv('jpyeth.csv',index=None) #かく
テクニカル指標を実装
とりあえずPandasで標準偏差とか簡単に計算できるので
ボリンジャーバンドの-2σに触れたら損切るみたいなチキンなロジックを組みました。
決済もpybitflyerで一瞬です。
tetsuyaimagawa.hatenablog.com
cronで5分毎に自動実行させる
↓のような分を一文含むfile.txtを作って
*/5 * * * * /usr/local/bin/python3 /Users/hoge/retrieveBtcJpyRate.py
$ crontab file.txt #読み込む $ crontab -l #読まれたか確認する $ crontab -e #これで直接編集できるが、crontab -r を押すリスクがあるのでやめましょうとのこと
file.txtは読み込み後消してもOKです。
これで5分毎に自動実行です。
結果
データは取得できました。
-2σに触れて損切りされてたらたまらないので、一旦コメントアウトしてますが、動作確認済みです…。
if df.tail(1)["jpybtc"].iloc[0] > bolbtm: print("まだ売っちゃだめだよおお") else: print("売るよお") """ api.sendchildorder(product_code="BTC_JPY", child_order_type="MARKET", side="SELL", size=0.001, minute_to_expire=10000, time_in_force="GTC" ) """
まとめ
多少下がったとしても、まぁまだ上がると思うので(神話)
簡単に決済されてしまっては困ります。
漢は黙って
ズッホ