MarketMakerBOTのソースコード(by magito氏)読解メモ5

の続きです。
題材は https://note.mu/magimagi1223/n/n5fba7501dcfd です。

# メインループ
while True:

ループ処理に入ります。

    # 未約定量の繰越がなければリセット
    if remaining_ask_flag == 0:
        remaining_ask = 0
    if remaining_bid_flag == 0:
        remaining_bid = 0

おそらくループ中に変更されるフラグなので一旦スルーして読み進めます。

    # フラグリセット
    remaining_ask_flag = 0
    remaining_bid_flag = 0

フラグリセットしています。
変数名通りだとすると売り残しがあるか、買い残しがあるか、といったところでしょうか。
読み進めないとわからないのでこれも一旦スルーします。

    # 自分の指値が存在しないとき実行する
    if pos == 'none':

pos変数にnoneが入っていた時の処理です。
pythonで定義されているNoneではなく、文字列の'none'がどこかで入れられうるようです。

        # 板情報を取得、実効ask/bid(指値を入れる基準値)を決定する
        tick = get_effective_tick(size_thru=AMOUNT_THRU, rate_ask=0, size_ask=0,
                                  rate_bid=0, size_bid=0)
        ask = float(tick['ask'])
        bid = float(tick['bid'])

get_effective_tickメソッドを実行します。
size_thruには最小注文数のAMOUNT_MIN=0.001を、他の引数には0が指定されています。
get_effective_tickメソッドをもう一回見てみると、

    i = 0
    s = 0
    while s <= size_thru:
        if value['bids'][i][0] == rate_bid:
            s += value['bids'][i][1] - size_bid
        else:
            s += value['bids'][i][1]
        i += 1

s が 0.001以下の場合にループ処理を実行します。
もし買い板の0番目の価格が0であればif分岐に入りますが、価格が0であることはないので、elseに入ります。
elseでは買い板の0番目のサイズがsに加算されます。
試しに現在の先物板情報を取得すると下記のような状態です。

bids":[
    {"price":708227.0,"size":0.33495286},
    {"price":708226.0,"size":0.48},
    ...

この板の場合、sに0.33495286が加算されます。

15分経ったので今日はここまで。

↓次


この記事が気に入ったらサポートをしてみませんか?