Travel of Life

kolife

仮想通貨からハワイまで気ままなブログ

MENU

弱さが強さになる時

Why me?

前回に引き続き、起業のアイディアについて「Why me? なぜあなたなのか?」を考えてます。
最近は一人で考えても堂々巡りなので、人に聞いてもらって、意見をもらって一歩進んでは、戻ってを繰り返しています。

ただ一人で考えるよりも、自分では気付かない視点や強みを発見することが出来るので人に聞いてもらう、壁打ちになってもらうのは結構良い感触です。

f:id:kotravel:20180531235809j:plain

弱さが強さになる時

人に話すのが良いと分かってから、あるアイディアが湧きました。


「この悩みをもっと多くの人に知ってもらって、色々アドバイスもらった方が良いのではないか?」


そう思い立ち、
オンライン対話提供しているFacebookのグループにその悩みと、それについて対話しませんか?
と思い切って投げかけてみました。

そのグループで僕の事を知っている人は少なく、人も集まるか分かりませんでしたが、
蓋を開けて見ると、なんと参加者が5人!

有難い!!

実際にその人達と先ほど対話をしてきました。
その熱量が冷めないうちに今書いてます。

その対話では、Why me?の探し方のヒントになりそうなアドバイスもたくさん貰えました。

その中でも一番心に響いた言葉が

「koさんのような悩んでる弱みをさらけ出せる事が、強みだと思う」
「こうやって悩みをシェアしてくれたから、みんなkoさんの事を応援したくなる」
「自分では弱みだと思ってる隠したい事が実は強みで、それをさらけ出せるのがkoさんらしさだよ」



弱さが強さになる



すーっと心に落ちて来ました
弱さが強さになる時ってこんな事か!!
悩みを抱えてた自分の中からどんどん嬉しさが増してきました。

確かに悩みをさらけ出すのは、勇気が必要で、怖いけど、
それをする事で応援してくれる人や力になってくれる人がいて、
今、こんな素晴らしい経験をしたから、もっと自分の弱みや素を見せていこうと思います。

そうすると、いずれWhy me?も見えて来そうな気がする。

最近の頭が痛いこと 〜起業の企画〜

ご無沙汰です。
久々の更新です。

更新していない間に近況変化が色々ありまして、
まずは新卒から7年働いた会社を辞めて、今起業のために学校に通ってます。


そこで起業の企画を練り上げるわけですが、これが思った以上に難しい。


会社で働いていた時はアイディアマンと呼ばれる事もあり、
アイディア出しや着想に自信はあったのですが、
いざ、起業のために考えると頭が痛くなる。

いつも使ったことのない後頭部の右後ろがきゅーっと痛くなります。

起業の企画を考えるためにはある4つの項目を考えると良い企画になるらしいのですが、
その4つの項目とは

・だれの課題? Who?
・なんの課題? What?
・どうやって解決する? How?
・なんであなたがやる? Why me?

出てきたアイディアをこれに当てはめて考えるとまぁ何も出てこない。
結局自分が今まで出してたアイディアというのは、
あったら良いけど、誰の何も解決してないアイディアであって、
そんなものは無いものと一緒だと気づいた。

さらに「なんであなたがやる?」の部分が本当に難しい。
別に私じゃなくても良いものは、起業しても結局行き詰った時に挫折するらしく、
信念や情熱があり、私がやるんだ!という強い意思が必要。
そんな強い意思が、一生付き合う意思がまだ見つからない。
本当にしたいのはなんだ?なんで私がやるのか?堂々巡りです。


Why me?

Why me?

Why me?

・・・頭が痛い。。

ただこれは何かを生むための苦しみだと思って、もがいてみます。

新しいお金のカタチ『お金2.0』 著書 佐藤航陽

タイムバンクなどを運営しているメタップス 佐藤さんの新書です。
経済と社会も進化してるんだなと考えさせられる面白い本でした。

お金の正体をお金のルーツから分かりやすく解説されてます。
価値の保存、尺度、交換が目的であったお金がいつのまにか、お金がお金を生む金融や資産に比重が高まっていき、実際世の中に流通しているお金の流れの9割近くは資産経済(資産家や金融マンなどお金からお金を生み出す経済)の方で生まれているようです。

お金を増やすことが目的に変わり、手段が目的になってしまっています。

そしてNPOによる社会貢献や、地域活動のような「お金にはなりにくい価値」も存在する中で、資本主義が考える価値があるものと、世の中の人の考える価値のあるものの間に大きな溝が出来ており、それが多くの人が疑問を持っている状態であり、資本主義が限界と言われてる理由です。


また自然界の生態系のようなルールは社会に普及し上手くいくとの見方は面白く、その点からもビットコインは優れていると感じました。

管理者がいないにも関わらず、各々が利益を追求した結果、ネットワークが健全になっています。そんな有機的なシステムが今後増えていくでしょう。

そしてテクノロジーの進化によって、分散化トークンエコノミーが進み、曖昧な「信用」「好意」「時間」といったものが価値として可視化されていきます。資本主義に対して価値主義と呼ぶそうですが、今後はお金ではなく、そうした本当の価値が重要になっていくはずです。


最後に自分も常々考えてる自立分散型社会

ブロックチェーン・IoT・AIが絡むと勝手に回り続ける経済圏が作ることが出来るのも再確認出来ました。これが従来のビジネスを根本的に変えていく可能性が高いです。

新しいお金のカタチが少し見えてきます。
次の時代に興味がある方オススメです。

お金2.0 新しい経済のルールと生き方 (NewsPicks Book)

お金2.0 新しい経済のルールと生き方 (NewsPicks Book)

【マイニング】10月の収益公開

BTCが80万円突破しましたね。今回のハードフォークはかなり懸念を感じてるんで、税金の算出含めて一度全て利確したんですが、裏目に出ました。しょぼん

マイニングで地味に取り返します。

 

はい、それではマイニング10月の収入です。

7月 0.055BTC

8月 0.039BTC

9月 0.037BTC 

10月 0.017BTC (約13600円)

累計 0.148BTC (約123000円)

 

f:id:kotravel:20171105105857j:image

電気代が約5290円なので今月の利益は8000円程ですね。

全然掘れてないかと思ったらBTCが高騰してるので利益はまぁいい感じですね。

累計も先月から倍近くになってるし、BTCの価格はホント誰も予想できないですね。

 

マシンがちょこちょこ止まるので原因調査しなきゃなーと思いつつ、後回しです。

年末時間があれば調査してみます。

 

以上、【マイニング】10月の収益公開でした。

 

APIを使ってビットコインを自動売買 〜簡単な自動売買編〜

こんにちは。koです。
前回に引き続きAPIを使った簡単な自動売買を作ってみたいと思います。
f:id:kotravel:20170921120015j:plain


環境設定

OS Mac Sierra 10.12.6
言語 Python3.6
Editer PyCharm
取引所 Zaif

アルゴリズム

1.BTC、JPYの残高取得
2.板情報取得
3.BTC購入価格を決定
3.BTC購入オーダー
4.約定するまで待つ(最大50秒)
5.約定しなかったらオーダーキャンセル、1へ戻る
6.約定したら7へ
7.BTC、JPY残高取得
8.BTCが売却数量に達してる、且つ購入出来ていれば、売却処理する
9.BTC購入価格に利益分を乗せて売却オーダー
10.約定するまで待つ(最大50秒)
11.約定しなかったらオーダーキャンセル

1〜11を繰り返す

フローチャートで書きたいとこですが、
はてなでの書き方がわからないのでとりあえず箇条書きで書いてみました。

単純な自動売買です。

ソースコード

import hashlib
import hmac
import requests
import urllib.parse
import datetime
import time

#初期設定
nonce = int((datetime.datetime.today() - datetime.datetime(2017,1,1)).total_seconds())*10

#取引所のパラメータ
order_min_size  = 0.0001    #BTC数量最小値
order_digit     = 4         #BTC数量の桁数
fee_rate        =0.01       #取引手数料のレート(%)

#取引パラメータ
buy_unit        =0.0001     #購入単位
profit          =100        #価格差




count = 0

while True:

    count +=1
    print("Log : Trade count={0}".format(count))
    cancel_flag = False

    #ZaifのプライベートAPIリクエストを送信する関数
    def zaifPrivateApi(i_params):
        API_KEY = " "
        API_SECRET = ""
        API_URL = "https://api.zaif.jp/tapi"
        params = urllib.parse.urlencode(i_params);
        s = hmac.new(bytearray(API_SECRET.encode('utf-8')),digestmod=hashlib.sha512)
        s.update(params.encode('utf-8'))
        headers = {'key':API_KEY,'sign':s.hexdigest()}
        response = requests.post(API_URL,data=params,headers=headers)
        return response


    nonce = nonce + 1
    #口座残高取得 BTC JPY
    z = zaifPrivateApi({"method":"get_info","nonce":nonce})
    r = z.json()
    btc_balance = r["return"]["deposit"]["btc"]
    jpy_balance = r["return"]["deposit"]["jpy"]
    print('Log : BTC founds:'+ str(btc_balance))
    print('Log : JPY founds:'+ str(jpy_balance))

    #板情報を取得,BTC購入価格の決定
    r = requests.get('https://api.zaif.jp/api/1/depth/btc_jpy')
    ob = r.json()

    #購入価格を決定 bid(買い板)の先頭
    buy_price = ob["bids"][0][0]
    print('Log : BTC Buy price:'+ str(buy_price))

    buy_amount = 0.0001


    #注文。BTCの場合はpriceを整数にする
    nonce = nonce + 1
    z = zaifPrivateApi({
        "method": "trade",
        "currency_pair": "btc_jpy",
        "price": int(buy_price),
        "action": "bid",
        "amount": buy_amount,
        "nonce": nonce})
    r = z.json()
    #print(r)
    oid = r['return']['order_id']
    #pprint(r)
    print("Log : Buy order BTC {0} x {1}".format(int(buy_price),buy_amount))
    print("Log : Buy oid={0}".format(oid))

    #注文がサーバーで処理されるまで少し待つ
    time.sleep(5)

    #注文オーダー状況確認


    nonce = nonce + 1
    z = zaifPrivateApi({"method": "active_orders",
                        "currency": "btc_jpy",
                        "nonce": nonce})

    r = z.json()
    active_order = r['return']
    print("Log : Buy active_order={0}".format(active_order))

    # さらに最大50秒間、注文が約定するのを待つ
    for i in range(0,10):
        nonce = nonce + 1
        z = zaifPrivateApi({"method": "active_orders",
                            "currency": "btc_jpy",
                            "nonce": nonce})

        r = z.json()
        active_order = r['return']
        print("Log : Buy active_order={0}".format(active_order))

        #板情報も取得
        r = requests.get('https://api.zaif.jp/api/1/depth/btc_jpy')
        ob = r.json()
        board=(ob["bids"][0][0])
        print("Log : Now board={0}".format(board))


        if active_order == {}:
            active_order = None
            break
        print("Log : Buy Wait")
        time.sleep(5)
    #注文が残っていたらキャンセルする.
    if active_order != None:
        nonce = nonce + 1
        z = zaifPrivateApi({"method": "cancel_order",
                            "order_id": oid,
                            "nonce": nonce})
        r = z.json()
        print("Log : Buy canceled! detail {0}".format(r))
        print("Log : Buy canceled! oid={0}".format(oid))
        time.sleep(5)
        cancel_flag = True
    else:
        print("Log : Buy completed! oid={0}".format(oid))


    #口座残高取得
    nonce = nonce +1
    z = zaifPrivateApi({"method":"get_info","nonce":nonce})
    r = z.json()
    btc_balance = r["return"]["deposit"]["btc"]
    jpy_balance = r["return"]["deposit"]["jpy"]
    print('Log : BTC founds:'+ str(btc_balance))
    print('Log : JPY founds:'+ str(jpy_balance))

    time.sleep(5)


    if btc_balance > 0.0001 and cancel_flag == False:
        #BTC売却する
        sell_price = buy_price + profit
        sell_amount = buy_amount

        print("Log : Sell order BTC {0} x {1}".format(int(sell_price),buy_amount))
        nonce = nonce + 1
        z = zaifPrivateApi({
            "method": "trade",
            "currency_pair": "btc_jpy",
            "price": int(buy_price),
            "action": "ask",
            "amount": sell_amount,
            "nonce": nonce})
        #print(z.status_code)
        r = z.json()
        sell_oid = r['return']['order_id']
        #pprint(r)
        print("Log : Sell oid={0}".format(sell_oid))
        time.sleep(10)

        nonce = nonce + 1
        z = zaifPrivateApi({"method": "active_orders",
                            "currency": "btc_jpy",
                            "nonce": nonce})

        r = z.json()
        active_order = r['return']
        print("Log : Sell active_order={0}".format(active_order))


        for i in range(0,10):
            nonce = nonce + 1
            z = zaifPrivateApi({"method": "active_orders",
                                "currency": "btc_jpy",
                                "nonce": nonce})

            r = z.json()
            active_order = r['return']
            print("Log : Sell active_order={0}".format(active_order))

            # 板情報も取得
            r = requests.get('https://api.zaif.jp/api/1/depth/btc_jpy')
            ob = r.json()
            board = (ob["bids"][0][0])
            print("Log : Now board={0}".format(board))

            if active_order == {}:
                active_order = None
                break
            print("Log : Sell Wait")
            time.sleep(5)
        #注文が残っていたらキャンセルする.
        if active_order != None:
            nonce = nonce + 1
            z = zaifPrivateApi({"method": "cancel_order",
                                "order_id": sell_oid,
                                "nonce": nonce})
            r = z.json()
            print("Log : Sell canceled! detail {0}".format(r))
            print("Log : Sell canceled! oid={0}".format(sell_oid))
            time.sleep(5)
        else:
            print("Log : Sell completed! oid={0}".format(sell_oid))


    else:
        #print("Log :Error! Short of btc_balance={0}".format(btc_balance))
        print("Log :Trade None")

    time.sleep(10)

使い方

API_KEY、API_SECRETに取得したキーを入力してください。
API_KEY = " "
API_SECRET = ""

取引パラメータを適宜変更してください。
デフォルトは下記のようになってます。
#取引パラメータ
buy_unit =0.0001 #購入単位
profit =100 #価格差

止める時は手動で
control + Cなどお使いのエヂィタコマンドで止めてください。

Log

こんな感じでLogが出力されます。

Log : Trade count=1
Log : BTC founds:9e-05
Log : JPY founds:796.622
Log : BTC Buy price:482265.0
Log : Buy order BTC 482265 x 0.0001
Log : Buy oid=253934175
Log : Buy active_order={'253934175': {'currency_pair': 'btc_jpy', 'action': 'bid', 'amount': 0.0001, 'price': 482265.0, 'timestamp': '1506848321', 'comment': ''}}
Log : Buy active_order={'253934175': {'currency_pair': 'btc_jpy', 'action': 'bid', 'amount': 0.0001, 'price': 482265.0, 'timestamp': '1506848321', 'comment': ''}}
Log : Now board=482540.0
Log : Buy Wait
Log : Buy active_order={'253934175': {'currency_pair': 'btc_jpy', 'action': 'bid', 'amount': 0.0001, 'price': 482265.0, 'timestamp': '1506848321', 'comment': ''}}
Log : Now board=482405.0
Log : Buy Wait
Log : Buy active_order={'253934175': {'currency_pair': 'btc_jpy', 'action': 'bid', 'amount': 0.0001, 'price': 482265.0, 'timestamp': '1506848321', 'comment': ''}}
Log : Now board=482455.0
Log : Buy Wait
Log : Buy active_order={'253934175': {'currency_pair': 'btc_jpy', 'action': 'bid', 'amount': 0.0001, 'price': 482265.0, 'timestamp': '1506848321', 'comment': ''}}
Log : Now board=482460.0
Log : Buy Wait
Log : Buy active_order={'253934175': {'currency_pair': 'btc_jpy', 'action': 'bid', 'amount': 0.0001, 'price': 482265.0, 'timestamp': '1506848321', 'comment': ''}}
Log : Now board=482465.0
Log : Buy Wait
Log : Buy active_order={'253934175': {'currency_pair': 'btc_jpy', 'action': 'bid', 'amount': 0.0001, 'price': 482265.0, 'timestamp': '1506848321', 'comment': ''}}
Log : Now board=482585.0
Log : Buy Wait
Log : Buy active_order={'253934175': {'currency_pair': 'btc_jpy', 'action': 'bid', 'amount': 0.0001, 'price': 482265.0, 'timestamp': '1506848321', 'comment': ''}}
Log : Now board=482600.0
Log : Buy Wait
Log : Buy active_order={'253934175': {'currency_pair': 'btc_jpy', 'action': 'bid', 'amount': 0.0001, 'price': 482265.0, 'timestamp': '1506848321', 'comment': ''}}
Log : Now board=482830.0
Log : Buy Wait
Log : Buy active_order={'253934175': {'currency_pair': 'btc_jpy', 'action': 'bid', 'amount': 0.0001, 'price': 482265.0, 'timestamp': '1506848321', 'comment': ''}}
Log : Now board=482845.0
Log : Buy Wait
Log : Buy active_order={'253934175': {'currency_pair': 'btc_jpy', 'action': 'bid', 'amount': 0.0001, 'price': 482265.0, 'timestamp': '1506848321', 'comment': ''}}
Log : Now board=482850.0
Log : Buy Wait
Log : Buy canceled! detail {'success': 1, 'return': {'order_id': 253934175, 'funds': {'jpy': 796.622, 'btc': 9e-05, 'xem': 0.0, 'mona': 0.0, 'BCH': 0.00199, 'PEPECASH': 12000.999}}}
Log : Buy canceled! oid=253934175
Log : BTC founds:9e-05
Log : JPY founds:796.622
Log :Trade None
Log : Trade count=2
Log : BTC founds:9e-05
Log : JPY founds:796.622
Log : BTC Buy price:482920.0
Log : Buy order BTC 482920 x 0.0001
Log : Buy oid=253934578
Log : Buy active_order={'253934578': {'currency_pair': 'btc_jpy', 'action': 'bid', 'amount': 0.0001, 'price': 482920.0, 'timestamp': '1506848406', 'comment': ''}}
Log : Buy active_order={'253934578': {'currency_pair': 'btc_jpy', 'action': 'bid', 'amount': 0.0001, 'price': 482920.0, 'timestamp': '1506848406', 'comment': ''}}
Log : Now board=483060.0
Log : Buy Wait
Log : Buy active_order={'253934578': {'currency_pair': 'btc_jpy', 'action': 'bid', 'amount': 0.0001, 'price': 482920.0, 'timestamp': '1506848406', 'comment': ''}}
Log : Now board=483070.0
Log : Buy Wait
Log : Buy active_order={'253934578': {'currency_pair': 'btc_jpy', 'action': 'bid', 'amount': 0.0001, 'price': 482920.0, 'timestamp': '1506848406', 'comment': ''}}
Log : Now board=483125.0
Log : Buy Wait
Log : Buy active_order={'253934578': {'currency_pair': 'btc_jpy', 'action': 'bid', 'amount': 0.0001, 'price': 482920.0, 'timestamp': '1506848406', 'comment': ''}}
Log : Now board=483120.0
Log : Buy Wait
Log : Buy active_order={}
Log : Now board=482865.0
Log : Buy completed! oid=253934578
Log : BTC founds:0.00019
Log : JPY founds:748.33
Log : Sell order BTC 483020 x 0.0001
Log : Sell oid=253934780
Log : Sell active_order={'253934780': {'currency_pair': 'btc_jpy', 'action': 'ask', 'amount': 0.0001, 'price': 482920.0, 'timestamp': '1506848441', 'comment': ''}}
Log : Sell active_order={'253934780': {'currency_pair': 'btc_jpy', 'action': 'ask', 'amount': 0.0001, 'price': 482920.0, 'timestamp': '1506848441', 'comment': ''}}
Log : Now board=482855.0
Log : Sell Wait
Log : Sell active_order={'253934780': {'currency_pair': 'btc_jpy', 'action': 'ask', 'amount': 0.0001, 'price': 482920.0, 'timestamp': '1506848441', 'comment': ''}}
Log : Now board=482855.0
Log : Sell Wait
Log : Sell active_order={'253934780': {'currency_pair': 'btc_jpy', 'action': 'ask', 'amount': 0.0001, 'price': 482920.0, 'timestamp': '1506848441', 'comment': ''}}
Log : Now board=482830.0
Log : Sell Wait
Log : Sell active_order={'253934780': {'currency_pair': 'btc_jpy', 'action': 'ask', 'amount': 0.0001, 'price': 482920.0, 'timestamp': '1506848441', 'comment': ''}}
Log : Now board=482540.0
Log : Sell Wait
Log : Sell active_order={'253934780': {'currency_pair': 'btc_jpy', 'action': 'ask', 'amount': 0.0001, 'price': 482920.0, 'timestamp': '1506848441', 'comment': ''}}
Log : Now board=482510.0
Log : Sell Wait
Log : Sell active_order={'253934780': {'currency_pair': 'btc_jpy', 'action': 'ask', 'amount': 0.0001, 'price': 482920.0, 'timestamp': '1506848441', 'comment': ''}}
Log : Now board=482510.0
Log : Sell Wait
Log : Sell active_order={'253934780': {'currency_pair': 'btc_jpy', 'action': 'ask', 'amount': 0.0001, 'price': 482920.0, 'timestamp': '1506848441', 'comment': ''}}
Log : Now board=482515.0
Log : Sell Wait
Log : Sell active_order={'253934780': {'currency_pair': 'btc_jpy', 'action': 'ask', 'amount': 0.0001, 'price': 482920.0, 'timestamp': '1506848441', 'comment': ''}}
Log : Now board=482510.0
Log : Sell Wait
Log : Sell active_order={'253934780': {'currency_pair': 'btc_jpy', 'action': 'ask', 'amount': 0.0001, 'price': 482920.0, 'timestamp': '1506848441', 'comment': ''}}
Log : Now board=482535.0
Log : Sell Wait
Log : Sell active_order={'253934780': {'currency_pair': 'btc_jpy', 'action': 'ask', 'amount': 0.0001, 'price': 482920.0, 'timestamp': '1506848441', 'comment': ''}}
Log : Now board=482535.0
Log : Sell Wait
Log : Sell canceled! detail {'success': 1, 'return': {'order_id': 253934780, 'funds': {'jpy': 748.33, 'btc': 0.00019, 'xem': 0.0, 'mona': 0.0, 'BCH': 0.00199, 'PEPECASH': 12000.999}}}
Log : Sell canceled! oid=253934780

問題点、課題

・購入タイミングが点でしか見れない
・購入後、売却出来ないとBTCが増え続ける
・コードが長い 関数使いたい

やっぱり最終的なゴールは谷で買って、山で売れるようなアルゴリズムにしたいですね〜
チャート画像をディープラーニングで使えないかな〜と妄想してます。
あとはbitFlyerやCoincheakも出来るようにすればアービトラージも出来そうですね。
これもアルゴリズムが肝だと思いますが。

最後に

・プログラミング初心者が作ったものなので、かなりコード雑です。ご了承ください。
・プログラムの使用は自己責任でお願いいたします。

【マイニング】9月の収益公開

こんにちは。koです。
9月は中国の仮想通貨、ICOの規制で暴落しましたが、
最近はBTC、ETEの価格が少し戻ってきましたね。

それでは9月の収益です。

7月 0.055BTC

8月 0.039BTC

9月 0.037BTC (約17760円)

累計 0.131BTC(約64000円)

今月からデスクトップのPCも稼働させることにしました。
微力ですが、チリも積もればというやつです。



累計のウォレットとまだ振り込まれてない分が8mBTCあります。


電気代が4635+2740=7375円

利益は約10000円ですね。
マシンがたまに止まってることがあったので、原因の1つはそれかもしれません。
うーん、原因不明のままですが、長く止まることがあれば見直してみます。

なんか段々利益が圧迫されてますがまだまだ続ける予定です。

以上、【マイニング】9月の収益公開でした!

APIを使ってビットコインを自動売買 〜味見編〜

こんにちは。koです。

今回はAPIを使ったビットコインの自動売買/トレードを構築したいと思います。
まずは味見でAPIを使って情報取得ビットコインを売買してみます。

f:id:kotravel:20170921120015j:plain

環境設定

OS Mac Sierra 10.12.6
言語 Python3.6
Editer PyCharm
取引所 Zaif

取引所は手数料が-0.001%のZaifを使ってみます。

公開API

仮想通貨取引所のAPIには一般的に公開APIとプライベートAPIが存在します。
公開APIは、価格情報、取引所全体の取引内容といった個人認証が不要の情報を提供する物になります。

ビットコイン価格取得

まずは公開APIのビットコイン価格を取得してみます。

import requests
from pprint import pprint

r = requests.get('https://api.zaif.jp/api/1/depth/btc_jpy')
json = r.json()
pprint(json)

ログはこちら

{'asks': [[432600.0, 0.0504],
          [432740.0, 0.021],
          [432750.0, 0.081],
         (省略)
 'bids': [[432195.0, 0.0829],
          [432180.0, 0.05],
          [432110.0, 0.005],
       (省略)

asksは売り注文、bidsは買い注文です。
それぞれ432000円でしっかり取得出来てます。

プライベートAPI

次はプライベートAPIで情報取得してみます。
プライベートAPIとは自分の口座残高情報、注文の売買など個人情報が必要な情報を提供されるものになります。

プライベードAPI取得方法

ZaifのAPIキーはログイン後→「アカウント」→「開発者向けAPI」→「API Key」
にて取得することが出来ます。
このAPIキーでは


ビットコインの売却

それではプライベートAPIを送信、残高取得、売却を一気にやってみます。

import hashlib
import hmac
import requests
import urllib.parse
import datetime


#ZaifのプライベートAPIリクエストを送信する関数
def zaifPrivateApi(i_params):
    API_KEY = "取得したAPIキーを入力"
    API_SECRET = "取得したAPIシークレットを入力"
    API_URL = "https://api.zaif.jp/tapi"
    params = urllib.parse.urlencode(i_params);
    s = hmac.new(bytearray(API_SECRET.encode('utf-8')),digestmod=hashlib.sha512)
    s.update(params.encode('utf-8'))
    headers = {'key':API_KEY,'sign':s.hexdigest()}
    response = requests.post(API_URL,data=params,headers=headers)
    return response

#口座残高を取得
nonce = int((datetime.datetime.today() - datetime.datetime(2017,1,1)).total_seconds())*10
z = zaifPrivateApi({"method":"get_info","nonce":nonce})
r = z.json()
print(r)

#新規注文
nonce = nonce + 1
z = zaifPrivateApi({
    "method":"trade",
    "currency_pair":"btc_jpy",
    "price":431000,
    "action":"ask",
    "amount":0.0001,
    "nonce":nonce})
print(z.status_code)
r = z.json()
print(r)


#注文の一覧を取得
nonce = nonce + 1
z = zaifPrivateApi({
    "method":"active_orders",
    "currency_pair":"btc_jpy",
    "nonce":nonce})
print(z.status_code)
r = z.json()
print(r)

#口座残高を取得
nonce = int((datetime.datetime.today() - datetime.datetime(2017,1,1)).total_seconds())*10
z = zaifPrivateApi({"method":"get_info","nonce":nonce})
r = z.json()
print(r)


ログ

{'success': 1, 'return': {'funds': {'jpy': 0.0, 'btc': 0.00199, 'xem': 0.0, 'mona': 0.0, 'BCH': 0.00199, 'PEPECASH': 12000.999}, 'deposit': {'btc': 0.00199, 'BCH': 0.00199, 'PEPECASH': 12000.999, 'mona': 0.0, 'xem': 0.0, 'jpy': 0.0}, 'rights': {'info': 1, 'trade': 1, 'withdraw': 0, 'personal_info': 0, 'id_info': 0}, 'trade_count': 6, 'open_orders': 0, 'server_time': 1505957440}}
200
{'success': 1, 'return': {'received': 0.0, 'remains': 0.0001, 'order_id': 250538542, 'funds': {'jpy': 0.0, 'btc': 0.00189, 'xem': 0.0, 'mona': 0.0, 'BCH': 0.00199, 'PEPECASH': 12000.999}}}
200
{'success': 1, 'return': {'250538542': {'currency_pair': 'btc_jpy', 'action': 'ask', 'amount': 0.0001, 'price': 431000.0, 'timestamp': '1505957442', 'comment': ''}}}
{'success': 1, 'return': {'funds': {'jpy': 43.1, 'btc': 0.00189, 'xem': 0.0, 'mona': 0.0, 'BCH': 0.00199, 'PEPECASH': 12000.999}, 'deposit': {'jpy': 43.1, 'mona': 0.0, 'xem': 0.0, 'PEPECASH': 12000.999, 'BCH': 0.00199, 'btc': 0.00189}, 'rights': {'info': 1, 'trade': 1, 'withdraw': 0, 'personal_info': 0, 'id_info': 0}, 'trade_count': 7, 'open_orders': 0, 'server_time': 1505962327}}


無事にbtcを0.0001売却成功しましたー!
残高もJPYが43円増え、BTCが0.0001減ってます!!

今回はここまで。
ビットコイン自動売買までの道のりは続く。


以上、APIを使ってビットコインを自動売買 〜味見編〜 でした。