4.APIでデータのやり取り(3)取引所の暗証番号はベタ書きしない 「お手製 python bitflyer Trading Bot」

botコード、暗証番号のコピーだらけで危険だぞー

 

テストしてるとファイルが一杯できるが、取引所の「keyとsecret」をベタ書きにするとそこら中にコピーが散乱してしまって、間違えてブログにアップしそうで怖いです。コピーも面倒です。
また、他人様の作ったbitcoin関連のプログラムは、自分のkey,secretを投入する必要があるが、key,secretを間接的に投入するこの方法のほうが簡単です。

具体的作業

  1. config.jsonにパスワード等秘密の情報を記入
  2. 決めたフォルダに置く(ここまでは一回だけやれば終わり)
  3. プログラムと同じフォルダにconfig.pyのコピーを置く
  4. プログラムに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)

 

コメント

amazon 本日のタイムセール Time Sale
現役シリコンバレーエンジニアが教えるPython 3 入門 + 応用 動画290本28.5時間 \24,000
楽天モバイル、妻がiphone SE2、息子がiphone11で使ってます。一番安くて通信品質イマイチ
コロナ感染施設の人体に無害な消毒と抗菌処理ならESS消毒社(東京都)
タイトルとURLをコピーしました