【加蛋量化之Ptrade - 第01期】如何使用Ptrade实现通达信公式
关于通达信公式如何使用Ptrade来实现,是很多PTrade初学者遇到的一大难题。今天我们就列举几个使用频率最高的指标供大家参考。
首先我们需要取得一段时间的K线。
his_len = 120
for sec in sec_list:
sec_his = get_history(count=his_len, frequency='1d', field=['close', 'high', 'low'], security_list=sec, fq='pre', include=False)
if sec_his.shape[0] < his_len:
continue
取得数据之后,我们需要进行校验,也就是检查取得的数据是否满足我们的计算需求。举个例子,如果我需要计算30日均线,count数必须填大于30的数字,否则是无法计算出30日均线数据的。也就是说,在后面的校验步骤中,我们需要判断取回的dataframe长度是否满足指标的计算需求,不满足则跳过,继续寻找下一个股票。his_len的数量取决于我们计算的指标所需的K线数的最大值。
校验完成之后,我们就可以进行指标计算了。
Y:=MA(CLOSE, 20) 这个公式为计算20日MA均线
sec_his['ma20'] = sec_his['close'].rolling(20).mean()
Y:=EMA(CLOSE, 20) 这个公式为计算20日EMA均线
sec_his['ema20'] = sec_his['close'].ewm(span=20, adjust=False).mean()
Y:=SMA(CLOSE, 20) 这个公式为计算20日SMA均线
sec_his['sma20'] = sec_his['close'].ewm(alpha=1/20, adjust=False).mean()
Y:=LLV(L, 20) 这个公式为计算20日最低值
sec_his['llv20'] = sec_his['low'].rolling(20).min()
Y:=HHV(H, 20) 这个公式为计算20日最大值
sec_his['llv20'] = sec_his['high'].rolling(20).max()
有了 HHV 和 LLV 的实现,我们就可以计算RSI了
sec_his['llv'] = sec_his['low'].rolling(9).min()
sec_his['hhv'] = sec_his['high'].rolling(9).max()
sec_his['rsv'] = 100*(sec_his['close']-sec_his['llv'])/(sec_his['hhv']-sec_his['llv'])
计算出RSI,我们就可以进一步计算KDJ
sec_his['k'] = sec_his['rsv'].ewm(span=2*3-1, adjust=False).mean()
sec_his['d'] = sec_his['k'].ewm(span=2*3-1, adjust=False).mean()
sec_his['j'] = 3*sec_his['k']-2*sec_his['d']
计算出各种指标之后,我们一般需要判断指标最新的值,例如需要KDJ的J值大于20,可以这么写
if sec_his['j'].iloc[-1] >= 20:
log.info(sec+'KDJ指标 J 值符合要求')
其他的判断方法大家可以以此类推,举一反三。
本篇文章就到这里结束了,如果你有什么想看的内容,或者有什么问题需要咨询,请在群里联系我,我是欧阳,我们下期再见。

2024-12-25 16:13
2024-12-25 16:11
2024-07-12 09:43
2024-05-20 23:17