MarketMakerBOTのソースコード(by magito氏)読解メモ10
の続きです。
題材は https://note.mu/magimagi1223/n/n5fba7501dcfd です。
メインループの if trade_ask['status'] == 'open' and trade_ask['price'] != ask - DELTA: ブロックの続きから。
# Ask指値が最良位置に存在しないとき、指値を更新する
if trade_ask['status'] == 'open' and trade_ask[
'price'] != ask - DELTA:
# 指値を一旦キャンセル
cancel_ask = cancel(trade_ask['id'])
# 注文数が最小注文数より大きいとき、指値を更新する
if trade_ask['remaining'] >= AMOUNT_MIN:
trade_ask = limit('sell', trade_ask['remaining'],
ask - DELTA)
trade_ask['status'] = 'open'
# 注文数が最小注文数より小さく0でないとき、未約定量を記録してCLOSEDとする
elif AMOUNT_MIN > trade_ask['remaining'] > 0:
trade_ask['status'] = 'closed'
remaining_ask = float(trade_ask['remaining'])
remaining_ask_flag = 1
# 注文数が最小注文数より小さく0のとき、CLOSEDとする
else:
trade_ask['status'] = 'closed'
# 注文数が最小注文数より小さく0でないとき、未約定量を記録してCLOSEDとする
elif AMOUNT_MIN > trade_ask['remaining'] > 0:
trade_ask['status'] = 'closed'
remaining_ask = float(trade_ask['remaining'])
remaining_ask_flag = 1
売り注文残数がAMOUNT_MINよりも小さくかつ0ではない(ほんの少し残っている)場合の処理です。
trade_ask変数のstatusにclosedを入れ、
remaining_askに売り注文残数を入れ、
remaining_ask_flagを立てます。
# 注文数が最小注文数より小さく0のとき、CLOSEDとする
else:
trade_ask['status'] = 'closed'
売り注文残数が0のときはstatusにclosedを入れるだけです。
# Bid指値が最良位置に存在しないとき、指値を更新する
if trade_bid['status'] == 'open' and trade_bid[
'price'] != bid + DELTA:
# 指値を一旦キャンセル
cancel_bid = cancel(trade_bid['id'])
# 注文数が最小注文数より大きいとき、指値を更新する
if trade_bid['remaining'] >= AMOUNT_MIN:
trade_bid = limit('buy', trade_bid['remaining'],
bid + DELTA)
trade_bid['status'] = 'open'
# 注文数が最小注文数より小さく0でないとき、未約定量を記録してCLOSEDとする
elif AMOUNT_MIN > trade_bid['remaining'] > 0:
trade_bid['status'] = 'closed'
remaining_bid = float(trade_bid['remaining'])
remaining_bid_flag = 1
# 注文数が最小注文数より小さく0のとき、CLOSEDとする
else:
trade_bid['status'] = 'closed'
買い指値についても同様の処理を行います。
# Ask/Bid両方の指値が約定したとき、1サイクル終了、最初の処理に戻る
if trade_ask['status'] == 'closed' and trade_bid['status'] == 'closed':
pos = 'none'
logger.info('--------------------------')
logger.info('completed.')
売り・買い両方のstatusがclosedの場合はposにnoneを入れ、ログ出力します。
time.sleep(5)
最後に5秒sleepします。
これで全て読んだことになります。処理の流れを振り返ります。
pos変数の働きを把握します。
pos変数にはnoneまたはentryという文字列が入り得ます。
noneが入っている場合はbitflyerに指値注文は残っていません。
entryが入っている場合はbitflyerに指値注文が残っています。
none, entryどちらの場合も指値注文を行います。
noneの場合は新規にLOTで指定された値に前回entry時に残ったremaining_bid, remaining_ask分を加算した値を発注します。
entryの場合は残存注文量分だけ発注しますが、価格はそのタイミングに合ったものに訂正されます。
15分経ったので今日はここまで。
↓次
この記事が気に入ったらサポートをしてみませんか?