【小白量化智能体】应用3:编写通达信股票交易指标及生成同花顺交易Python策略程序
【小白量化智能体】是指能够自主或半自主地通过与环境的交互来实现目标或任务的计算实体。智能体技术是一个百科全书,又融合了人工智能、计算机科学、心理学和经济学等多个领域的知识,能够在复杂环境中自主决策和行动的实体。能够实现量化投资的各方面应用,例如自动设计指标,自动编写Python自动交易策略等等。
小白量化智能体能写通达信公式,能写股票和期货的Python策略。
我们下面给大家介绍设计通达信股票交易公式并生成同花顺交易Python策略程序。
一、生成通达信股票交易指标公式
在小白量化智能体中,输入下面信息:
请帮我写一个股票交易指标公式。要求如下:
写完整KDJ算法。
价格突破前10日最高价,不包含今日。成交量大于5日成交均量线。KDJ指标发生金叉买入。
价格跌破5日均线卖出
【小白量化智能体】生成信息如下:
RSV:=(CLOSE-LLV(LOW,9))/(HHV(HIGH,9)-LLV(LOW,9))*100;
K:SMA(RSV,3,1);
D:SMA(K,3,1);
J:3*K-2*D;
ENTERLONG:CROSS(C,REF(HHV(H,10),1)) AND V>MA(V,5) AND CROSS(K,D);
EXITLONG:CROSS(MA(C,5),C);
二、把通达信指标公式转化为标准指标公式
通用标准指标公式是在中国股票和期货软件中,如大智慧、通达信、东方财富等股票软件,文华、博弈大师、金字塔等期货软件,采用的相同语法和相同的函数。
标准指标公式在大智慧、通达信、东方财富等股票软件,文华、博弈大师、金字塔等期货软件,都能通用。
用【小白量化智能体】转化为标准指标公式。
把下面通达信指标公式转为标准指标公式:
RSV:=(CLOSE-LLV(LOW,9))/(HHV(HIGH,9)-LLV(LOW,9))*100;
K:SMA(RSV,3,1);
D:SMA(K,3,1);
J:3*K-2*D;
ENTERLONG:CROSS(C,REF(HHV(H,10),1)) AND V>MA(V,5) AND CROSS(K,D);
EXITLONG:CROSS(MA(C,5),C);
三、用标准股票交易公式生成同花顺交易Python程序
小白量化智能体的强项是生成各种Python量化程序。
我们在【小白量化智能体】中输入下面内容:
请写一个同花顺自动交易Python程序,自编公式内容如下:
RSV := (CLOSE - LLV(LOW, 9)) / (HHV(HIGH, 9) - LLV(LOW, 9)) * 100;
K := SMA(RSV, 3, 1);
D := SMA(K, 3, 1);
J := 3 * K - 2 * D;
ENTERLONG := IF(CROSS(C, REF(HHV(H, 10), 1)) * IF(V > MA(V, 5), 1, 0) * CROSS(K, D), 1, 0);
EXITLONG := IF(CROSS(MA(C, 5), C)>0, 1, 0);
【小白量化智能体】生成代码内容如下:
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 # 小白量化K线绘图模块
是否按金额交易 = True #False=按股数 ,True=按金额
每笔金额 = 10000 # 金额
每笔数量 = 200 # 股数
最大买股数量 = 3
买股数量 = 0
滑点 = 0.001
止损幅度 = -0.03
global CLOSE, LOW, HIGH, OPEN, VOL, AMOUNT
global C, L, H, O, V, AMO
可用余额 = {}
持仓数量 = {}
成本价 = {}
hq = htdx.TdxInit(ip='183.60.224.178', port=7709) ## 初始化通达信
#股票池 = r'D:\new_tdx\T0002\blocknew\zxg8.blk'
股票池 = r'block/沪深3000107592.blk'
codes = htdx.getzxgfile(股票池) # 获取自选股
同花顺委托=r"C:\同花顺软件\同花顺\xiadan.exe"
### 插入自己的股票池
##微信:xblhznt
print('股票池数量:',len(codes))
for m, c in codes:
可用余额[c] = 0
持仓数量[c] = 0
成本价[c] = 0
import easytrader
ths = easytrader.use('ths')
ths.connect("C:\\同花顺软件\\同花顺\\xiadan.exe")
ths.enable_type_keys_for_editor()
#print(ths.balance)
持仓 = ths.position
# print(持仓)
import pandas as pd
# 原始数据(已修正格式)
data = 持仓
# 创建DataFrame
df = pd.DataFrame(data)
if len(df) > 0:
# 数据处理建议:
# 1. 删除无效列
# df = df.drop(columns=['Unnamed: 19', '市场代码'])
# 2. 规范市场名称(处理异常值)
df['交易市场'] = df['交易市场'].str.replace(' ', '') # 去除空格
df.loc[df['交易市场'] == '北京A股', '交易市场'] = '北京A股' # 统一格式
# 3. 类型转换示例
numeric_cols = ['成本价', '市价', '盈亏', '市值']
df[numeric_cols] = df[numeric_cols].astype(float)
# 查看结果
print(df.head(2)) # 展示前两行
print("\nDataFrame结构:")
print(df.info())
for i in range(len(df)):
code = df.证券代码.iloc[i]
可用余额[code] = int(df.可用余额.iloc[i])
持仓数量[code] = int(df.可用余额.iloc[i])
成本价[code] = float(df.成本价.iloc[i])
m = htdx.get_market(code)
if (m, code) not in codes:
# codes.append((m, code))
codes.insert(0, (m, code))
myblocks = []
while True:
nowtime = MACHINETIME()
if nowtime >= 91500 and nowtime <= 92000:
pass
# 9点20分钟到9点25分钟,竞价成交金额大于昨天最大分成交金额的百分之十
if nowtime >= 92000 and nowtime <= 92500:
pass
if nowtime >= 93000 and nowtime < 240000:
for m, c in codes:
df = htdx.get_security_bars(nCategory=4, nMarket=m, code=c,
nStart=0, nCount=200) # 获取指定范围的证券K线
## 数据规格化
df.dropna(inplace=True)
mydf = initmydf(df)
C = CLOSE = mydf['close']
L = LOW = mydf['low']
H = HIGH = mydf['high']
O = OPEN = mydf['open']
V = VOL = mydf['volume']
AMO = AMOUNT = mydf['amount']
# 自编公式计算
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
ENTERLONG = IF(CROSS(C, REF(HHV(H, 10), 1)) * IF(V > MA(V, 5), 1, 0) * CROSS(K, D), 1, 0)
EXITLONG = IF(CROSS(MA(C, 5), C) > 0, 1, 0)
if ENTERLONG.iloc[-1] > 0 and 买股数量 < 最大买股数量 and 持仓数量[c] == 0:
买股数量 = 买股数量 + 1
price2 = round(C.iloc[-1] * (1 + 滑点), 2)
if 是否按金额交易:
amount = 每笔金额 / price2
买入数量 = int(amount / 100) * 100
else:
买入数量 = 每笔数量
print('买入股数:', 买入数量, c, ' 价格:', price2)
ths.buy(c, price=C.iloc[-1], amount=买入数量)
可用余额[c] = 0
持仓数量[c] = 买入数量
成本价[c] = price2
time.sleep(2)
if EXITLONG.iloc[-1] > 0 and 可用余额[c] > 0:
price2 = round(C.iloc[-1] * (1 - 滑点), 2)
print('卖出:', c, ' 价格:', price2, ' 数量:', 可用余额[c])
ths.sell(c, price2, amount=可用余额[c])
可用余额[c] = 0
持仓数量[c] = 0
成本价[c] = 0
买股数量 = max(0, 买股数量 - 1)
if 可用余额[c] > 0 and (C.iloc[-1] - 成本价[c]) / (成本价[c] + 0.000001) <= 止损幅度 and 成本价[c] != 0:
price2 = round(C.iloc[-1] * (1 - 滑点), 2)
print('止损:', c, ' 价格:', price2, ' 数量:', 可用余额[c])
ths.sell(c, price=price2, amount=可用余额[c])
可用余额[c] = 0
print('执行完一轮操作。')
time.sleep(1)
这个程序可以在小白量化客户端中运行。生成的代码没有任何错误。
用户只要简单设置一下,就可以运行程序,实现同花顺全自动交易。
设置通达信自选股文件股票池:
股票池 = r’D:\new_tdx\T0002\blocknew\zxg8.blk’
设置同花顺软件委托程序路径。
同花顺委托=r"C:\同花顺软件\同花顺\xiadan.exe"
【小白量化智能体】客户端是纯Python开发的中文Python继承开发工具,内置了小白量化金融模块。
扣子【小白量化智能体】服务器端是基于扣子开发的智能体插件,可以自动生成任何量化Python程序。
大家也可以在扣子商店搜索:小白量化智能体。
此外,我们也在文心智能体上开发【小白量化智能体】服务器端,目前实现了指标公式的自动编写。
文心【小白量化智能体】服务器端 网址 https://pcufnv.smartapps.baidu.com/
今天的文章先写到这里,欢迎继续关注我的博客。后面我还介绍更多的【小白量化智能体】开发Python策略的知识。
超越自己是我的每一步!我的进步就是你的进步!