PybitflyerでBot運用する時によく利用する関数をまとめてみた

どうもふうやです。

つい最近二十歳になりまして、仮想通貨に入門しました!

そこで普通にトレードするだけではつまらないと思い、Botを自作して運用しております。

もちろんPythonなんて触ったことも無く、これまではPHP、javascript(jQuery含む)、HTML、CSSを専門としていたので、特徴くらいしか知りませんでした笑

そんなPythonに入門して半日でサンプルBotが完成して、今の実用Botが完成するまでに実は既に7万円も損失を喰らってます笑

まあ勉強代として考えれば全然安いほうですよ!

ということで今回は自分がBitFlyerのBot運用を通して頻繁に利用している関数や処理などを紹介させて頂きます。

BitFlyerのBot開発するならPybitflyer!よく利用する関数まとめ

まずはじめにPybitflyerのインストール

Pybitflyerをインストールしていない場合はコンソールからインストールをします。

Console
pip install pybitflyer

Pybitflyerを利用するための下準備

Bitflyerの通常APIキーとシックレートキーでPybitflyerを利用するための下準備を行います。

Python
key = "***********" #BitFlyerの通常APIキー
secret = "***********" #BitFlyerのシークレットキー	
bf = pybitflyer.API(key,secret)
product_code = "FX_BTC_JPY" #FX_BTC_JPYを対象とする
rev = 15 #レバリッジ倍率

FXBTCJPYの最終取引価格を取得する

FXBTCJPYの最終取引価格の取得を行います。

Python
#FXのltpを返す
def get_ltp() :
    json = bf.ticker(product_code=product_code)
    return json["ltp"]

現在注文できるBTCのロット数(枚数)を計算する

トレードのたびに預入証拠金残高は変化するので、注文の度に預入証拠金残高の○%でロット数を計算することが出来る関数です。

Python
ratio = 1 #割合:100%

#現在購入できるBTCの枚数を返す
def vol() :	
	result_money = bf.getcollateral()
	ltp = get_ltp()
	money = np.floor(result_money["collateral"] - result_money["require_collateral"])
	size = (money * rev / ltp) * ratio
	return size

このvol関数で利用しているratioは預入証拠金残高の何%を注文するか予め設定する変数です。

0.8とすれば預入証拠金残高の80%で注文することの出来るロット数を計算します。

またvol関数内のget_ltp関数は前述した「最終取引価格を取得する」関数です。

保有している建玉を計算する

上記までの注文を行った場合はBTCの建玉が固定では無いので、保有している建玉を計算する必要があります。

Python
#保有している建玉数を計算
def get_pos() :
       size = 0
       poss = bf.getpositions(product_code=product_code)
       if len(poss) != 0:
           for pos in poss :
               size += pos["size"]
       return size

紹介した関数の使い方

ここまでに紹介した関数の使い方を例として挙げます。

Python
#ロング・ショートを注文する時
size = round(vol(), 2) #BTCのロット数

#利確・損切りする時
size = round(get_pos(),2) #BTCのロット数

ここでのroundはFXBTCJPYの場合小数点第二位までのロット数でしか注文出来ないので、ロット数を小数点第二位に四捨五入で丸めています。

まとめ

Botを開発する上で最低限必要そうな関数等を例に紹介させていただきました。

次回はUKI氏が公開していた元祖ドテン君のPythonとTradingViewの豪華二本立てのソースコードを無料で記事にして紹介します。

※ロジック通りに自作した元祖ドテン君です

TradingViewでバックテスト等も行えるのでぜひ参考にしてください!

ありがとうございました!

コメントを残す

メールアドレスが公開されることはありません。 * が付いている欄は必須項目です