【加蛋量化之Ptrade - 第01期】如何使用Ptrade实现通达信公式

欧阳
欧阳 这家伙很懒,还没有设置简介

0 人点赞了该文章 · 550 浏览

       关于通达信公式如何使用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-03-15 14:43

免责声明:

本文由 欧阳 原创发布于 百果量化交流平台 ,著作权归作者所有。

登录一下,更多精彩内容等你发现,贡献精彩回答,参与评论互动

登录! 还没有账号?去注册

宝哥1314
2024-05-20 23:17
欧阳老师好,怎么能联系到您

已收录至专栏