Python
Line
Bitcoin
自動取引
TICKER

Pythonで仮想通貨自動取引 (2) : Tickerの取得、監視、LINE通知

Tickerを取得する

内容は前回の板情報取得とほぼ同じだが、利用価値の高いTickerも取得してみよう。本コードでは、BTCが100万円を超えていたらLINE通知が飛ぶようにした。この様にTickerの監視により、ある条件を監視して、Lineを送ったり、メールを送ったり、または決済を実行する事ができるわけである。実際は、LOOPでプログラムを動作させ続けるのだが、その際は、一度アラート通知したら止めることを忘れない事。下の実行画面みたいになる。

本コードの動作には、LINEトークンが必要だが、tickerだけ取るのであれば、最後のif文以下を削除する。LINEトークンの取得方法はこちらを参照
@takeshi_ok_desuさんありがとうございました。

import json
import requests
import urllib.parse

def ticker():
    URL={'bitFlyer':'https://api.bitflyer.jp/v1/getticker?product_code=BTC_JPY',
    'Quoine':'https://api.quoine.com/products/5',
    'Zaif':'https://api.zaif.jp/api/1/ticker/btc_jpy',
    'Coincheck':'https://coincheck.com/api/ticker'}

    bf = requests.get(URL['Coincheck']).json()
    qo = requests.get(URL['Quoine']).json()
    zf = requests.get(URL['Zaif']).json()
    cc = requests.get(URL['Coincheck']).json()
    return (bf,qo,zf,cc)


def lineAlert(message):
    LINE_ACCESS_TOKEN="あなたのLineトークンを入力してください"
    url = "https://notify-api.line.me/api/notify"
    msg = urllib.parse.urlencode({"message":message})
    LINE_HEADERS = {'Content-Type':'application/x-www-form-urlencoded',"Authorization":"Bearer "+LINE_ACCESS_TOKEN}
    session = requests.Session()
    a=session.post(url, headers=LINE_HEADERS, data=msg)


### main ###
tic = ticker()
exchanger = ["bifFlyer","Quoine","Zaif","Coincheck"]
for x in range(4):
    print ("#### " + exchanger[x] + " ####")
    print (tic[x])
    print()

### 例えばcoincheckの最新取引価格が100万円超えたらLINEに通知するなど ###
### 実際の監視はLOOPさせる

if float(tic[3]['last']) > 1000000:
    message = "CoincheckでBTCが100万円を超えました。"
    lineAlert(message)

実行結果

#### bifFlyer ####
{'timestamp': 1511863694, 'bid': 1119894.0, 'volume': 65960.34815055, 'high': 1127000.0, 'last': 1120430.0, 'low': 1052200.0, 'ask': 1120430.0}

#### Quoine ####
{'volume_24h': 11236.88488046, 'symbol': '¥', 'currency': 'JPY', 'pusher_channel': 'product_cash_btcjpy_5', 'low_market_bid': 1050421.30606, 'last_price_24h': 1072701.0, 'name': ' CASH Trading', 'id': '5', 'fiat_minimum_withdraw': 1500.0, 'high_market_ask': 1113337.63801, 'last_traded_price': 1108383.22428, 'market_ask': 1109121.75066, 'taker_fee': 0.0, 'disabled': False, 'btc_minimum_withdraw': 0.02, 'last_traded_quantity': 0.63848609, 'product_type': 'CurrencyPair', 'maker_fee': 0.0, 'exchange_rate': 0.008989738053365464, 'base_currency': 'BTC', 'code': 'CASH', 'market_bid': 1108578.0, 'currency_pair_code': 'BTCJPY', 'indicator': -1, 'quoted_currency': 'JPY'}

#### Zaif ####
{'vwap': 1087418.7545, 'bid': 1120990.0, 'volume': 7851.7897, 'high': 1130000.0, 'last': 1120990.0, 'low': 1053840.0, 'ask': 1121490.0}

#### Coincheck ####
{'timestamp': 1511863694, 'bid': 1119894.0, 'volume': 65960.34815055, 'high': 1127000.0, 'last': 1120430.0, 'low': 1052200.0, 'ask': 1120430.0}

Lineアラート

IMG_62F751A1F90E-1 2.jpeg