# 用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