MarketMakerBOTのソースコード(by magito氏)読解メモ2
の続きです。
題材は https://note.mu/magimagi1223/n/n5fba7501dcfd です。
# 実効Ask/BidからDELTA離れた位置に指値をおく
DELTA = 1
best bid, best ask からどれだけ離れた場所に指値するかの値です。
#------------------------------------------------------------------------------#
#log設定
import logging
logger = logging.getLogger('LoggingTest')
logger.setLevel(10)
fh = logging.FileHandler('log_mm_bf_' + datetime.datetime.now().strftime('%Y%m%d') + '_' + datetime.datetime.now().strftime('%H%M%S') + '.log')
logger.addHandler(fh)
sh = logging.StreamHandler()
logger.addHandler(sh)
formatter = logging.Formatter('%(asctime)s: %(message)s', datefmt="%Y-%m-%d %H:%M:%S")
fh.setFormatter(formatter)
sh.setFormatter(formatter)
ログ出力設定をします。
# JPY残高を参照する関数
def get_asset():
while True:
try:
value = bitflyer.fetch_balance()
break
except Exception as e:
logger.info(e)
time.sleep(1)
return value
資産残高を取得します。
cctx のfetch_balanceメソッドを利用し、例外が飛ばなくなるまで1秒間隔でAPIを参照します。
https://github.com/ccxt/ccxt/blob/master/python/ccxt/bitflyer.py#L136 にある通り、cctxのfetch_balanceはbitflyerのgetbalanceAPIを利用しています。
https://lightning.bitflyer.com/docs?lang=ja#%E8%B3%87%E7%94%A3%E6%AE%8B%E9%AB%98%E3%82%92%E5%8F%96%E5%BE%97
# JPY証拠金を参照する関数
def get_colla():
while True:
try:
value = bitflyer.privateGetGetcollateral()
break
except Exception as e:
logger.info(e)
time.sleep(1)
return value
証拠金状態を取得します。
先ほどのメソッドと同様に例外が飛ばなくなるまで1秒間隔でAPI参照します。
bitflyerのgetcollateralAPIを利用しています。
https://lightning.bitflyer.com/docs?lang=ja#%E8%A8%BC%E6%8B%A0%E9%87%91%E3%81%AE%E7%8A%B6%E6%85%8B%E3%82%92%E5%8F%96%E5%BE%97
# 板情報から実効Ask/Bid(=指値を入れる基準値)を計算する関数
def get_effective_tick(size_thru, rate_ask, size_ask, rate_bid, size_bid):
while True:
try:
value = bitflyer.fetchOrderBook(PAIR)
break
except Exception as e:
logger.info(e)
time.sleep(2)
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
j = 0
t = 0
while t <= size_thru:
if value['asks'][j][0] == rate_ask:
t += value['asks'][j][1] - size_ask
else:
t += value['asks'][j][1]
j += 1
time.sleep(0.5)
return {'bid': value['bids'][i-1][0], 'ask': value['asks'][j-1][0]}
板情報を取得して、指定したサイズや価格に合ったask,bidを求めます。
while True:
try:
value = bitflyer.fetchOrderBook(PAIR)
break
except Exception as e:
logger.info(e)
time.sleep(2)
例外が飛ばなくなるまで2秒間隔でAPI参照し板情報を取得します。
cctx経由でgetboardAPIを利用します。
https://lightning.bitflyer.com/docs?lang=ja#%E6%9D%BF%E6%83%85%E5%A0%B1
15分経ったので今日はここまで。
↓次
この記事が気に入ったらサポートをしてみませんか?