🔥《ChatGPT 指令大全與創新應用》新書上架!👉 立即購買
ChatGPT 攻略/ChatGPT 串接教学

ChatGPT 自动化交易教学文,协助你实现自动化投资理财! (实测有效)

ExplainThis 现在有提供 ChatGPT 串接咨询服务,不论是要串接 ChatGPT API 到既有平台,或是用 ChatGPT API 帮你的企业打造客制化应用,都欢迎填写此份表单,我们很乐意协助你的企业与产品 🙂。

👉 填写 《ChatGPT 串接服务申请》表单

ChatGPT Trading Bot

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

成效表现

ChatGPT Trading Bot Demo 1
ChatGPT Trading Bot Demo 1
ChatGPT Trading Bot Demo 2
ChatGPT Trading Bot Demo 2

快速看一下我叫 ChatGPT 帮我写的策略成效,以上两个是完全不同的策略,而微调一下参数后,在比特币的交易上都有不错的成效,而这是怎么做到的呢?我们一步一步来拆解。

本次专案程式码:TheExplainthis/ChatGPT-Trading-Bot,如果你在实作上遇到任何问题,欢迎直接在 Github 上发一个 issue,我们会定期回答 issue 专区的问题。

ChatGPT 训练方式

  1. 首先,我先让 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
  2. 再来,可以跟 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.
    
  3. 复制 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 给你的程式码会跑不动,因此可以多问他几次,或者将错误讯息抛给他。

  4. 调整参数,以获得最好的成效,如下图所示:

    ChatGPT Trading Bot Demo 1
    ChatGPT Trading Bot Demo 1

自动化流程安装步骤

Token 取得

  1. 登入 Binance

  2. 登入后左方有一个 API Management ,进入后再右上角按下 Create

    Binance Create Token 1
    Binance Create Token 1
    Binance Create Token 2
    Binance Create Token 2
  3. 就会取得 API KeySecret Key

    Binance Create Token 3
    Binance Create Token 3

专案设置

  1. Fork Github 专案:

    1. 注册/登入 GitHub
    2. 进入 ChatGPT-Trading-Bot
    3. 点选 Star 支持开发者
    4. 点选 Fork 复制全部的程式码到自己的仓库
  2. 部署空间注册(免费空间):

    1. 注册/登入 Heroku2. 右上方有一个 New -> Create new app

    2. App Name: 输入此 App 名称 , Region: Europe

    3. 按下Create app

      Heroku Create app
      Heroku Create app

    ⚠️ 选择部署平台时有两个限制:币安若需要合约交易,则需要有 IP 位置、币安的 API 有地区限制,像是 IP 在美国的地区就无法使用。

专案执行

  1. 环境变数设定

    1. 点击 Settings -> Reveal Config Vars
    2. 新增环境变数,需新增:
      • API Key: key: API_KEY value: [由上方步骤一取得]
      • API SECRET KEY: key: API_SECRET_KEY value: [由上方步骤一取得]
      • PASSPHRASE -> 用途是 TradingView 打 Request 到 Server 的时候,可以当作 Token 的东西,避免让所有人都可以打 API key: PASSPHRASE value: 用户自行生成,步骤四会再用到
    Heroku Add Environment Variables
    Heroku Add Environment Variables
  2. 部署步骤

    1. 利用 Terminal 进入 ChatGPT-Trading-Bot 所在的资料夹

    2. ls 看一下资料夹,是否和以下相同

      Procfile;
      demo;
      src;
      main.py;
      runtime.txt;
      README.md;
      README.en.md;
      requirements.txt;
      
      Heroku Add Environment Variables
      Heroku Add Environment Variables
    3. 安装 Heroku cli

    4. 部署,可参考 Deploy 页面下方流程

      • 先登入 Heroku,在 Terminal 输入:

        $ heroku login
        
        Heroku Add Environment Variables
        Heroku Add Environment Variables

        按下 Enter 后,他会打开浏览器,并且要求登入,登入成功后即完成。

      • 新增位置,在 Terminal 输入:

        $ heroku git:remote -a [你的 App Name]
        
    5. 将 repo 推上 Heroku,在 Terminal 输入:

      $ git push heroku main
      
    6. 部署成功后,你的网址列会在 Settings -> Domains

      Heroku Get URL
      Heroku Get URL
    7. 按下连结后,会看到 Hello, World!

    8. 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
      Heroku Get IP
    9. 回到 Binance ,刚刚那个 Token ,点击 Edit restrictions -> 下方 IP access restrictions 勾选 Restrict access to trusted IPs only (Recommended) -> 并将上一步骤 IP 加进去。

    10. 上方 Enable Futures 打勾

    11. 按下 Save

      Heroku Get IP
      Heroku Get IP

⚠️ 免费版本的 Heroku 若 30 分钟内无人发送请求,则系统会进入休眠,因此需要下一步骤。

  1. CronJob 定时发送请求

    1. 注册/登入  cron-job.org

    2. 进入后面板右上方选择  CREATE CRONJOB

      CronJob Step 1
      CronJob Step 1
    3. Title  输入  ChatGPT-Trading-Bot,网址输入上一步骤的网址

    4. 下方则每  5 分钟  打一次

    5. 按下  CREATE

      CronJob Step 2
      CronJob Step 2
  2. Trading View Alert 设定

    1. 在 TradingView 下方 Strategy Tester ,选择你的策略,并按下闹钟的 icon

    2. 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 个比特币。

  3. Notifications 设定

    1. Webhook URL 设定: Heroku 里的 URL (Settings -> Domains )+ /webhook

      例如:

      https://chatgpt-trading-bot.herokuapp.com/webhook
      
    Notifications setting
    Notifications setting

Q&A

  1. 如何测试自动化串接是否有串上?

    可以在 TradingView 上,开一个即时的 Alert,像是当前币价为 25000,则设一个 Alert 为 cross 25000,然后让他快速触发,但因为是即时触发,而非策略触发,所以 "message": {{strategy.order.alert_message}} 可以改成 "message": "Buy" ,不然 message 会是空的。

  2. 每一次交易一定要设定 quantity 不能是一个比例吗?

    这边我多设定一个参数是 max_quantity_ratio ,他会根据杠杆数,计算最大的 quantity 数量,再乘以一个比例,举例来说 max_quantity_ratio 设为 0.01 则表示 1% 的资产。

  3. 程式码有误,该如何 Debug?

    可以在 Terminal 输入 heroku logs --tail,先确认错误问题为何,若无法自行解决可以发 Issue

© 2023 explainthis.io
酉是數據科技股份有限公司