# 用Python+Heroku做一個FTX自動放貸機器人 ###### tags: `Python` 先聲明,加密貨幣屬高風險投資,這個專案單純出自個人興趣 為了練Python隨手寫寫的side project 不構成任何投資建議,裡面投入的資金也是我賠光都無所謂的零用錢 要投資加密貨幣務必DYOR 我先前操作FTX pro放貸功能時 一直很好奇,為什麼他們沒有開啟複利再投入的功能 網路上爬一下文,看到很多人寫了機器人 身為工程師當然也要自己做一個 FTX提供了[API文檔]("https://docs.ftx.com/#overview") 方便查找你要的功能 首先,你要到FTX官網,右上角點擊個人icon > 設置 > Api 點擊「創建API key」 創建完成後,保管好你的API key和secret key 之後串接API會需要 接著安裝套件CCXT ``` pip install ccxt ``` 到它的GitHub官網可以看各種範例code,包含Python 接下來直接看程式碼 ``` import ccxt import argparse parser = argparse.ArgumentParser() parser.add_argument('-a', '--account', help='設置子帳號,預設是主帳號', default=None) parser.add_argument('-c', '--coin', help='設定要貸出貨幣,我預設用UST', default='UST') parser.add_argument('-r', '--rate', help='最低每小時貸出利率', default=1e-5) # ~ 8.76 % / year if __name__ == '__main__': args = parser.parse_args() params = { 'apiKey': 你的API key, 'secret': 你的API secret key } # check subaccount subaccount = args.account if subaccount is not None: config['headers'] = { 'FTX-SUBACCOUNT': subaccount } # connect ftx = ccxt.ftx(params) # get balance balance = ftx.fetch_balance() coin = args.coin for item in balance['info']['result']: if item ['coin'] == coin: size = item['total'] break # renew lending body = { "coin": coin, "size": size, "rate": args.rate } res = ftx.private_post_spot_margin_offers(body) if res['success']: print('Success') else: print(res.json()) raise Exception('lending fail') ``` 執行可以輸入簡單的 ``` python main.py ``` 或指定子帳號、幣別、利率 ``` python main.py -a "子帳號名" -c "USDC" -r "1e-7" ``` 程式碼寫好後,下一步就是把它部署到Heroku上 讓它每隔一小時自動執行 操作也很簡單 先確認專案裡有這四項東西 1. Procfile: 設定是Web(網站建置)還是Worker(執行腳本),這裡我使用後者,檔案內容為 `worker: python3 main.py` 2. Requirements.txt:輸入需要安裝的dependencies 5. Runtime.txt:執行的python版本 6. 你要執行的檔案,這裏示範的檔案叫main.py 進入Heroku頁面後,點右上方New > Create New App 為這個專案建立App,並加入Pipe Line 之後去到Pipe Line > Resources > Find More Add-Ons 我用的排程插件是Heroku Scheduler 透過簡單的操作介面,即可設定你要重複執行的時間,以及執行工作 我的執行工作很簡單,就是讓它跑一次 `python3 main.py` [專案原始碼](https://github.com/PinYuanChen/FTX_Auto_Lending_Bot) 參考資料 https://github.com/dwy6626/ftx-lending-bot https://medium.com/analytics-vidhya/how-to-schedule-a-python-project-script-in-heroku-with-zero-cost-f27d37ad7d4e