前回は価格取得とチャート表示までできました。
![](https://web-lukes.info/wp-content/uploads/2022/08/image-8-1024x695.png)
今回はデータベースを作っていきます。
Table of Contents
使うライブラリ
- dataset
データベースへ何を保存しておくのか?
データベースにはポジション情報を保存します。
なぜポジション情報を保存するのか?
ポジション情報を保存しないと、エントリー直前に取引所へポジション情報を取得するタイムコストが発生します。
そのタイムコストを抑えるためにローカルのデータベースにポジション情報を保存します。
保存するポジション情報は
- 通貨名
- 売買方向
- ロットサイズ
です。
もしもポジション情報を保存しておかなければ、ポジションをエントリーしたあとに連続でエントリーされてしまうのです。
なので、エントリーは
- データベースにアクセス
- ポジション情報を取得
- 同じ売買方向へのポジションを持っているか?
を確認してからエントリーします。
エントリーしたら、ポジション情報をデータベースに保存します。
そして、決済処理をしたらデータベースにあるポジション情報を変更します。
データベース用のPythonファイルを作成する
![](https://web-lukes.info/wp-content/uploads/2022/08/image-9.png)
名前は自分がわかれば問題ないので「db.py」にしました。
まずはインストールから
1 |
pip install dataset |
データベースソースコード
1 2 3 4 5 6 7 8 9 10 11 12 13 14 15 16 17 18 19 20 |
import dataset class Database(): def __init__(self,name): db = dataset.connect("sqlite:///data.sqlite") self.table = db[name + "_" +"positions"] # ポジション情報書き込み def update_position_info(self,symbol,side,qty): position = self.table.find_one(symbol=symbol) if position==None: self.table.insert({"symbol":symbol,"side": side,"qty":qty}) else: self.table.update({"symbol":symbol,"side": side,"qty":qty}, ["symbol"]) # データベースからポジション情報読み取り def position_info(self,symbol): position = self.table.find_one(symbol=symbol) return position # テーブル削除 def delete_table(self): self.table.drop() |
データベース使い方
![](https://web-lukes.info/wp-content/uploads/2022/08/image-10.png)
dbtest.pyを作成しました。
まずはインポートします。
import db
データベースクラスのインスタンス化
![](https://web-lukes.info/wp-content/uploads/2022/08/image-11.png)
名前をカッコにいれておく、これを実行すると
bybit用のデータベースの操作を行えるようになる。
データベースの初期化
![](https://web-lukes.info/wp-content/uploads/2022/08/image-12-1024x406.png)
- ファイル形式のデータベースの作成
- 「Bybit_positions」というテーブルの初期化
- {“symbol”:”BTCUSDT”,”side”: “Buy”,”qty”:”0.01″}がデータベースへ書き込まれる
がされる
てことで実行ボタンをポチる
![](https://web-lukes.info/wp-content/uploads/2022/08/image-13.png)
![](https://web-lukes.info/wp-content/uploads/2022/08/image-14.png)
実行ボタンを押すと同じディレクトリに3つのファイルが追加される。これがデータベースだ。
ポジション情報をデータベースから読み込む
![](https://web-lukes.info/wp-content/uploads/2022/08/image-15-1024x500.png)
ポジション情報を取得するにはこれでOK。
実行ボタンをおすと
![](https://web-lukes.info/wp-content/uploads/2022/08/image-16-1024x293.png)
辞書型でデータベースからポジション情報を取得できる。
なので、
![](https://web-lukes.info/wp-content/uploads/2022/08/image-17-1024x551.png)
こうすると
![](https://web-lukes.info/wp-content/uploads/2022/08/image-18.png)
ポジション情報の単体を取得ができるのだ。
データベースを削除
![](https://web-lukes.info/wp-content/uploads/2022/08/image-19-1024x470.png)
これで削除される。
実行ボタンをおすと、
![](https://web-lukes.info/wp-content/uploads/2022/08/image-20.png)
データベースの3個のファイルのうち、2個が消える。
続きは以下ページです。
BybitがGoogleのIPアドレス規制をしているためです。国内のVPSなら使…
自分のbotで使ってるAPIキーを使用しているんですが、 You have br…
pybit 最新版にコードを変更しました。コードとrequirements.tx…
お返事ありがとうございます。はい。pybit==2.3.0になっております。
コードはあっていると思います。rewuirements.txtは「pybit==…