如何利用ChatGpt做一个币圈量化交易机器人?

ChatGpt很高端,作为币圈韭菜,当然不能错过利用ChatGpt发财的机会。币圈韭菜,21年牛市翻了15倍,22年被Luna无情收割。
现在开始要好好学习研究Defi,撸Airdrop,做量化。
这篇文章会分为4个部分来介绍量化机器人:
1. 用Python写一个交易程序
2. 服务器的构建与Api接口
3. 用TradingView提供交易信号
4. 实盘交易测试
Part 1: 如何用Python写一个量化程序?
废话不多讲,直接上代码。
(这里用的是Binance的接口)
from flask import Flask, request #导入后端框架
import json
import ccxt #导入开单工具
import time
bn = ccxt.binance({
"apiKey": 'API接口',
"secret": 'API密钥',
'enableRateLimit': True,
"timeout": 3000,
"enableRateLimit": False
})
#开单函数(这里是Binance Api接口的程序)
def do(data):
try:
symbol = data['symbol'].replace('PERP','')
side = data['side']
amount = float(format(float(data['amount']),'.%sf' % data['point']))
if side=='buy':
bn.fapiPrivatePostOrder({"symbol": symbol,"side": "BUY","type": "MARKET", "quantity": amount, 'reduceOnly':'false', "timestamp": int(time.time()*1000)})
else:
bn.fapiPrivatePostOrder({"symbol": symbol,"side": "SELL","type": "MARKET", "quantity": amount, 'reduceOnly':'false', "timestamp": int(time.time()*1000)})
return
except Exception as e: print(e)
app = Flask(__name__)
def after_request(resp):
resp.headers['Access-Control-Allow-Origin'] = '*'
return resp
app.after_request(after_request)
@app.route("/open",methods=['POST'])
def open1():
data = json.loads(request.data)
do(data)
return '1'
if __name__ == '__main__':
app.run('0.0.0.0', 80) #端口接入
这里是几个包的导入与调用,需要一些Python的知识去理解。这里是一个非常基础的架构,可以基于此做一些优化,不过如果不明白任何Python知识,直接Copy/Paste就可以。
(Python比较复杂,不是一篇文章就可以说清楚的,做量化必须要有一个很好的Coding基础。)
Part 2: 服务器的构建与Api接口?
一个高效的量化程序肯定是需要一个服务器来运行,我们不可能一直开着自己的电脑去跑程序,需要一个服务器在后台来帮我们24小时运行。
作为一个个人使用的服务器,云服务器即可解决问题,主流的云服务器平台,像腾讯云、阿里云、亚马逊等就可以。
(一定要租新加坡、日本这些地方的服务器,因为国内的服务器会被和谐)
这里用阿里云来举个例子:
如果你是用阿里云,就按照下面的内容配置即可:

这里镜像程序一定要选Debian,因为我们的服务器要用Linux配置。
至于套餐配置,因人而异,价格决定性能,这个看你自己的需求,不过我推荐2GB内存,4TB流量的(性能比较好,多端口无忧),差不多是100多一个月。
租完服务器,我们就要开始配置:
因为是Linux系统,所以这里我推荐用FinalShell来配置:
配置的话需要选择SSH链接:

之后按照提示输入服务器地址即可:
(这里注意,我选择的是密码验证,当然用私钥链接也是可以的。)

如果链接成功了,端口就会显示:(如果出现下图提示,那么就意味着已经进入服务器了)

因为Python服务器是没有的,所以我们还需要下载Python以及Python包:
(具体指令如下)
sudo su - root #转换到root
sudo apt update #更新自带安装工具
sudo apt install python3-pip #安装pip3
pip3 --version #检查pip3是否安装成功
apt-get install screen #安装screen
pip3 install flask #安装flask框架
pip3 install ccxt #安装ccxt框架
这里的指令切记一条一条输入,当全部输入完成之后,可以用:
pip list #检查框架是否下载完成
当这里框架搭建好之后,就可以导入我们的Python机器人了。
这里注意,一般我们要把Python程序导入到admin下面,因为服务器权限问题:
(指令如下)
cd ../home/admin #定位到Admin

在Admin附录下,上传Python机器人文件即可。
在导入前,需要加入Api端口:

这个需要自己去创建,保存好私钥和API Key输入到机器人文件里就可以。
(交易对一定要选择单边交易模式)
因为之后运用的交易信号是单边的交易指令,所以这里务必需要设置一下。

注意:这里需要开通Api端口的交易权限。(服务器的IP需要输入到Api的白名单里面)

这里输入之后可以在SSH里打开看一下,确认无误之后就可以准备运行机器人了。
导入文件之后,建议用Screen去创建一个窗口,防止掉线。
(指令如下)
screen
一般输入后,会显示这个窗口:

当窗口建立完毕之后,就可以运行机器人,指令如下:
python3 bot.py #运行机器人
出现以下指令就证明机器人已经可以正常运行了:

当机器人已经可以成功运行后,我们可以来测试一下:(这边推荐使用Postman)
注意:这里测试选择POST
后面输入:
http://(你的服务器地址)/open #一定要加http

后面选择RAW模式,然后输入指令:
{
"symbol":"DOGEUSDTPERP", #交易对名称
"side":"buy", #交易指令
"amount":"500", #数量
"point":"0" #位数(交易对象的最小交易单位)
}
注意,point参数后面需要填当前交易对可购买的最小位数,例如:ETH最少购买0.001个币, 则point的参数需为3,Doge最少购买1个币,则point参数需为0。
然后点击SEND即可,输出栏会有返回参“1”,然后打开交易所,如果发现交易已经成功,那么就证明机器人在工作了,服务器也会有提示。
之后就可以开始利用TradingView来发送指令让机器人自动运行。
(上面的内容比较梗概,需要有些服务器基础才可以更好的理解,有什么问题和不理解的,欢迎DM我)
Part 3: 利用TradingView发松交易信号
首先,先让ChatGpt来写一下量化信号程序:
(这里选取了MACD来作为交易指标)
因为TradingView支持Pine语言,所以这里用了Pine语言让ChatGpt进行编译。

当指标完成之后,就把这写代码导入到TradingView的Pine编译器就可以。

(这里注意具体的代码还是需要修改一下,因为是单边交易,所以只能选择空或者是多来进行交易)
我修改完之后,代码如下:
//@version=5
strategy("MACD中短线策略", overlay=true,default_qty_type = strategy.cash,initial_capital = 1000,default_qty_value = 1000)
//定义MACD指标
fast_length = input(title="快线移动平均线长度", defval=12)
slow_length = input(title="慢线移动平均线长度", defval=26)
sig_length = input(title="信号线移动平均线长度", defval=9)
macdLine = ta.ema(close, fast_length) - ta.ema(close, slow_length)
signalLine = ta.ema(macdLine, sig_length)
histogram = macdLine - signalLine
//定义移动平均线指标
ma_length = input(title="移动平均线长度", defval=20)
ma = ta.sma(close, ma_length)
//产生交易信号
buy_signal = ta.crossover(macdLine, signalLine) and close > ma
sell_signal = ta.crossunder(macdLine, signalLine)
//买入逻辑
if buy_signal
strategy.entry("Buy", strategy.long)
//卖出逻辑
if sell_signal
strategy.close_all('sell')
(这里是一个多头策略,如果需要空头策略,调换一下触发信号就可以)
弄好交易信号后,就需要利用TV来发送信号到服务器:
点击这个小时钟就可以来创建警报:

点开之后,输入发送的消息,这里是JSON语言。

代码如下:
{"side":"{{strategy.order.action}}",
"symbol":"{{ticker}}",
"amount":"{{strategy.order.contracts}}",
"point":"0"}
输入完之后,就可以利用通知功能向我们的服务器发送信号:

这里的话需要在Webhook URL里面输入和测试一样的指令。
当输入完成之后,自动交易信号就创建完毕:
然后就开始自动交易了:

Part 4: 实盘测试
下面是一个回测数据:
是ETH,4小时的K线进行的多头策略。

我会用实盘进行测试,交易对是OP,挺看好OP的生态,用的是多头策略,至于效果如何,就需要时间的检验。