botコード、暗証番号のコピーだらけで危険だぞー
テストしてるとファイルが一杯できるが、取引所の「keyとsecret」をベタ書きにするとそこら中にコピーが散乱してしまって、間違えてブログにアップしそうで怖いです。コピーも面倒です。
また、他人様の作ったbitcoin関連のプログラムは、自分のkey,secretを投入する必要があるが、key,secretを間接的に投入するこの方法のほうが簡単です。
具体的作業
- config.jsonにパスワード等秘密の情報を記入
- 決めたフォルダに置く(ここまでは一回だけやれば終わり)
- プログラムと同じフォルダにconfig.pyのコピーを置く
- プログラムに2行記述し、代入
-
- from config import Config
- cfg=Config()
- key=cfg.bf_key・・・・
config.json 定義ファイル(ファイル名は何でも良い)
bf_key:”*******”
bf_secret:”******”
mex_key:”*******”
mex_secret:”******”
line_token:”********”
discord_token:”*******”
class Config() クラス化のコード
import json
class Config:
def __init__(self, json_path=”c:\config\config.json”):
config = json.load(open(json_path, “r”))
self.bf_api_key = config[“bf_key”]
self.bf_api_secret = config[“bf_secret”]
self.mex_api_key = config[“mex_key”]
self.mex_api_secret = config[“mex_secret”]
self.line_token = config[“line_notify_token”]
self.discord_token = config[“discord_token”]
def bitcoin() プログラム
from config import Config
cfg=Config()
pybitflyer.API(key=cfg.bf_key,secret=cfg.bf_secret,・・・・) 値を利用
値のセットが2段構えになるので最初だけ面倒だが、暗証番号が漏れないという保険だとしたらたやすい作業だ。
また、key,secretは、定期的に変更したほうが良いのは言うまでもないが、この方法は、config.jsonのその部分を一回更新するだけでどのプログラムも無問題。
もし、ベタコピペだったら、動かすたびコピペし直しで、モチベが失せてゆくやね。
Windows-PC内のイメージとしてこんな感じである
さらにコンフィグファイルを読み込む実際のコードである
#!/usr/bin/python3 # coding: utf-8 import pybitflyer import json class Config: def __init__(self, json_path="c:\config\config.json"): self.api_key = config["取得した自分のkey"] self.api_secret = config["同secret"] self.api_line_token = config["line_notify_token"] self.api_file_name = config["fileName"] self.interval = config["sleepTime"] self.long_term = config["longTerm"] self.short_term = config["shortTerm"] self.size = config["lotSize"] self.product_code = config["product_code"] self.api_health = config["healthCheck"]
''' position.py pybitflyerを使ったgetpositionsの呼出 ''' import time import pybitflyer from config import Config cfg = Config()#プロパティ定義のインスタンス化 api = pybitflyer.API(api_key=cfg.api_key, api_secret=cfg.api_secret) #pybitflyerを使ってbitflyerにアクセス def check_position(): response = api.getpositions(product_code=cfg.product_code) #持ち玉を見に行く print( response[0]['side'],response[0]['size'],int(response[0]['pnl']),int(response[0]['price'])) #リスト内辞書形式で帰ってくる if __name__ == '__main__': print('(仮想)通貨ペアは{}インターバルは{}秒'.format(cfg.product_code,cfg.interval)) while True: try: check_position() except: print("何かやばいことが起きた") break time.sleep(cfg.interval)
コメント