关于obv中的两条线内容导航:
1、obv中的两条线
# 均线
ma5 = talib.MA(close, timeperiod=5, matype=0)
ma10 = talib.MA(close, timeperiod=10, matype=0)
ma20 = talib.MA(close, timeperiod=20, matype=0)
ma30 = talib.MA(close, timeperiod=30, matype=0)
ma60 = talib.MA(close, timeperiod=60, matype=0)
# 布林线
upper, middle, lower = talib.BBANDS(close, timeperiod=20, nbdevup=2, nbdevdn=2, matype=0)
# macd
macd, macdsignal, macdhist = talib.MACD(close, fastperiod=12, slowperiod=26, signalperiod=9)
# 威廉指标
wr = talib.WILLR(high, low, close, timeperiod=14)
# 动量指标
mtm = talib.MOM(close, timeperiod=12)
# 随机指标
rsi = talib.RSI(close, timeperiod=14)
# 平均真实波动率
truerange = talib.TRANGE(high, low, close)
atr = talib.ATR(high, low, close, timeperiod=14)
# 平均趋向指标
adx = talib.ADX(high, low, close, timeperiod=14)
# 平均动向指数
adxr = talib.ADXR(high, low, close, timeperiod=14)
# 相对强弱指标
rsiq = talib.RSI(close, timeperiod=14)
rsim = talib.RSI(close, timeperiod=14)
rsi_diff = rsiq - rsim
# 归一化
ma5 = ma5 / close
ma10 = ma10 / close
ma20 = ma20 / close
ma30 = ma30 / close
ma60 = ma60 / close
upper = upper / close
middle = middle / close
lower = lower / close
macd = macd / close
macdsignal = macdsignal / close
macdhist = macdhist / close
wr = wr / 100
mtm = mtm / close
rsi = rsi / 100
truerange = truerange / close
atr = atr / close
adx = adx / 100
adxr = adxr / 100
rsiq = rsiq / 100
rsim = rsim / 100
rsi_diff = rsi_diff / 100
# 合并
obv = np.vstack((ma5, ma10, ma20, ma30, ma60, upper, middle, lower, macd, macdsignal, macdhist, wr, mtm, rsi, truerange, atr, adx, adxr, rsiq, rsim, rsi_diff)).T
return obv
def get_data(code, start_date, end_date):
# 获取股票数据
df = ts.get_k_data(code, start=start_date, end=end_date)
df = df.sort_index(ascending=True)
# 计算obv
obv = get_obv(df)
# 合并
df = pd.concat([df, pd.DataFrame(obv)], axis=1)
df.columns = ['date', 'open', 'close', 'high', 'low', 'volume', 'ma5', 'ma10', 'ma20', 'ma30', 'ma60', 'upper', 'middle', 'lower', 'macd', 'macdsignal', 'macdhist', 'wr', 'mtm', 'rsi', 'truerange', 'atr', 'adx', 'adxr', 'rsiq', 'rsim', 'rsi_diff']
# 增加涨跌幅
df['change'] = df['close'].pct_change()
# 增加涨跌
df['diff'] = df['close'].diff()
# 增加涨跌状态
df['status'] = df['diff'].apply(lambda x: 1 if x > 0 else 0)
# 增加涨跌状态
df['status1'] = df['diff'].apply(lambda x: 1 if x > 0.01 else 0)
# 增加涨跌状态
df['status2'] = df['diff'].apply(lambda x: 1 if x > 0.02 else 0)
# 增加涨跌状态
df['status3'] = df['diff'].apply(lambda x: 1 if x > 0.03 else 0)
# 增加涨跌状态
df['status4'] = df['diff'].apply(lambda x: 1 if x > 0.04 else 0)
# 增加涨跌状态
df['status5'] = df['diff'].apply(lambda x: 1 if x > 0.05 else 0)
# 增加涨跌状态
df['status6'] = df['diff'].apply(lambda x: 1 if x > 0.06 else 0)
# 增加涨跌状态
df['status7'] = df['diff'].apply(lambda x: 1 if x > 0.07 else 0)
# 增加涨跌状态
df['status8'] = df['diff'].apply(lambda x: 1 if x > 0.08 else 0)
# 增加涨跌状态
df['status9'] = df['diff'].apply(lambda x: 1 if x > 0.09 else 0)
# 增加涨跌状态
df['status10'] = df['diff'].apply(lambda x: 1 if x > 0.1 else 0)
# 增加涨跌状态
df['status11'] = df['diff'].apply(lambda x: 1 if x > 0.11 else 0)
# 增加涨跌状态
df['status12'] = df['diff'].apply(lambda x: 1 if x > 0.12 else 0)
# 增加涨跌状态
df['status13'] = df['diff'].apply(lambda x: 1 if x > 0.13 else 0)
# 增加涨跌状态
df['status14'] = df['diff'].apply(lambda x: 1 if x > 0.14 else 0)
# 增加涨跌状态
df['status15'] = df['diff'].apply(lambda x: 1 if x > 0.15 else 0)
# 增加涨跌状态
df['status16'] = df['diff'].apply(lambda x: 1 if x > 0.16 else 0)
# 增加涨跌状态
df['status17'] = df['diff'].apply(lambda x: 1 if x > 0.17 else 0)
# 增加涨跌状态
df['status18'] = df['diff'].apply(lambda x: 1 if x > 0.18 else 0)
# 增加涨跌状态
df['status19'] = df['diff'
2、obv中的两条线MA
公式如下:N:=60;
K值:="KDJ.K";
DD:=C=LLV(C,N);
DDSJ:=BARSLAST(REF(DD,1));
DDG取刚围轮奏穿之J:=REF(CL世句要存刘苦OSE,DDSJ+1权食显林七宪脸相落好业)>CLOSE;
KDZ妈蛋无往些计具果米投工B:=REF(K值,DDSJ+1)<K值;
K底背离:=DDGJ AND KDZB;
GD:=C=HHV(C,N);
GDSJ:=讨品答直黄七尔BARSLAST(REF(GD,1));
GDGJ:=R元又必尽载米EF(CLOSE,GDSJ+1)<CLOSE;
KGZB:=REF(K值,GDSJ+1)>K值;
K顶背离:=GDGJ AND KGZB;
MACD:="***.***";
MDZB:=REF(MACD,DDSJ+1)<MACD;
M底背离团:=DDGJ AND MDZB;
MGZB:=REF(MACD,GDSJ+1)>MACD;
M顶背离:=GDGJ AND MGZB;
RS能I:="***.***1";
RDZB:=RE甚亚段束胞严奏曲F(RSI,DDSJ+1)<RSI;
R底背离案端亮请斤老非:=DDGJ AND RDZB;
RGZB:=REF(RSI,GDSJ+1)>RSI;
R顶背离:=GDGJ AND RGZB;
TYP:=(HIGH + LOW + CLOSE)/3;
CC来谓注I:=(TYP-MA(TYP,N))/(0.015*AVEDEV(TYP,N));
CDZ投刑血B:=REF(CCI,DDSJ+1)<CCI;
C底背离:=DDGJ AND CDZB;
CGZ抓九送垂功核B:=REF(CCI,GDS补飞盟抓向J+1)>CCI;
C顶背离区兰策歌村:=GDGJ AND CGZB;
D谓吗叶留军RAWTEXT(K顶背离,IF(BARSCOUNT(C),27.5,29),'(×)'),子激李度座六剧任南LINETHICK2,COLORRED;
DRAWTEXT(M顶背离,IF(BARSCOUNT(C),24.5,26),'(×)'),LINETHICK2,COLORMAGENTA;
DRAWTEXT(R顶背离,IF(BARSCOUNT(C),20.5,22.1),'(×)'),LINETHICK2,COLORBLUE;
DRAWTEXT(C顶背离,IF(BARSCOUNT(C),16.6,18.1),'(×)'),LINETHICK2,COLORGREEN;
DRAWTEXT(C底背离,IF(BARSCOUNT(C),12,14.2),'(√)'),LINETHICK2,COLORGREEN;
DRAWTEXT(R底背离,IF(BARSCOUNT(C),8.5,10),'(√)'),LINETHICK2,COLORBLUE;
DRAWTEXT(M底背离,IF(BARSCOUNT(C),4.5,6),'(√)'),LINETHICK2,COLORMAGENTA;
DRAWTEXT(K底背离,IF(BARSCOUNT(C),1.5,3),'(√)'),LINETHICK2,COLORRED。
在线看盘常用指标
1)量比指标
量比 = 现 在总手/(5日平均总手 / 240)*当 前已开市多少分钟
若量比数值大于1,表示现 在这时刻的成交总手放大;量放大。
若量比数值小于1,表示现 在这时刻的成交总委比
2)委比指标
委比 = (A - B)/(A + B)*100%
A = 某股票当前委托买入下三档手数之和
B = 某股票当前委托卖出上三档手数之和
当委比数值为正时表示委托买入之手数大于委托卖出之手数,换言之,买盘比卖盘大,股价上涨几率较大。
当委比数值为负时表示委托卖出之手数大于委托买入之手数,换言之,卖盘比买盘大,股价下跌几率较大。
手萎缩;量萎缩。
K线分析常用指标
1)KDJ随机指标
该指标适用于中短期股票的技术分析,又称为超买超买指标,所以常用于抓反弹、做差价。随机指标在图表上采用%K和%D两条线,在设计中综合了动量观念、强弱指标与移动平均线的优点,在计算过程中主要研究高低价位与收市价的关系,反映价格走势的强弱和超买超卖现象。
它的主要理论依据是:当价格上涨时,收市价倾向于接近当日价格区间的上端;相反,在下降趋势中收市价趋向于接近当日价格区间的下端。在股市和期市中,因为市场趋势上升而未转向前,每日多数都会偏向于高价位收市,而下跌时收市价就常会偏于低位。随机指数在设计中充分考虑价格波动的随机振幅与中短期波动的测算,使其短期测市功能比移动平均线更加准确有效,在市场短期超买超卖的预测方面又比强弱指数敏感,因此,这一指标被投资者广泛采用。
2)RSI相对强弱指标
相对强弱指数理论认为,在一个正常的股市中,只有多空双方的力量取得均衡,股价才能稳定。在股市的长期发展过程中,绝大多数时间里相对强弱指数的变化范围介于30和70之间,其中又以40和60之间的机会最多,超过80或者低于20的机会较少。而出现机会最少的是高于90及低于10。
3)OBV能量潮指标
能量潮是将成交量数量化,制成趋势线,配合股价趋势线,从价格的变动及成交量的增减关系,推测市场气氛。其主要理论基础是市场价格的变化必须有成交量的配合,股价的波动与成交量的扩大或萎缩有密切的关连。通常股价上升所需的成交量总是较大;下跌时,则成交量总是较小。价格升降而成交量不相应升降,则市场价格的变动难以为继。
4)MACD平滑异同平均线指标
平滑异同移动平均线,简称MACD。根据移动平均线原理所发展出来的MACD,一来克服了移动平均线假信号频繁的缺陷,二来能确保移动平均线最大的战果。运用移动平均线判断买卖时机,在趋势明显时收效很大,但如果碰上牛皮盘整的行情,所发出的信号频繁而不准确。
5)BIAS乖离率指标
若股价在移动平均线之上,乖离率为正,反之为负;当股价与平均线相同,乖离率为零。乖离率周而复始穿梭在零的上方或下方。正乖离率大至某百分比以上便是卖出时机,负乖离率低至某百分比之下是买进时机。多头市场的狂涨与空头市场的狂跌会使乖高率达到意想不到的百分比,但是出现次数极少,时间亦短。