ChatGPT Trading Bot
中文 | English
這個 Repository 會教你如何叫 ChatGPT 幫你寫交易程式,並且將程式碼部署到 Heroku 上,實現自動化交易。本篇所串接的交易所為幣安交易所,若玩家們有其他交易平台,可以自行串接。
ChatGPT 訓練方式
- 首先,我先讓 NotionAI 幫我發想了十個可能的交易策略,如下:
- A momentum trading strategy based on price and volume data
- A mean reversion strategy using Bollinger Bands and RSI indicators
- A trend following strategy using moving averages and MACD indicator
- A breakout trading strategy based on support and resistance levels
- A pairs trading strategy using cointegration analysis
- A news-based trading strategy using sentiment analysis on financial news
- An arbitrage trading strategy using cross-market analysis
- A swing trading strategy using candlestick patterns and chart analysis
- A quantitative trading strategy based on statistical models and machine learning algorithms
- A position trading strategy using fundamental analysis and value investing principles
- 跟 ChatGPT 這樣說:
Give me pipescript code with version 4 running on TradingView for {交易策略}
,所以隨便一個範例如下:Give me pipescript code with version 4 running on TradingView for A momentum trading strategy based on price and volume data.
- 複製 ChatGPT 的程式碼,有些部分需要微調
- 針對程式碼的第二行,有時候 ChatGPT 會給你
study
要改成strategy
, - 有時候進出場的那段程式碼,他會給你
if buy_signal alert("Buy Signal") if sell_signal alert("Sell Signal")
- 要改成以下的程式碼,才會在回測時觸發
if buy_signal strategy.entry("Buy", strategy.long) if sell_signal strategy.entry("Sell", strategy.short)
- 在 Buy, Sell, Buy Exit, Sell Exit 後面,需要添加參數
alert_message
,這樣後續設定 Notification 時才不會出錯。if long_bb and long_ma and macd_above_signal and time >= start_time strategy.entry("Buy", strategy.long, alert_message="Buy") if short_bb and short_ma and macd_below_signal and time >= start_time strategy.entry("Sell", strategy.short, alert_message="Sell") if exit_bb or exit_ma strategy.exit('Buy Exit', 'Buy', alert_message="Buy_Exit") strategy.exit('Sell Exit', 'Sell', alert_message="Sell_Exit")
注意:有時候 ChatGPT 給你的程式碼會跑不動,因此可以多問他幾次,或者將錯誤訊息拋給他。
- 針對程式碼的第二行,有時候 ChatGPT 會給你
- 調整參數,以獲得最好的成效,如下圖所示:
自動化流程安裝步驟
Token 取得
- 登入 Binance
- 登入後左方有一個
API Management
,進入後再右上角按下Create
- 就會取得
API Key
和Secret Key
專案設置
- Fork Github 專案:
- 註冊/登入 GitHub
- 進入 ChatGPT-Trading-Bot
- 點選
Star
支持開發者 - 點選
Fork
複製全部的程式碼到自己的倉庫
- 部署空間註冊(免費空間):
- 註冊/登入 Heroku
- 右上方有一個
New
->Create new app
- App Name:
輸入此 App 名稱
,Region
:Europe
Create app
注意:選擇部署平台時有兩個限制:幣安若需要合約交易,則需要有 IP 位置、幣安的 API 有地區限制,像是 IP 在美國的地區就無法使用。
專案執行
- 環境變數設定
- 點擊
Settings
->Reveal Config Vars
- 新增環境變數,需新增:
- API Key:
- key:
API_KEY
- value:
[由上方步驟一取得]
- key:
- API SECRET KEY:
- key:
API_SECRET_KEY
- value:
[由上方步驟一取得]
- key:
- PASSPHRASE -> 用途是 TradingView 打 Request 到 Server 的時候,可以當作 Token 的東西,避免讓所有人都可以打 API
- key:
PASSPHRASE
- value:
用戶自行生成,步驟四會再用到
- key:
- API Key:
- 點擊
- 部署步驟
- 利用 Terminal 進入
ChatGPT-Trading-Bot
所在的資料夾 ls
看一下資料夾,是否和以下相同Procfile demo src main.py runtime.txt README.md README.en.md requirements.txt
- 安裝 Heroku cli
- 部署,可參考 Deploy 頁面下方流程
- 先登入 Heroku,在 Terminal 輸入:
$ heroku login
- 新增位置,在 Terminal 輸入:
$ heroku git:remote -a [你的 App Name]
- 先登入 Heroku,在 Terminal 輸入:
- 將 repo 推上 Heroku,在 Terminal 輸入:
$ git push heroku main
- 部署成功後,你的網址列會在
Settings
->Domains
- 按下連結後,會看到
Hello, World!
- Terminal 輸入
heroku logs --tail
找到 "My IP" 的地方,把 IP 複製下來。例如:2023-03-05T13:38:36.171417+00:00 app[web.1]: My IP: 54.78.178.135
- 回到 Binance ,剛剛那個 Token ,點擊
Edit restrictions
-> 下方IP access restrictions
勾選Restrict access to trusted IPs only (Recommended)
-> 並將上一步驟 IP 加進去。 - 上方
Enable Futures
打勾 - 按下
Save
- 利用 Terminal 進入
- CronJob 定時發送請求
- 註冊/登入 cron-job.org
- 進入後面板右上方選擇
CREATE CRONJOB
Title
輸入ChatGPT-Trading-Bot
,網址輸入上一步驟的網址- 下方則每
5 分鐘
打一次 - 按下
CREATE
- Trading View Alert 設定
- 在 TradingView 下方
Strategy Tester
,選擇你的策略,並按下鬧鐘的 icon Settings
下方 Message 輸入:例如{ "passphrase": "環境設定時的 PASSPHRASE", "symbol": "要交易的幣種", "leverage": 槓桿數, "quantity": 要交易的數量, "time": "{{time}}", "close": {{close}}, "message": {{strategy.order.alert_message}} }
{ "passphrase": "Zw'4Tx^5/]f/pN>}fx*9m6<X,fxLx;x(", "symbol": "BTCUSDT", "leverage": 10, "quantity": 0.002, "time": "{{time}}", "close": {{close}}, "message": {{strategy.order.alert_message}} }
解釋:合約交易設定
BTCUSDT
交易對槓桿為10
倍,數量為0.002
個比特幣。- Notifications 設定
- Webhook URL 設定: Heroku 裡的 URL (
Settings
->Domains
)+/webhook
- 例如
https://chatgpt-trading-bot.herokuapp.com/webhook
- Webhook URL 設定: Heroku 裡的 URL (
- 在 TradingView 下方
支持我們
如果你喜歡這個專案,願意支持我們,可以請我們喝一杯咖啡,這會成為我們繼續前進的動力!