commonstock

package
v0.0.0-...-bade87c Latest Latest
Warning

This package is not in the latest version of its module.

Go to latest
Published: Jan 7, 2023 License: GPL-3.0 Imports: 5 Imported by: 0

README

目录

[TOC]

常用的股票指标实现

MA移动平均线

  均线作为衡量主力成本重要的参照指标,起到测试压力和支撑的作用。当作为趋势判断的时候,周期越长、越有效。另一方面,当均线形成多头排列后,短期均线才是作为持仓的依据。

  葛氏八法则:

  • 平均线从下降逐渐走平,当价格从平均线的下方突破平均线时是为买进信号。
  • 价格连续上升远离平均线之上,价格突然下跌,但未跌破上升的平均线,价格又再度上升时,可以加码买进。
  • 价格虽一时跌至平均线之下,但平均线仍在上扬且价格不久马上又恢复到平均线之上时,仍为买进信号。
  • 价格跌破平均线之下,突然连续暴跌,远离平均线时,很可能再向平均线弹升,这也是买进信号。
  • 价格急速上升远超过上升的平均线时,将出现短线的回跌,再趋向于平均线,这是卖出信号。
  • 平均线走势从上升逐渐走平转弯下跌,而价格从平均线的上方,往下跌破平均线时,应是卖出信号。
  • 价格跌落于平均线之下,然后向平均线弹升,但未突破平均线即又告回落,仍是卖出信号。
  • 价格虽上升突破平均线,但立刻又恢复到平均线之下而此时平均线又继续下跌,则是卖出信号

EMA 平滑移动水平线

  EMA(Exponential Moving Average),指数平均数指标,也叫EXPMA指标。它是一种趋向类指标,指数平均数指标是以指数式递减加权的移动平均。各数值的加权是随时间而指数式递减,越近期的数据加权越重,但较旧的数据也给予一定的加权。指数均线 EMA(指数平均指标) EMAn=2/(n+1)*(本周期收盘价-上一周期EMAn)+上一周期EMAn,其中:EMAn 参数为n的指数平均指标,n 是用户自定义参数。      

BOLL布林线

  BOLL由JOHN BOLLINGER所创,先计算价格的“标准差”,再求取价格的“信赖区间”而得,是一个路径型指标,由上限和下限两条线,构成一个带状的路径。价格超越上限时,代表超买,价格超越下限时,代表超卖。价格游走在“上限”和“下限”的带状间内,这条带状区的宽窄,随着价格波动幅度的大小而变化,价格涨跌幅度加大时,带状区会变宽,涨跌幅度狭小盘整时,带状区会变窄。 也就是说,布林线是属于变异性的,可以随着股性的变化而自动调整位置。

  计算方法:

MID=MA(CLOSE,PERIOD)    
UPPER=MID + TIMES * STD(CLOSE,PERIOD)    
LOWER=MID - TIMES * STD(CLOSE,PERIOD)

  应用法则:

  • 当布林线的带状区呈水平方向移动时,可以视为处于“常态范围”。此时,价格向上穿越“上限”时,将形成短期回档,为短线的卖出信号;价格向下穿越“下限”时,将形成短期反弹,为短线的买进时机。
  • 当带状区朝右上方和右下方移动时,则属于脱离常态。当价格连续穿越“上限”,暗示价格将朝上涨方向前进;当价格连续穿越“下限”,暗示价格将朝下跌方向前进

MACD 指数平滑移动均线

  原名是Moving Average Convergence and Divergence。本指标是一个很流行又管用的指标,可以去除掉移动平均线频烦的假讯号缺陷又能确保移动平均线最大的战果。

  计算公式:

  MACD是利用两条不同速度(长期与中期)的平滑移动平均线 (EMA)来计算二者之间的差离状况作为研判行情的基础。在绘制的图形上,DIF与DEA形成了两条快慢移动平均线,买进卖出信号也就决定于这两条线的交叉点。很明显,MACD是一个中长期趋势的投资技术工具。

DIF=EMA(CLOSE,SHORT)-EMA(CLOSE,LONG)    
DEA=EMA(DIF,MID)    
MACD=(DIF-DEA)*2  

其中LONG=26,SHORT=12,MID=9

缺省时,系统在副图上绘制SHORT=12,LON G=26, MID=9时的DIF线、DEA线、MACD线(柱状线)。

  用法:

  • DIFF、DEA均为正,DIFF向上突破DEA,买入信号。
  • DIFF、DEA均为负,DIFF向下跌破DEA,卖出信号。
  • DEA线与K线发生背离,行情反转信号。
  • 分析MACD柱状线,由红变绿(正变负),卖出信号;由绿变红,买入信号。
  • MACD在0界限以上为多头市场,反之为空头市场。
  • 日线、周线、月线、分钟线配合运用效果会更好。

KDJ随机指标

  KDJ指标是由 Dr. George Lane所创造的,是欧美期货常用的一套技术分析工具。由于期货风险性波动较大,需要比较短期且敏感的指标工具,因此中短期股票的技术分析也颇为适用。随机指标综合了动量观念、强弱指标与移动平均线的优点。KD线的随机观念,远比移动平均线实用很多。移动平均线在习惯上其以收盘价来计算,因而无法表现出一段行情的真正波幅,换句话说当日或最近数日的最高价、最低价,无法表现在移动平均线。因而有些专家才慢慢开创出一些更进步的技术理论,将移动平均线的应用发挥得淋离尽致。KD线就是其中一个颇具代表性的杰作。

  随机指标在图表上采用K%和D%两条线,在设计中综合了动量观念、强弱指标与移动平均线的优点,在计算过程中主要研究高低价位与收市价的关系,反映价格走势的强弱和超买超卖现象。它的主要理论依据是:当价格上涨时,收市价倾向于接近当日价格区间的上端;相反,在下降趋势中收市价趋向于接近当日价格区间的下端。在股市和期市中,因为市场趋势上升而未转向前,每日多数都会偏向于高价位收市,而下跌时收市价就常会偏于低位。随机指数在设计中充分考虑价格波动的随机振幅与中短期波动的测算,使其短期测市功能比移动平均线更加准确有效,在市场短期超买超卖的预测方面又比强弱指数敏感,因此,这一指标被投资者广泛采用。

  计算公式 :

RSV=(CLOSE-LLV(lOW,N4))/(HHV(HIGH,N1)-LLV(LOW,N1)) * 100   
K=MA(RSV,N2)    
D=MA(K,N3)  
J=3 * K-2 * D

其中N1=9,N2=3,N3=3 K与D值永远介于0与1之间。

  KD线中的RSV,随着9日中高低价、收盘价的变动而有所不同。如果行情是一个明显的涨势,会带动K线(快速平均值)与D线(慢速平均值)向上升。但如果涨势开始迟缓,便会慢慢反应到K值与D值,使K线跌破D线,此时中短期跌势确立。由于KD线本质上是一个随机波动的观念,对于掌握中短期的行情走势非常正确。

  缺省时,系统在副图上绘制三条线,分别为RSV值的三日平均线K,K值的三日平均线D,三倍K值减二倍D值所得的J线。

  应用法则

  • D%值在70以上时,市场呈现超买现象。D%值在30以下时市场则呈现超卖现象。
  • 当K%线发生倾斜度趋于平缓时,是为警告讯号。
  • 当K%值大于D%值,显示目前是向上涨升的趋势,因此在图形上K%向上突破D%线时,即为买进的讯号。
  • 当D%值大于K%值,显示目前的趋势是向下跌落,因此在图形上K%向下跌破D%线,即为卖出讯号。
  • K%线与D%线的交叉,须在80以下,20以下讯号才较为正确。K%与D%线在特性上与强弱指标一样,当K%值与D%值在70以上,已显示超买的现象,30以下出现超卖的现象。唯强弱指标不能明显的显示买卖时机,而KD线则可以达到此目的。
  • 背离讯号产生时,亦为非常正确的买进、卖出时机。
  • 发行量太小,交易量太小的股票不适用KD指标;加权指数以及热门大型股准确性极高。
  • KD值在50左右交叉且为盘局时,此指标不能当成明显的买卖讯号。
  • J%>100时为超买,J%<10时为超卖,反应较K%及D%为快。KD指标是计算n日内买卖超情况,再加上平均线观念而求出的可设定计算期(即n值),P1、P2、P3值。一般P1,P2都设成3,若P3设成0,表示不画J线。

OBV 能量潮指标

  OBV的英文全称是 On Balance Volume,该指标通过统计成交量变动的趋势来推测股价趋势。OBV以“N”字型为波动单位,并且由许许多多“N”型波构成了OBV的曲线图,对一浪高于一浪的“N”型波,称其为“上升潮”(UP TIDE),至于上升潮中的下跌回落则称为“跌潮”(DOWN FIELD)。

  OBV是将成交量数量化,制成趋势线,配合股价趋势线,从价格的变动及成交量的增减关系,推测市场气氛。其主要理论基础是市场价格的变化必须有成交量的配合,股价的波动与成交量的扩大或萎缩有密切的关连。通常股价上升所需的成交量总是较大;下跌时,则成交量可能放大,也可能较小。价格升降而成交量不相应升降,则市场价格的变动难以为继。

  计算公式:

主公式:当日OBV=前一日OBV+今日成交量
1.基期OBV值为0,即该股上市的第一天,OBV值为0
2.若当日收盘价>上日收盘价,则当日OBV=前一日OBV+今日成交量
3.若当日收盘价<上日收盘价,则当日OBV=前一日OBV-今日成交量
4.若当日收盘价=上日收盘价,则当日OBV=前一日OBV

  如果本日收盘价或指数高于前一日收盘价或指数,本日值则为正;如果本日的收盘价或指数低于前一日的收盘价,本日值则为负值;如果本日值与前一日的收盘价或指数持平,本日值则不于计算,然后计算累积成交量。这里的成交量是指成交股票的手数。

  应用法则:   

  • 当OBV线下降而股价却上升,预示股票上升能量不足,股价可能随时下跌,是卖出股票的信号。   
  • 当OBV线上升而股价却小幅下跌,说明市场上人气旺盛,下档承接力较强,股价的下跌只是暂时的技术性回调,股价可能即将止跌回升。   
  • 当OBV线呈缓慢上升而股价也同步上涨时,表示行情稳步向上,股市中长期投资形势尚好,股价仍有上升空间,投资者应持股待涨。   
  • 当OBV线呈缓慢下降而股价也同步下跌时,表示行情逐步盘跌,股市中长期投资形势不佳,股价仍有下跌空间,投资者应以卖出股票或持币观望为主。   
  • 一般情况下,当OBV线出现急速上升的现象时,表明市场上大部分买盘已全力涌进,而买方的能量的爆发不可能持续太久,行情可能将会出现回档,投资者应考虑逢高卖出。尤其在OBV线急速上升后不久,而在盘面上出现锯齿状曲线并有掉头向下迹象时,表明行情已经涨升乏力,行情即将转势,为更明显的卖出信号。这点对于短期急升并涨幅较大的股票的研判更为准确。   
  • 一般情况下,当OBV线出现急速下跌的现象时,表明市场上大量卖盘汹涌而出,股市行情已经转为跌势,行价将进入一段较长时期的下跌过程中,此时,投资者还是应以持币观望为主,不要轻易抢反弹。只有当OBV线经过急跌后,在低部开始形成锯齿状的曲线时,才可以考虑进场介入,作短期反弹行情。   
  • OBV线经过长期累积后的大波段的高点(即累积高点),经常成为行情再度上升的大阻力区,股价常在这区域附近遭受强大的上升压力而反转下跌。而一旦股价突破这长期阻力区的话,其后续涨势将更加强劲有力。   
  • OBV线经过长期累积后的大波段的低点(即累积低点),则常会形成行情下跌的大支撑区,股价会在这区域附近遇到极强的下跌支撑而止跌企稳。而一旦股价向下跌破这长期支撑区的话,其后续跌势将更猛。

RSI 相对强弱指标

  原名是 Relative Strength Index是一个使用很普遍的指标,在一个正常的股市中,只有多空双方的力量取得均衡,行情才能稳定。

  计算公式:

LC=REF(CLOSE,1)    
RSI1=SUM(MAX(CLOSE-LC,0),N1)/SUM(ABS(CLOSE-LC),N1)*100   
RSI2=SUM(MAX(CLOSE-LC,0),N2)/SUM(ABS(CLOSE-LC),N2)*100   
RSI3=SUM(MAX(CLOSE-LC,0),N3)/SUM(ABS(CLOSE-LC),N3)*100 

其中N1=6,N2=12,N3=24

缺省时,系统在副图上绘制三条线,分别为6日线RSI1,12日线RSI2,24 日线RSI3。

  RSI反应了行情变动的四个因素:上涨的天数、下跌的天数、上涨的幅度、下跌的幅度。它对行情的四个构成要素都加以考虑,所以在行情预测方面其准确度较为可信。

  根据正态分布理论,随机变数在靠近中心数值附近区域出现的机会最多,离中心数值越远,出现的机会就越小。

  在股市的长期发展过程中,绝大多数时间里相对强弱指数的变化范围介于30 和70之间,其中又以40和60之间的机会最多,超过80或者低于20的机会较少。 而出现机会最少的是高于90及低于10。

  应用法则 :

  • RSI比K线、美国线更能看出其走势型态,因此可以利用切线划出支撑线或阻力线,以判定未来之走向。
  • RSI可依头肩顶,头肩底,三角形等型态作买卖点的讯号。
  • RSI在50以下弱势市场,50以上强势市场。
  • RSI在50以下的准确性较高。
  • 6日RSI值85以上为超买,15以下为超卖。在85附近形成W底可以买进。
  • 盘整时,RSI一底比一底高,表示多头势强,後市可能再涨一段,反之一底比一底低是卖出时机。
  • 若行情尚在盘旋阶段,而RSI已整理完成,呈现型态,则价位将随之突破整理区。
    • 在行情创新高点,同时RSI也创新高点时,表示后市仍强若RSI未同时创新高点,则表示即将反转。
    • 在行情创新低点,同时RSI也创新低点,则後市仍弱,若RSI未创新低点,行情极可能反转。
  • 当行情三度创新高价,而RSI却呈现一峰比一峰高,则可视为天价,相对地行情创新低价,而RSI却呈现一底比一底低,显然地,可视为底价。
  • 虚弱回转:虚弱回转在70以上或0以下,是市场反转的强烈讯号。
  • 虽然RSI已被普遍使用,但仍有缺点,如果在大涨势或大跌势市场,RSI值进入超买区或超卖区时,可能出现价位持续大涨或大跌。而指标却只有微幅增减,因此为避免因它的渐形钝化,而使投资人过早卖出或买进,造成少赚或被套之风险,应配合其他技术分析的方法研判。

CCI 商品路径指标

  商品通道指数(CCI)是一种气势 振荡器中所使用的技术分析主要用于识别超买和超卖水平测量仪器的变化,从它的统计平均值远。CCI是一个非常知名且广泛使用的指标,它的多功能性已经获得了普及程度。除了超买/超卖水平之外,CCI经常被用来发现逆转和分歧。该指标最初的目的是用于识别商品趋势,但现在它已用于各种金融工具。

  计算公式:

CCI = ((TYP-MA(TYP,N))/(0.015*AVEDEV(TYP,N))

TYP比较容易理解,(最高价+最低价+收盘价)÷3

MA(TYP,N) 也比较简单,就是N天的TYP的平均值

AVEDEV(TYP,N) 比较难理解,是对TYP进行绝对平均偏差的计算。

常数= 0.015 ,出于缩放目的,该常数被设置为0.015。

  应用法则:

  • CCI为正值时,视为多头市场;为负值时,视为空头市场
  • 常态行情时,CCI波动于100之间;强势行情,CCI会超出100;
  • CCI>100时,买进;直到CCI<100时,卖出;
  • CCI<100时,放空;直到cci>-100时,回补。

Documentation

Index

Constants

This section is empty.

Variables

This section is empty.

Functions

This section is empty.

Types

type BOLL

type BOLL struct {
	PeriodN int     //计算周期
	PeriodK float64 //带宽
	// contains filtered or unexported fields
}

BOLL struct 布比线

func NewBOLL

func NewBOLL(list []*commonmodels.Kline) *BOLL

NewBOLL Func 使用方法,先添加最早日期的数据,最后一条应该是当前日期的数据,结果与 AICoin 对比完全一致

func (*BOLL) Calculation

func (e *BOLL) Calculation() *BOLL

Calculation Func

func (*BOLL) GetPoints

func (e *BOLL) GetPoints() []BOLLPoint

GetPoints Func

type BOLLPoint

type BOLLPoint struct {
	UP   float64
	MID  float64
	Low  float64
	Time time.Time
}

type CCI

type CCI struct {
	Period int //默认计算几天的
	// contains filtered or unexported fields
}

CCI struct

func NewCCI

func NewCCI(list []*commonmodels.Kline, period int) *CCI

NewCCI new Func

func (*CCI) Calculation

func (e *CCI) Calculation() *CCI

Calculation Func

func (*CCI) GetPoints

func (e *CCI) GetPoints() []CCIPoint

GetPoints return Point

func (*CCI) GetValue

func (e *CCI) GetValue() []float64

GetValue return Value

type CCIPoint

type CCIPoint struct {
	// contains filtered or unexported fields
}

type EMA

type EMA struct {
	Period int //默认计算几天的EMA
	// contains filtered or unexported fields
}

EMA struct

func NewEMA

func NewEMA(list []*commonmodels.Kline, period int) *EMA

NewEMA new Func

func (*EMA) Add

func (e *EMA) Add(timestamp time.Time, value float64)

Add adds a new Value to Ema 使用方法,先添加最早日期的数据,最后一条应该是当前日期的数据,结果与 AICoin 对比完全一致

func (*EMA) Calculation

func (e *EMA) Calculation() *EMA

Calculation Func

func (*EMA) GetPoints

func (e *EMA) GetPoints() []EMAPoint

GetPoints return Point

type EMAPoint

type EMAPoint struct {
	// contains filtered or unexported fields
}

type KDJ

type KDJ struct {
	Period int //默认计算几天的
	// contains filtered or unexported fields
}

KDJ is the main object

func NewKDJ

func NewKDJ(list []*commonmodels.Kline, period int) *KDJ

NewKDJ new Func

func (*KDJ) Calculation

func (e *KDJ) Calculation() *KDJ

Calculation Func

func (*KDJ) GetListD

func (e *KDJ) GetListD() []float64

GetListD Func

func (*KDJ) GetListJ

func (e *KDJ) GetListJ() []float64

GetListJ Func

func (*KDJ) GetListK

func (e *KDJ) GetListK() []float64

GetListK Func

func (*KDJ) GetPoints

func (e *KDJ) GetPoints() []KDJPoint

GetPoints return Point

type KDJPoint

type KDJPoint struct {
	Time time.Time
	RSV  float64
	K    float64
	D    float64
	J    float64
}

type MA

type MA struct {
	Period int //默认计算几天的MA,KDJ一般是9,OBV是10、20、30
	// contains filtered or unexported fields
}

MA struct

func NewMA

func NewMA(list []*commonmodels.Kline, period int) *MA

NewMA new Func

func (*MA) Calculation

func (e *MA) Calculation() *MA

Calculation Func

func (*MA) GetPoints

func (e *MA) GetPoints() []MAPoint

GetPoints return Point

type MACD

type MACD struct {
	PeriodShort  int //默认12
	PeriodSignal int //信号长度默认9
	PeriodLong   int //默认26
	// contains filtered or unexported fields
}

MACD is the main object

func NewMACD

func NewMACD(list []*commonmodels.Kline) *MACD

NewMACD new Func 使用方法,先添加最早日期的数据,最后一条应该是当前日期的数据,结果与 AICoin 对比完全一致

func (*MACD) Calculation

func (e *MACD) Calculation() *MACD

Calculation Func

func (*MACD) GetPoints

func (e *MACD) GetPoints() []MACDPoint

GetPoints return Point

type MACDPoint

type MACDPoint struct {
	Time time.Time
	DIF  float64
	DEA  float64
	MACD float64
}

type MAPoint

type MAPoint struct {
	// contains filtered or unexported fields
}

type OBV

type OBV struct {
	// contains filtered or unexported fields
}

OBV struct

func NewOBV

func NewOBV(list []*commonmodels.Kline) *OBV

NewOBV new OBV

func (*OBV) Calculation

func (e *OBV) Calculation() *OBV

Calculation Func

func (*OBV) GetPoints

func (e *OBV) GetPoints() []OBVPoint

GetPoints Func

type OBVPoint

type OBVPoint struct {
	// contains filtered or unexported fields
}

type RSI

type RSI struct {
	Period int //默认计算几天的
	// contains filtered or unexported fields
}

RSI is the main object

func NewRSI

func NewRSI(list []*commonmodels.Kline, period int) *RSI

NewRSI new Func 使用方法,先添加最早日期的数据,最后一条应该是当前日期的数据,结果与 AICoin 对比完全一致

func (*RSI) Calculation

func (e *RSI) Calculation() *RSI

Calculation Func

func (*RSI) GetPoints

func (e *RSI) GetPoints() []RSIPoint

GetPoints return Point

func (*RSI) GetValue

func (e *RSI) GetValue() []float64

GetValue return Value

type RSIPoint

type RSIPoint struct {
	// contains filtered or unexported fields
}

type SMA

type SMA struct {
	Period int //默认计算几天的SMA
	// contains filtered or unexported fields
}

SMA struct

func NewSMA

func NewSMA(list []*commonmodels.Kline, period int) *SMA

NewSMA new Func

func (*SMA) Calculation

func (e *SMA) Calculation() *SMA

Calculation Func

func (*SMA) GetPoints

func (e *SMA) GetPoints() []SMAPoint

GetPoints Func

type SMAPoint

type SMAPoint struct {
	// contains filtered or unexported fields
}

Jump to

Keyboard shortcuts

? : This menu
/ : Search site
f or F : Jump to
y or Y : Canonical URL