要想成为梁文峰,请先学一些股票知识。
SMA、EMA和WMA
SMA最简单,EMA最常用。所以务必理解EMA,它用到递归, 或者说迭代。
import pandas as pd
def calculate_ema(data, period):
# 计算平滑系数
smoothing_factor = 2 / (period + 1)
# 初始化 EMA 列表,第一个值为收盘价的第一个值
ema = [data[0]]
for i in range(1, len(data)):
# 计算后续周期的 EMA 值
ema_value = data[i] * smoothing_factor + ema[i - 1] * (1 - smoothing_factor)
ema.append(ema_value)
return ema
# 示例数据
close_prices = [100, 102, 105, 103, 106]
# 计算 3 日 EMA
ema_3 = calculate_ema(close_prices, 3)
print("3 日 EMA:", ema_3)
KDJ
KDJ,也称为随机指数,最初用于期货市场分析,并广泛用于股票市场的短期趋势分析。KDJ 是根据最高价格、最低价格和收盘价计算的。它利用价格波动的真实性来反映价格波动、超买和超卖的强度,并在价格上涨或下跌之前发出交易信号。KDJ 绘制为三条线。
KDJ 用于通过计算特定时期内出现的最高、最低和收盘价之间的比例关系来获得随机随机值 (RSV),然后对相应的数据进行平滑处理,以获得一系列用于确定证券走势的指数值。具体计算如下。
首先,计算周期的 RSV 值,然后计算 K 值、D 值和 J 值。KDJ可以通过设置不同的时间段来描述短期和中期的市场波动。
以每日KDJ值的计算为例,计算公式为:
N 天 RSV= (Cn-Ln) ÷ (Hn-Ln) ×100。
在公式中,Cn 是第 n 天的收盘价;Ln 是 n 天内的最低价格;Hn 是 n 天内的最高价格。RSV 值始终在 1 到 100 之间波动。
下文将给出市场上经常使用的默认 9 天周期作为示例。
假设你今天去商店购买 TUTU。
今天的费用:每个 TUTU 70 美元
前九天的最高价格:80 美元
前九天最便宜的价格:40美元
RSV = (70-40) ÷ (80-40) ×100 = 75
因此,TUTU 的 RSV 为 75。
当TUTU的RSV更高时,这表明它已接近该产品在过去九天内的最高价格,即80美元。
换句话说,收盘价远远超过40美元,这是最低的价格。
其次,计算 K 和 D 值:
当天 K 值 = 2/3 × 前一天 K 值 + 1/3 × 当天 RSV
D 天值 = 2/3 × 前一天 D 值 + 1/3 × 当天 K 值
J 值 = 3 × 天 K 值-2 × 天 D 值
如果前一天没有 K 值和 D 值,则可以改用 50。
-
超买和超卖
KDJ 的值介于 0 到 100 之间(J 值有时会超过),超买和超卖条件是 KDJ 值,尤其是 D 值产生的主要信号。简单的解释是,D 值高于 70 表示超买,低于 30 的 D 值表示超卖。 -
金十字
当K线突破图表上的D线时,它通常被称为黄金十字架,这是买入信号。此外,当K线和D线向上交叉至20以下时,此时的短期买入信号更加准确;如果K值低于50,两次突破D值,形成更高的高黄金交叉 “W” 形态,则股价的市场前景可能会大幅增加。 -
死亡十字架
当 K 值递减然后从上方跌破 D 线时,它通常被称为死叉并被视为卖出信号。此外,当K线和D线向下穿越80水平时,此时的短期卖出信号更加准确。如果K值高于50,在趋势中两次跌破D线,并从较低的低位死亡交叉 “M” 形态出发,则市场前景可能会出现股价大幅下跌。 -
底部和峰值
J 线是方向敏感线。当J值大于90时,尤其是连续超过五天时,股价至少会形成短期峰值。相反,当J值小于10时,尤其是连续几天时,股价至少会形成短期底部。
这些解释很常见,但可能不适用于所有情况,具体取决于所交易的金融工具,它们仅用于基本理解。
KDJ 的局限性
KDJ的主要局限性在于它可以在动荡的市场下产生虚假信号。由于KDJ对价格变动很敏感,因此可能会产生虚假的交易信号,并且价格不会在信号发出后上涨或下跌,从而导致不良交易。
MACD
在MACD指标中,DIF线等于短周期(一般设置成12个交易日)的移动平均价格,减去长周期(一般设置成26个交易日)的移动平均价格。每一个交易日的差值连线就可以画出MACD图形中的DIFF线。
当DIF线段拐头向上时,代表最近一段时间价格整体上涨;当DIF线段拐头向下时,代表最近一段时间价格整体在下跌。
而DIF线的斜率代表了上涨或者下跌趋势的强度,斜率越大代表趋势越强,斜率越平代表趋势越缓。
DEA线段实际上是对DIFF线的一个平滑,将DIFF线的结果再求一次移动平均(一般采用9个交易日)就能得出DEA线。作出DEA线的原因,主要是考察长短周期价格差值的一个变动趋势。而MACD图中的红绿柱就是DIFF线和DEA线之间的距离。当DIFF线高于DEA时,就是红柱;当DIFF线低于DEA时,就是绿柱。
而DEA这部分的意义也很简单。当柱体(也就是DIFF和DEA之间的相对距离)从绿柱减小,或红柱增大,代表了价格整体趋势在上涨;而红柱开始减小,或绿柱开始增大时,代表了整体价格趋势在下跌。
me1 = EMA(self.data, period=12)
me2 = EMA(self.data, period=26)
macd = me1 - me2
signal = EMA(macd, period=9)
histo = macd - signal
RSI
计算方法:
RSI=[上升平均数÷(上升平均数+下跌平均数)]×100
上升平均数:在某一段日子里升幅数的平均;下跌平均数:在同一段日子里跌幅数的平均。
使用方法:
当RSI高于70时,股票可以被视为超买,是卖出的时候。
当RSI低于30时,股票可以被视为超卖,是买入的时候。
OBV
能量潮指标(On Balance Volume,OBV)通过统计成交量变动的趋势来预测股价未来走向。
OBV指标是葛兰维(Joe Granville)于上世纪60年代提出的,并被广泛使用。 当OBV位于高位时,说明当前市场的成交量较大,市场上涨的买盘力量很强,可能会出现买盘逐步消耗,市场出现调整的可能性也会增加。
能量潮(On Balance Volume,OBV)是一种动量技术分析工具,OBV指标就是将成交量数据化,编制成趋势线,配合股价趋势,从量能角度判断股价走向。
OBV指标的工作原理是,根据股价涨跌对成交量进行加减运算。当价格上涨时,成交量会被加入到运行总量中;当价格下跌时,成交量将从运行总量中减去。
当OBV指标持续横盘整理超过三个月时,多方可能已经积攒了充足的力量,此后一旦OBV指标向上突破,就形成看涨的买入信号。
当股价下跌的时候,如果OBV指标上涨,就形成了底背离,这是看涨的买入信号。
当股价上涨的时候,如果OBV指标下跌,就形成了顶背离,这是看跌卖出的信号。
当OBV指标与股价一起上涨时,表示仍处于良性上涨区间,预示上涨趋势还将延续。
当OBV指标加速上涨时,如果股价上涨的速度没有加快,就形成看跌卖出信号。
BOLL指标
布林线指标,即BOLL指标,其英文全称是“Bollinger Bands”,布林线(BOLL)由约翰 布林先生创造,其利用统计原理,求出股价的标准差及其信赖区间,从而确定股价的波动范围及未来走势,利用波带显示股价的安全高低价位,因而也被称为布林带。
BOLL指标属于价格通道指标,所以指标与K线主图叠加显示。BOLL指标一共包含三个轨道,其中中轨为收盘价的20日均线。上轨和下轨分别是中轨加上2倍的标准差和中轨减去2倍的标准差。
我们可以看到价格长期运行在上下轨之间,偶尔击穿。那么依据BOLL指标的含义,我们可以认为在一般情况下BOLL上轨为价格通道的压力位,BOLL下轨为价格通道支撑位。当股价运行至上轨时,股价进入超涨,当股价跌至下轨时,股价进入超跌。
三种基本情形:
- 差价博弈,降低成本。
- 价格突破,中轨向上拐头,上下轨喇叭开口,准备迎接主升浪
- 布林线在底部判断上明显不足
DMI
DMI(Directional Movement Index)叫做“动向指标”或“趋向指标”,是一种趋势判断的技术指标,它通过分析价格在涨跌过程中买卖双方平衡点的变化,即多空双方的力量的由均衡→失衡的过程(平衡点打破,新的趋势或将生成),从而提供对趋势判断依据,适用于中长期技术分析。
DMI指标共有PDI、MDI、ADX、ADXR四条线,也是它的四个参数值。它分为多空指标和趋向指标两组:多空指标分别为 +DI(PDI)与-DI(MDI) ,趋向指标分别为ADX与ADXR。±DI两条曲线的走势是多空指标(用来看方向);而ADX、ADXR则是用来判断趋势力量强弱的(用来看能量)。
指标解读:
+DI(PDI)为上升指标,-DI(MDI)为下降指标。正负DI的幅度均在0—100之间:+DI值越大表明多方实力越强,若+DI变小并趋近0,则反映了多方势头减弱;-DI值越大表明空方实力越强,若-DI变小并趋于0,则反映空方势头减弱;当+DI在-DI上方,表明多方势力占优;反之,+DI在-DI下方,则空方势力占优。投资者可根据+DI、-DI的数值及变化趋向,摸清多空的实力,择机而动。
ADX是主要用来判断单边趋势力量的强弱,ADX指数区间同样在0—100之间,其数值大小与单边趋势力量的强弱呈正相关:当数值介于0—25,无单边趋势,即常说的震荡行情;突破25后表明单边趋势正开始形成,且ADX数值越高代表单边趋势力量越强,即多空双方实力相差越悬殊;数值越低则单边趋势力量越弱,即多空双方实力越接近。
值得注意的是,ADX只是用来判断趋势的强弱,不能用来判断趋势的具体走向。即无论上涨或下跌,只要趋势足够强劲,ADX的值便越高;ADXR是ADX的均线,如果ADX的值在均线之上,则可以简单理解为价格在往单边走;而如果均值更大,则说明了价格在往震荡走。和其他指标的计算一样,DMI指标也可自行设置周期,经常被用于研判应用的是日DMI指标和周DMI指标。
DMI的应用
一、用+DI和-DI的走势关系来判断能否买卖的信号
当+DI从下向上突破-DI时,显示有新多头进场,或为买进信号;如此时ADX伴随上升,则涨势的确定性更高。当+DI从上向下跌破-DI时,此时不论+DI和-DI处在什么位置,都预示有新空头进场,或为卖出信号;如同时伴随ADX上升,则跌势的确定性更高。
二、用ADX、ADXR研判市场行情的发展趋势
1、单边趋势:由于当行情走势朝向单一方向发展时,无论是涨势或跌势,ADX值都会不断递增。因此,当ADX值高于上日时,可以断定当前市场行情仍在维持原有趋势,即价格会继续上涨,或继续下跌。
2、行情盘整:当行情走势进入横盘阶段时,ADX值会不断递减。当ADX值降至20以下且呈横向窄幅移动时,可以判断当前上升或下跌趋势不明朗,投资者应以观望为主,此时不可仅依据+DI和-DI的交叉信号来买卖。
3、行情转势:当ADX值在高点由升转跌时,预示行情即将反转。在涨势中的ADX在高点由升转跌,预示涨势即将告一段落;在跌势中的ADX值回落,预示跌势可能停止。
虽然用±DI的穿越来判断入场是DMI指标较为常用研判,但不是首选的方法,DMI指标通常不被用来直接指导买卖点,更多用于一种趋势研判的工具。在应用时,重点在于分析+DI、-DI、ADX线之间的关系,把握对行情的趋势及转势特征的判断。在实践中,我们可以使用DI的突破来预测方向再使用ADX来判断当前趋势的强弱。
计算公式如下:
1. 真实波幅TR1值: 当日收盘价-当日最低价 当日最高价-昨日收盘价 当日最低价-昨日收盘价 以上三者的最大值为TR1
2.上升指标线(+DM)=当日最高价-昨日最高价(负值或零记为0) 下降指标线(-DM)=昨日最低价-当日最低价(负值或零记为0)
3.N日的真实波幅(TRn)=N日的TR值之和(计算时常设N=7或7的倍数) 7日的真实波幅(TR7)=7日的TR值之和
4.+DM7=近7天的+DM之和 -DM7=近7天的-DM之和
5.+DI7=+DM7/TR7 -DI7=-DM7/TR7
6.DI差=+DI-|-DI| DI和=+DI+|-DI|
7.DX=DI差-DI和
8.第十五天开始计算ADX值: ADX=(第14天的ADX*6+第15天的DX)/7 (首次计算时,第14天的ADX用第8天到第14天的DX的总和平均数代替,从第16天开始恢复成用前一天的ADX值计算。)
9.第21天开始计算ADRX: ADRX=(第21天的ADX+第15天的ADX)/2 动向指数的计算过程中需要事先分别计算出真实波幅(TR)、上升指标线(+DM)、下降指标线(-DM)和平均移动指数线(ADX)。