[ccxt Liquid(Quoinex)] ボーナスQASHが入ったら通知/売却するコード【無用の長物】

This is 何

クソコードの墓場(R.I.P.)


Liquidのキャンペーン

Liquidさん、こんなキャンペーンやってました。

https://www.liquid.com/campaign3-jp/

https://www.liquid.com/campaign3-jp-user/


12/25: 「12/26(翌日)までに詳細連絡するで!」


12/26: 「やっぱ付与時期延期な!1月頭までな!」


上記のように、連絡がグダグダで何日何時に入金されるかハッキリしないので、プログラムで解決しようとコード書いてました。エラーになるのを覚悟で成売部分を動かしてみました。








入金されてて成売成功しました(白目


12/28: 「さっき付与しといたで!!HODLしてくれたら追加キャンペーンあるで!」(すでに成売した後にメール来ました


コード

ということでもはや不要のコードなのですが、供養のため貼っておきます。

やってること(全体的に適当)
・QASH残高 初期値を取得
・定期的にQASH残高を取得して、ボーナスゲットしてないか確認
・(フラグONなら)QASHを売る
・Discord/LINE のコンフィグが設定されてたら節目節目で通知
import ccxt
from datetime import datetime
from time import sleep
import requests

# LIQUID
API_KEY = 123456
API_SECRET = ""
FETCH_ITV = 5  # [sec]
SELL_ALL = True  # QASH全額売却
SELL_BONUS = True  # QASHボーナス分だけ売却
SYMBOL = "QASH/JPY"

# Discord
DISCORD_URL = ""
DISCORD_USER = ""
MENTION

# LINE
LINE_TOKEN = ""
LINE_NOTIFY_URL = "https://notify-api.line.me/api/notify"

def fetch_qash_balance(liquid):
  while True:
    try:
      balance = liquid.fetch_balance()
      break
    except Exception as e:
      print(e)
    sleep(3)
  return balance["QASH"]["total"]

def sell_qash(liquid, amount):
  while True:
    try:
      res = liquid.create_market_sell_order(SYMBOL, amount)
      break
    except Exception as e:
      print(e)
    sleep(3)
  return res

def discord_send(message, is_mention=False):
  if any([not DISCORD_URL, not DISCORD_USER]):  return
  if is_mention:  message = f'@everyone\n{message}'
  data = {"content": " " + message + " ", "username": DISCORD_USER}
  while True:
    try:
      r = requests.post(DISCORD_URL, data=data)
      if r.status_code in [200, 204]:
        break
      else:
        print(f'Error(Discord)\t{r.status_code}\t{r.text}')
    except Exception as e:
      print(f'Error(Discord)\t{e}')
    sleep(3)

def line_send(message):
  if not LINE_TOKEN:  return
  headers = {'Authorization': 'Bearer ' + LINE_TOKEN}
  payload = {'message': message}
  while True:
    try:
      r = requests.post(LINE_NOTIFY_URL, data=payload, headers=headers)
      if r.status_code in [200, 204]:
        break
      else:
        print(f'Error(LINE)\t{r.status_code}\t{r.text}')
    except Exception as e:
      print(f'Error(LINE)\t{e}')
    sleep(3)

if __name__ == '__main__':
  liquid = ccxt.liquid({"api_key": API_KEY, "secret": API_SECRET})
  initial_qash = fetch_qash_balance(liquid)
  initial_qash = 1

  message = f'{datetime.now()}\tInitial QASH: {initial_qash}'
  print(message)
  discord_send(message, True)
  line_send(message)

  while True:
    sleep(FETCH_ITV)
    qash = fetch_qash_balance(liquid)
    qash = initial_qash + 1
    if initial_qash < qash:  break

  message = f'{datetime.now()}\tQASH increased: {initial_qash} -> {qash} (+{qash - initial_qash})'
  print(message)
  discord_send(message, True)
  line_send(message)

  if SELL_ALL or SELL_BONUS:
    sell_amount = qash if SELL_ALL else qash - initial_qash
    print(sell_amount)
    res = sell_qash(liquid, sell_amount)
    message = f'{datetime.now()}\tQASH sold: {sell_amount} {res}'
    print(message)
    discord_send(message, True)
    line_send(message)


APIキーの発行

https://app.liquid.com/ja/settings/api-tokens


マガジン


干し芋


サポート頂けると励みになります BTC,BCH: 39kcicufyycWVf8gcGxgsFn2B8Nd7reNUA LTC: LUFGHgdx1qqashDw4WxDcSYQPzd9w9f3iL MONA: MJXExiB7T7FFXKYf9SLqykrtGYDFn3gnaM