key&secret、パラメーターはクラスで管理

BitcoinBot「招き猫」目次に戻る

 

 

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

 

テストしてるとファイルが一杯できるが、取引所の「keyとsecret」をベタ書きにするとそこら中にコピーが散乱してしまって、間違えてブログにアップしそうで怖いです。実際に見たことがあります。
そこで、Cony WildさんのChannelBreakOutBotで使われていた手法を少し変えて取り入れます。

ややこしそうだが、

Windows-PC内のイメージとしてこんな感じである

c:\
|
|-\coufig|(フォルダ)
|            |-config.json(key & secret & LINEtoken)
|
|-\bot|(フォルダ)
|        |-parameter.json パラメタ、プロパティ等設定値のファイル
|        |-config.py Configクラスを設定し、config.jsonを読み込む
|        |-parameter.py Parameterクラスを設定し、パラメーターを読み込む
|        |-bot.py cfg=Config() parm=Parameter() クラスのインスタンス化

要するにどんなBOTをどのフォルダから作ってもkey,secretはPC内に一つしか存在させないので流出の危険がないし、初めだけ面倒だが後々管理も楽

(githubなどで上級者的バージョン管理など行える人は別のやり方があるがそこはgoogle先生で)

隠し方を詳しく説明

config.json 定義ファイル(場所固定)

{   
key=*******
 secret=******
}

parameter.json パラメーター格納ファイル(コードと同じ場所)

{
product_code=’FX_BTC_JPY’    
size=1.0などプログラムで指定するパラメータの集まり
}

class Config() key&secretクラス化のコード(コードと同じ場所?)

    __init__
self.api_key=config.jon[‘api_key’]値をセット

class Parameter() パラメータークラス化のコード(コードと同じ場所)

    __init__
self.product_code=parameter.json[‘product_code’]値をセット

def bitcoin() プログラム

    cfg=Config(): インスタンス化
    api.order(self, cfg.key, cfg.secret) 値を利用

    prmt=Parameter()
    api.get—(self, product_code=prmt.product_code, ———-)

という風に、値のセットが2段構えになるので面倒だが、本来は当然の措置である。

  1. 暗証番号を公開してしまうことはない
  2. バージョンを変えてもkey&secretのコピペは不要
  3. 別ボットプログラムもkey&secretはコピペ不要
  4. 定期的にkey&secretを替えてもどのプログラムにも影響がない

特に4は、keyの権限を変えた時に全部のプログラムに反映できるので安全である。

そもそも、コード内にconfig値やパラメーターをベタ書きして、直接書き換えたりしたらかなりダサいし、バカにされますよ。誰かに。誰に?

さらにコンフィグファイルを読み込む実際のコードである

 

 

 

 

 

BitcoinBot「招き猫」目次に戻る