Bitbank活用メモ(ETH入金, CCXT PostOnly でドルコスト)備忘録
作業の備忘録です。内容が間違っていたり、もっと良い方法があれば是非コメントをいただきたいです。投げ銭(ポイント)をお返しします。
本ページは仮想通貨の投資を勧めるものではありません(Not financial advice)。
- MetamaskからBitbankへETHの入金が失敗する
- CCXTを使ってPostOnlyで注文する
MetamaskからBitbankへETHの入金が失敗する(直りました)
Metamaskを愛用しているのですが、最近(2021年7月)bitbankにETHを入金すると、下のように失敗しました。
GAS代を多めにしても駄目でMetamaskでは無理そうだったのでMyEtherWalletで試すと、わずか4 Gweiで入金できました。
入金できない事と関係あるのか判りませんが、bitbankへのETH入金はスマートコントラクトのアドレスに変わったらしいです。
(追記)2022年1月には直っていました。Metamaskのバージョンアップの
おかげかも?
参考
CCXTを使ってPostOnlyで注文する
bitbankでの注文が、成り行きで約定しないPostOnlyに対応したらしいのですが、CCXT(バージョン1.48.9)は対応していなかったので方法を調べました。
CCXT未対応のAPIパラメータは、下の様にparams引数の指定でオーバーライドする事ができました。
params = {'post_only': True}
参考
おまけ(ドルコスト平均法的なCCXT使用例)
毎日8:30に1,000円ずつ、BTCの買い注文を出すスクリプトの例です。
ファイル名:"buy_btc.py":
import ccxt
from datetime import datetime
from time import sleep
import json
symbol = "BTC/JPY"
SIZE_MIN = 0.0001
SATOSHI = 0.00000001
BUDGET_JPY = 1000
SLEEP_TRADE = 60 * 60 # 1 hour
SLEEP_LOOP = 60 # 1 min
SLEEP_API = 1 # 1 sec
bitbank = ccxt.bitbank({
"apiKey": "<APIKEY>",
"secret": "<SECRET>"
})
while( True ):
now_time = datetime.now() # time control
if ( (now_time.minute > 30) and (now_time.hour == 8) ):
# cancel
try :
result_order = bitbank.fetch_open_orders(symbol = symbol)
for loop in range(len(result_order)) :
result = bitbank.cancel_order(id = result_order[loop]["id"], symbol = symbol)
except (ccxt.BaseError) as e:
print("Error", e)
sleep(SLEEP_API)
# order
try:
data = bitbank.fetch_ticker(symbol = symbol)
price = data["bid"]
amount = int(((BUDGET_JPY / price) + (SIZE_MIN - SATOSHI)) / SIZE_MIN) * SIZE_MIN
result = bitbank.create_limit_buy_order(symbol = symbol, amount = amount, price = price, params = {'post_only': True})
print( str(now_time.strftime("%Y/%m/%d %H:%M:%S")) )
print(json.dumps(result, indent=True))
sleep(SLEEP_TRADE)
except ccxt.BaseError as e:
print("Error", e)
sleep(SLEEP_API)
sleep(SLEEP_LOOP)
スクリプトを下のコマンドで実行するとsshを抜けても動き続けます。
$ nohup python3 ./buy_btc.py &