- [复权]
- 上市公司在除权除息之后,股价会产生变化,但实际成本并未发生变化,导致K线走势图上出现断层,给人以股价下跌的错觉,而复权就是按照实际涨跌绘制股价走势路,修复除权除息后产生的断层,便于对股票进行分析处理,在复权中有向前复权,向后复权和定点复权,这里我们只讨论向前复权和向后复权
- [向前复权] — 一般用作短线技术分析
- 就是保持现有价位不变,将以前的价格缩减,将除权前的K线向下平移,使图形吻合,保持股价走势的连续性
- [向后复权] — 一般用作长线基本面分析
- 向后复权,就是保持先前的价格不变,而将以后的价格增加。
某上市公司在出现10送8分红2.8后的k线走势

讯享网
股票复权算法
现有流行的复权算法一般经典复权算法,递归前复权算法,递归后复权算法,涨跌幅复权算法,其中经典复权算法得到结果和递归后复权结果相同,

- 经典复权算法

- 递归前复权算法

- 递归后复权算法

- 涨跌幅算法
复权因子=当日的前收盘价/昨天的收盘
向前复权 = 实际价 * 每一次的复权因子
向后复权 = 实际价 / 每一次的复权因子
粘一段前复权代码 后复权原理相同
double calc_recvoer_pre_right_price(double px, STOCK_RIGHT &jrjRight) {
// 前复权:复权后价格=[(复权前价格-现金红利)+配(新)股价格×流通股份变动比例]÷(1+流通股份变动比例) double fChgRatio = (jrjRight.fSGBL+jrjRight.fZGBL+jrjRight.fPGBL)/10.0; return ((px-jrjRight.fLRFH)+jrjRight.fPGJG*fChgRatio)/(1.0+fChgRatio); } // 进行前复权 void recover_pre_right(map<int, KLINE> &mapKLine, list<STOCK_RIGHT> &listRight, int nPrice) {
const double PRESION_AJUST_MOUNT = 0.000005; // 精度较正值 for (list<STOCK_RIGHT>::iterator itRight=listRight.begin(); itRight!=listRight.end(); ++itRight) {
// find date in mapTdxKLine map<int, KLINE>::iterator itKLine = mapKLine.find(itRight->nFQRQ); if (itKLine==mapKLine.end() || itKLine==mapKLine.begin()) continue; // 从除权的前一个交易日开始复权 do {
--itKLine; KLINE & kLineTest = itKLine->second; kLineTest.nOpenPx = nPrice*(PRESION_AJUST_MOUNT+calc_recvoer_pre_right_price(1.0*kLineTest.nOpenPx/nPrice, *itRight)); kLineTest.nHighPx = nPrice*(PRESION_AJUST_MOUNT+calc_recvoer_pre_right_price(1.0*tdxKLine.nHighPx/nPrice, *itRight)); kLineTest.nLowPx = nPrice*(PRESION_AJUST_MOUNT+calc_recvoer_pre_right_price(1.0*tdxKLine.nLowPx/nPrice, *itRight)); kLineTest.nLastPx = nPrice*(PRESION_AJUST_MOUNT+calc_recvoer_pre_right_price(1.0*kLineTest.nLastPx/nPrice, *itRight)); }while(itKLine!=mapKLine.begin()); } }
讯享网



版权声明:本文内容由互联网用户自发贡献,该文观点仅代表作者本人。本站仅提供信息存储空间服务,不拥有所有权,不承担相关法律责任。如发现本站有涉嫌侵权/违法违规的内容,请联系我们,一经查实,本站将立刻删除。
如需转载请保留出处:https://51itzy.com/kjqy/117167.html