【小白量化智能体】应用2:编写通达信绘图指标及生成Python绘图程序
【小白量化智能体】是指能够自主或半自主地通过与环境的交互来实现目标或任务的计算实体。智能体技术是一个百科全书,又融合了人工智能、计算机科学、心理学和经济学等多个领域的知识,能够在复杂环境中自主决策和行动的实体。能够实现量化投资的各方面应用,例如自动设计指标,自动编写Python自动交易策略等等。
小白量化智能体能写通达信公式,能写股票和期货的Python策略。
我们下面给大家介绍设计通达信公式并生成Python绘图程序。
一、生成通达信指标公式
在小白量化智能体中,输入下面信息:
做一个通达信绘图指标。
A1=收盘价的10日指数移动平均
A2=A1角度线
A3=A1的3日简单移动平均
由于我们没有删除前面对话信息,所以【小白量化智能体】以为我们要做选股指标。生成信息如下:
A1 := EMA(C,10);
A2 := ATAN((A1/REF(A1,1)-1)*100)*57.3;
A3 := MA(A1,3);
XG: 条件;
并作相应说明:
上述公式中,A1计算了收盘价的 10 日指数移动平均;A2通过ATAN函数计算A1的角度线(这里角度线计算方式是一种常用方法,57.3是将弧度转换为角度的常数);A3计算了A1的 3 日简单移动平均。不过最后一行XG: 条件;这里的 “条件” 你需要根据实际的选股要求来设定,比如A1 > A3表示当A1大于A3时给出选股信号,完整的可以写成XG: A1 > A3;
我们修改一下指标,如下:
A1 := EMA(C,10);
A2 : ATAN((A1/REF(A1,1)-1)*100)*57.3;
A3 : MA(A1,3);
二、把通达信指标公式转化为标准指标公式
上面生成的通达信指标已经符合标准指标语法。
这一步可以省略不操作。
三、用标准公式生成Python程序
小白量化智能体的强项是生成各种Python量化程序。
我们在【小白量化智能体】中输入下面内容:
我们设计5个指标图形,第5个指标图是前面【小白量化智能体】生成的自编指标。
用智能体工作流,帮我做一个Python绘图程序,
显示5个图形内容如下:
1、K线图,不要网格,叠加布林轨道
2、成交量
3、KDJ指标
4、MACD指标
5、自编公式:
A1 := EMA(C,10);
A2 : ATAN((A1/REF(A1,1)-1)*100)*57.3;
A3 : MA(A1,3);
下面是【小白量化智能体】生成的Python程序。
import time
import matplotlib.pyplot as plt
import HP_global as g
import HP_tdx as htdx # 小白量化行情模块
from HP_formula import * # 小白量化公式函数模块
import HP_plt as hplt
plt.rcParams['font.sans-serif'] = ['SimHei'] # Windows可用
plt.rcParams['axes.unicode_minus'] = False # 解决负号显示问题
# 白底色
g.ubg = 'w'
g.ufg = 'b'
g.utg = 'b'
g.uvg = '#1E90FF'
## 黑底色
g.ubg = '#07000d'
g.ufg = 'w'
g.utg = 'w'
g.uvg = '#FFD700'
global CLOSE, LOW, HIGH, OPEN, VOL, AMOUNT
global C, L, H, O, V, AMO
#### 路径型指标
def BOLL(N=20, P=2):
MID = MA(CLOSE, N)
UPPER = MID + STD(CLOSE, N) * P
LOWER = MID - STD(CLOSE, N) * P
return UPPER, MID, LOWER
#### KDJ 指标
def KDJ(N=9, M1=3, M2=3):
RSV = (CLOSE - LLV(LOW, N)) / (HHV(HIGH, N) - LLV(LOW, N)) * 100
K = SMA(RSV, M1, 1)
D = SMA(K, M2, 1)
J = 3 * K - 2 * D
return K, D, J
#### MACD 指标
def MACD(SHORT=12, LONG=26, MID=9):
DIF = EMA(CLOSE, SHORT) - EMA(CLOSE, LONG)
DEA = EMA(DIF, MID)
MACD = (DIF - DEA) * 2
return DIF, DEA, MACD
m = 1
cd = '600030'
hq = htdx.TdxInit(ip='183.60.224.178', port=7709) ## 初始化通达信
df3 = htdx.get_security_bars(nCategory=4, nMarket=m, code=cd,
nStart=0, nCount=500) # 获取指定范围的证券 K 线
## 数据规格化
df3.dropna(inplace=True)
# 小白数据规格化
mydf = df3.copy()
CLOSE = mydf['close']
LOW = mydf['low']
HIGH = mydf['high']
OPEN = mydf['open']
VOL = mydf['volume']
C = mydf['close']
L = mydf['low']
H = mydf['high']
O = mydf['open']
V = mydf['volume']
AMO = AMOUNT = mydf['amount']
# 计算指标
UPPER, MID, LOWER = BOLL(N=20, P=2)
K, D, J = KDJ()
DIF, DEA, MACD = MACD()
A1 = EMA(C, 10)
A2 = ATAN((A1 / REFA(A1, 1) - 1) * 100) * 57.3
A3 = MA(A1, 3)
htdx.disconnect() # 关闭连接
# 绘制图形
fig, axes = plt.subplots(5, 1, figsize=(10, 12), dpi=100, sharex=True)
# 1. K 线图,不要网格,叠加布林轨道
ax1 = axes[0]
hplt.ax_K(ax1, mydf, cd, n=0)
UPPER.plot(ax=ax1, label='BOLL UPPER', color='r')
MID.plot(ax=ax1, label='BOLL MID', color='g')
LOWER.plot(ax=ax1, label='BOLL LOWER', color='b')
ax1.grid(False)
ax1.legend()
# 2. 成交量
ax2 = axes[1]
hplt.ax_VOL(ax2, mydf)
# 3. KDJ 指标
ax3 = axes[2]
K.plot(ax=ax3, label='KDJ K', color='r')
D.plot(ax=ax3, label='KDJ D', color='g')
J.plot(ax=ax3, label='KDJ J', color='b')
ax3.legend()
# 4. MACD 指标
ax4 = axes[3]
DIF.plot(ax=ax4, label='MACD DIF', color='r')
DEA.plot(ax=ax4, label='MACD DEA', color='g')
MACD.plot(kind='bar', ax=ax4, label='MACD BAR', color='b', alpha=0.5)
ax4.legend()
# 5. 自编公式
ax5 = axes[4]
A1.plot(ax=ax5, label='A1', color='r')
A2.plot(ax=ax5, label='A2', color='g')
A3.plot(ax=ax5, label='A3', color='b')
ax5.legend()
plt.show()
我们把程序复制到【小白量化智能体】客户端。
运行结果如下:
【小白量化智能体】客户端是纯Python开发的中文Python集成开发工具,支持中文Python语法,内置了小白量化金融模块。
【小白量化智能体】服务器端是基于扣子开发的智能体插件,可以自动生成任何量化Python程序。
大家也可以在扣子商店搜索:小白量化智能体。
今天的文章先写到这里,欢迎继续关注我的博客。后面我还介绍更多的【小白量化智能体】开发Python策略的知识。
超越自己是我的每一步!我的进步就是你的进步!