ChatGPT自动化交易教程,自动化投资理财不是梦!(实测有效)

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

成效表现

ChatGPT自动化交易教程,自动化投资理财不是梦!(实测有效)
ChatGPT Trading Bot Demo 1
ChatGPT自动化交易教程,自动化投资理财不是梦!(实测有效)
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自动化交易教程,自动化投资理财不是梦!(实测有效)
    ChatGPT Trading Bot Demo 1

自动化流程安装步骤

Token 取得

  1. 登入Binance
  2. 登入后左方有一个API Management,进入后再右上角按下CreateChatGPT自动化交易教程,自动化投资理财不是梦!(实测有效)
    Binance Create Token 1
    ChatGPT自动化交易教程,自动化投资理财不是梦!(实测有效)
    Binance Create Token 2
  3. 就会取得 API Key 和Secret KeyChatGPT自动化交易教程,自动化投资理财不是梦!(实测有效)
    Binance Create Token 3

专案设置

  1. Fork Github 专案:
    1. 注册/登入GitHub
    2. 进入ChatGPT-Trading-Bot
    3. 点选 Star 支持开发者
    4. 点选 Fork 复制全部的程式码到自己的仓库
  2. 部署空间注册(免费空间):
    1. 注册/登入Heroku
    2. 右上方有一个New->Create new app
    3. App Name: 輸入此 App 名稱, Region:Europe
    4. 按下Create appChatGPT自动化交易教程,自动化投资理财不是梦!(实测有效)
      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:用戶自行生成,步驟四會再用到ChatGPT自动化交易教程,自动化投资理财不是梦!(实测有效)
    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;
      ChatGPT自动化交易教程,自动化投资理财不是梦!(实测有效)
      Heroku Add Environment Variables
    3. 安装Heroku cli
    4. 部署,可参考Deploy 页面下方流程
      • 先登入Heroku,在Terminal 输入:
        $ heroku login
        ChatGPT自动化交易教程,自动化投资理财不是梦!(实测有效)
        Heroku Add Environment Variables

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

      • 新增位置,在Terminal 输入:
        $ heroku git:remote -a [你的 App Name]
    5. 将repo 推上Heroku,在Terminal 输入:
      $ git push heroku main
    6. 部署成功后,你的网址列会在Settings->Domains
      ChatGPT自动化交易教程,自动化投资理财不是梦!(实测有效)
      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
      ChatGPT自动化交易教程,自动化投资理财不是梦!(实测有效)
      Heroku Get IP
    9. 回到Binance,刚刚那个Token ,点击Edit restrictions-> 下方 IP access restrictions 勾选Restrict access to trusted IPs only (Recommended)-> 并将上一步骤IP 加进去。
    10. 上方 Enable Futures 打勾
    11. 按下Save
      ChatGPT自动化交易教程,自动化投资理财不是梦!(实测有效)
      Heroku Get IP

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

  1. CronJob 定时发送请求
    1. 注册/登入  cron-job.org
    2. 进入后面板右上方选择  CREATE CRONJOB
      ChatGPT自动化交易教程,自动化投资理财不是梦!(实测有效)
      CronJob Step 1
    3. Title  输入  ChatGPT-Trading-Bot,网址输入上一步骤的网址
    4. 下方则每  5 分鐘  打一次
    5. 按下  CREATE
      ChatGPT自动化交易教程,自动化投资理财不是梦!(实测有效)
      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 个比特币。

    1. Webhook URL 设定: Heroku 里的URL (Settings-> Domains)+/webhook例如:
      https://chatgpt-trading-bot.herokuapp.com/webhook
      

      Notifications 设定

    ChatGPT自动化交易教程,自动化投资理财不是梦!(实测有效)
    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
(0)
上一篇 2023年5月10日 09:42
下一篇 2023年5月13日 08:50

相关推荐

分享本页
返回顶部