ChatGPT 自动化交易教学文,协助你实现自动化投资理财! (实测有效)
ExplainThis 现在有提供 ChatGPT 串接咨询服务,不论是要串接 ChatGPT API 到既有平台,或是用 ChatGPT API 帮你的企业打造客制化应用,都欢迎填写此份表单,我们很乐意协助你的企业与产品 🙂。
👉 填写 《ChatGPT 串接服务申请》表单

💡 温馨小提醒:大家都知道 ChatGPT 很会瞎掰和装懂,所以要拿你的真金白银跟他玩,可能需要评估一下,本文仅当作学术研究、饭后闲聊话题。
成效表现


快速看一下我叫 ChatGPT 帮我写的策略成效,以上两个是完全不同的策略,而微调一下参数后,在比特币的交易上都有不错的成效,而这是怎么做到的呢?我们一步一步来拆解。
本次专案程式码:TheExplainthis/ChatGPT-Trading-Bot,如果你在实作上遇到任何问题,欢迎直接在 Github 上发一个 issue,我们会定期回答 issue 专区的问题。
ChatGPT 训练方式
-
首先,我先让 Notion AI 帮我发想了十个可能的交易策略,如下:
- 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 Trading Bot Demo 1
自动化流程安装步骤
Token 取得
-
登入 Binance
-
登入后左方有一个
API Management
,进入后再右上角按下Create
Binance Create Token 1 Binance Create Token 2 -
就会取得
API Key
和Secret Key
Binance Create Token 3
专案设置
-
Fork Github 专案:
- 注册/登入 GitHub
- 进入 ChatGPT-Trading-Bot
- 点选
Star
支持开发者 - 点选
Fork
复制全部的程式码到自己的仓库
-
部署空间注册(免费空间):
-
注册/登入 Heroku2. 右上方有一个
New
->Create new app
-
App Name:
输入此 App 名称
, Region:Europe
-
按下
Create app
Heroku Create app
⚠️ 选择部署平台时有两个限制:币安若需要合约交易,则需要有 IP 位置、币安的 API 有地区限制,像是 IP 在美国的地区就无法使用。
-
专案执行
-
环境变数设定
- 点击
Settings
->Reveal Config Vars
- 新增环境变数,需新增:
- API Key:
key:
API_KEY
value:[由上方步骤一取得]
- API SECRET KEY:
key:
API_SECRET_KEY
value:[由上方步骤一取得]
- PASSPHRASE -> 用途是 TradingView 打 Request 到 Server 的时候,可以当作 Token 的东西,避免让所有人都可以打 API
key:
PASSPHRASE
value:用户自行生成,步骤四会再用到
- API Key:
key:
Heroku Add Environment Variables - 点击
-
部署步骤
-
利用 Terminal 进入
ChatGPT-Trading-Bot
所在的资料夹 -
ls
看一下资料夹,是否和以下相同Procfile; demo; src; main.py; runtime.txt; README.md; README.en.md; requirements.txt;
Heroku Add Environment Variables -
安装 Heroku cli
-
部署,可参考 Deploy 页面下方流程
-
先登入 Heroku,在 Terminal 输入:
$ heroku login
Heroku Add Environment Variables 按下 Enter 后,他会打开浏览器,并且要求登入,登入成功后即完成。
-
新增位置,在 Terminal 输入:
$ heroku git:remote -a [你的 App Name]
-
-
将 repo 推上 Heroku,在 Terminal 输入:
$ git push heroku main
-
部署成功后,你的网址列会在
Settings
->Domains
Heroku Get URL -
按下连结后,会看到
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
Heroku Get IP -
回到 Binance ,刚刚那个 Token ,点击
Edit restrictions
-> 下方IP access restrictions
勾选Restrict access to trusted IPs only (Recommended)
-> 并将上一步骤 IP 加进去。 -
上方
Enable Futures
打勾 -
按下
Save
Heroku Get IP
-
⚠️ 免费版本的 Heroku 若 30 分钟内无人发送请求,则系统会进入休眠,因此需要下一步骤。
-
CronJob 定时发送请求
-
注册/登入 cron-job.org
-
进入后面板右上方选择
CREATE CRONJOB
CronJob Step 1 -
Title
输入ChatGPT-Trading-Bot
,网址输入上一步骤的网址 -
下方则每
5 分钟
打一次 -
按下
CREATE
CronJob Step 2
-
-
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
Notifications setting -
Q&A
-
如何测试自动化串接是否有串上?
可以在 TradingView 上,开一个即时的 Alert,像是当前币价为 25000,则设一个 Alert 为 cross 25000,然后让他快速触发,但因为是即时触发,而非策略触发,所以
"message": {{strategy.order.alert_message}}
可以改成"message": "Buy"
,不然 message 会是空的。 -
每一次交易一定要设定 quantity 不能是一个比例吗?
这边我多设定一个参数是
max_quantity_ratio
,他会根据杠杆数,计算最大的 quantity 数量,再乘以一个比例,举例来说max_quantity_ratio
设为 0.01 则表示 1% 的资产。 -
程式码有误,该如何 Debug?
可以在 Terminal 输入
heroku logs --tail
,先确认错误问题为何,若无法自行解决可以发 Issue