見出し画像

【FTX JP】ビットコイン(BTC)自動積み立てBOT

来るべきバブル相場に備えて、ビットコイン(BTC)を積み立てておきたいという人も多いのではないでしょうか。

ドルコスト平均法でコツコツ仕込むなら、さすがに手動はきついのでBOTは必須といえるでしょう。

そこで今回は、FTX JPでBTCを毎日積み立てるBOTのソースコードを紹介します!

FTX JP口座開設

FTX JPの口座開設がまだの方は、こちらからどうぞ(いま下記リンクを経由してつくると、取引手数料が5%割引です)。

BTC積み立てBOT

FTX JPでBTCを積み立てるBOTのコードは、こちらです。

import requests
from decimal import Decimal
from datetime import datetime
from time import sleep
import schedule
import ccxt

# アカウント
exchanges = {
    "ftx": {
        "apiKey": "",
        "secret": ""
    }
}

# 取引所
Exchange = "ftx"
exchange = eval('ccxt.' + Exchange + '()')
exchange.apiKey = exchanges[Exchange]["apiKey"]
exchange.secret = exchanges[Exchange]["secret"]

# 注文
symbol = 'BTC/JPY'
amount = 0.001
side = 'buy'

# LINEメッセージ
def line_bot(msg):
    line_notify_token = ''
    line_notify_api = 'https://notify-api.line.me/api/notify'
    message = msg
    payload = {'message': message}
    headers = {'Authorization': 'Bearer ' + line_notify_token}
    line_notify = requests.post(line_notify_api, data=payload, headers=headers)
    return line_notify

def task():
    print("------------------------------------------------" + "\n")
    now = datetime.now()
    print(now.strftime('%Y/%m/%d %H:%M:%S'))

    print(Exchange + "【新規注文】" + "\n")
    exchange.create_order(
        symbol=symbol,
        type='market',
        side=side,
        amount=str(amount)
    )
    print("数量:",amount, "売買:",side)

    balance = exchange.fetch_balance()
    ordered_price = exchange.fetch_my_trades(symbol)[-1]['info']['price']

    print("\n" + "約定価格:" + str(Decimal(ordered_price).quantize(Decimal("0"))) + " 円" + "\n")
    print("BTC残高:" + str(Decimal(balance["BTC"]["total"]).quantize(Decimal("0"))) + "\n")
    print("JPY残高:" + str(Decimal(balance["JPY"]["total"]).quantize(Decimal("0"))) + " 円" + "\n")

    msg1 = ("\n" + "******************************" + "\n"
                  + "【新規注文】" + "\n"
                  + "約定価格:" + str(Decimal(ordered_price).quantize(Decimal("0"))) + " 円" + "\n"
                  + "BTC残高:" + str(Decimal(balance["BTC"]["total"]).quantize(Decimal("0"))) + "\n"
                  + "JPY残高:" + str(Decimal(balance["JPY"]["total"]).quantize(Decimal("0"))) + " 円" + "\n"
                  + "******************************")
    line_bot(msg1)

    if int(balance["JPY"]["free"]) < 5000:  # 設定した金額以下になったら、買付余力の減少を通知
        msg2 = ("\n" + "******************************" + "\n"
                 + "買付余力が少なくなっています!" + "\n" + "\n"
                 + "JPY買付余力:" + str(round(balance["JPY"]["free"])) + " 円" + "\n"
                 + "******************************")
        print("買付余力が少なくなっています!" + "\n" + "JPY買付余力:" + str(Decimal(balance["JPY"]["free"]).quantize(Decimal("0"))) + " 円" + "\n")
        line_bot(msg2)

    print("------------------------------------------------" + "\n")
    return

# タスク実行スケジュール(指定時間になったらtaskを実行)
schedule.every().day.at("09:00").do(task)

while True:
    try:
        schedule.run_pending()
        sleep(1)
    except Exception as e:
        print(e)
        print("エラーが発生したので終了")
        msg3 = "エラーが発生したので終了" + "\n" + str(e)
        line_bot(msg3)
        break

symbolやタスク実行時間をいじれば、仕込むトークンやタイミングを簡単に改変できます。

注意事項

本noteは、情報提供を目的としたものであり、投資の助言・勧誘等を目的としたものではありません。

本noteの利用によるあらゆる損害は、完全に自己責任でお願いします。

最後に

ちなみにぼくは、2017年から界隈に参戦している古参系兼業Botterです。

給付金ムーブからDEXまで、エッジがあるところはどんどん参戦していくスタンスですw

これからも随時クリプト関連の情報発信をしていくので、よかったらフォローお願いします!

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