見出し画像

Bybit API入門(初心者向け)

実行環境
・python3

まずこのnoteの読者層がどの程度プログラミングができる方達なのか全く不明なんですが今回は超初心者向けのnoteになります。api使ってbot作れる方は見なくていいです。時間がもったいない。

ってことで今回はAPIをまともに使えないレベルの超初心者が簡単なbot?を作れる様になるためのnoteです。対象者としてはpython触ったばかりの方、最近仮想通貨やBOTに興味を持ち始めた学生あたりといったところでしょうか。

あんまり喋りすぎてもあれなんですが最近気になる事があるので事のついでにしゃべらせてください。このnoteの最後に書いときます。ちなみに仮想通貨とは全く関係ありません。

てことで本編

概要
・APIのインストール
・付属ファイルのコードの解説
付属のファイルのbotもどきを解説していく流れになります。

BOTもどきのロジック
・ロングしかしません
・参入価格と現在価格の差が閾値を超えると利確or損切り

まずは自分の環境にbybitのAPIをインストールしましょう。ターミナルに入力してください。
ドキュメントはこちらです。

pip3(or pip) install bybit

まずbot作るにあたって必要な関数を簡単に挙げると
・自分のポジションを確認する関数
・最新の情報を取得する関数
・注文を入れる関数
・注文をキャンセルする関数

この辺りでしょうか、これは究極的に最低限のものであとは自分のロジックによって増えてきます。

まず例のごとくapi_keyとapi_secretを入力してください。qtyは取引量です。

# パラメータ###########################################
client =  bybit.bybit(test=True, api_key="", api_secret="")
# 取引量(ドル)
qty = 1


続いてこちらのコードではclient.Market.Market_symbolInfoという関数で現在のBTCUSDの最新の情報を取得します。そして変数best_askに最新のask価格を代入します。askとbidの違いはわからなかったら調べてください。今回はロングしかしないのでaskです。

info = client.Market.Market_symbolInfo(symbol = "BTCUSD").result()
best_ask = float(info[0]["result"][0]["ask_price"])


次にこの長くてムカつく関数で注文を出します。order_typeはMarketで成り行き、Limitで指値になります。今回はqtyが少ないので指値注文をしたら全て注文が通った前提で次のステップに進んでいますが、実際には指値注文したら自分の注文が全部通っているか確認をしたりするコードを書かなければなりません。

client.Order.Order_new(side="Buy",symbol="BTCUSD",order_type="Limit",qty=qty,price=best_ask ,time_in_force="GoodTillCancel").result()


最後は一気に行きます。このコードは現在価格を2秒おきに確認し、エントリー価格との差が50ドル以上開いたら利確または損切りするといったものになります。決済する関数はエントリーするときの関数をそのまま使ってますがパラメータにreduce_onlyというのが追加されてます。これは英語の意味のまんまでポジションを減らす時にしか実行されません。さらにポジションが追加されることはないので安心できます。

while True:
   info = client.Market.Market_symbolInfo(symbol = "BTCUSD").result()
   if float(info[0]["result"][0]["last_price"])-best_ask>50:
       best_bid = float(info[0]["result"][0]["bid_price"])
       client.Order.Order_new(side="Sell",symbol="BTCUSD",order_type="Limit",qty=qty,price=best_bid ,time_in_force="GoodTillCancel",reduce_only = True).result()
       print(best_bid,"で利確しました")
       break
   elif float(info[0]["result"][0]["last_price"])-best_ask<-50:
       best_bid = float(info[0]["result"][0]["bid_price"])
       client.Order.Order_new(side="Sell",symbol="BTCUSD",order_type="Limit",qty=qty,price=best_bid ,time_in_force="GoodTillCancel",reduce_only = True).result()
       print(best_bid,"で損切りしました")
       break
       
   time.sleep(2)

以上でロングをして価格差が50ドル以上開いたら利確or損切りをするというBOTとはいかないまでもAPIを使って取引するプログラムができました。

今回のnoteは最低このくらいわかれば次のステップに進めるかな?というものになります。正直なところこんなレベルじゃ到底BOTで利益を出すことはできませんが、これがそのレベルに達するまでの線上であることは確かです。なので初心者の方はここで理解したことを参考に試行錯誤していけばそう遠くないうちにBOTと呼べるものが作れるようになるのではないでしょうか。


余談
最初に言ってた話ですが最近というか結構前から気になることがあるんですよ。何が気になってるかっていうとweb系プログラマ(仮)を目指していたり、転職しようとしている人の異常増殖です。決して馬鹿にしてません。この流れは自分が確認してる限り今のところ2年ほど続いており、tweetにタグをつけてその日の学習したことを投稿とすると言ったコミュニティ形成していたりします。それの何が気になるかというと、何も考えなしに皆が同じ行動をとっているということです。普通に考えて採用人数が一定なのにも関わらず皆がwebプログラマを目指してそれで稼ごうとしている現象っておかしくないですかね。多分多くの人は副業感覚で、ある程度スキルを身につけたら月に数万稼げるといった甘い誘い文句に乗って始めていると思うんですが、普通の人が数ヶ月で身につけた程度のスキルで依頼が受けられるわけないじゃないですか。しかも今ではデザインの学校でもwebプログラミングが必修科目になってきたりしているらしいですし。数ヶ月webプログラミングを勉強した人間がデザインもできてコーディングもできる人間より需要があるとは思えません。しかもそのwebプログラミングさえもほとんどはHTMLやCSSでプログラミングではなくコーディングですし、よくてPHP,Javascriptではないでしょうか。PHP,Javascriptのプログラミングがかなり高度にできれば良いでしょうが、ほとんどの人はHTMLやCSSがちょこっとできただけで自分はこんなスキルを持っている、これで稼げると思っているように感じます。ただでさえ現在飽和状態のwebプログラミング界隈でHTMLやCSSで仕事があるわけないですよね。副業にもなりません。HTMLやCSSも基本中の基本ではあるので彼らのやってることが無駄とまでは言いませんが少なくとも彼らの目的と行動は合っていないと思います。自分でデザインやwebプログラミングのセンスがあると感じる方は思う存分それに専念すればいいと思いますがその他の普通の人は自分の目的と行動が合っていないことを自覚すべきだと思った今日この頃です。

この記事が気に入ったらサポートをしてみませんか?