Documentation
¶
Index ¶
- func FindPivotHighPoint(klineData KlineDatas, index, period int) float64
- func FindPivotLowPoint(klineData KlineDatas, index, period int) float64
- type FieldNames
- type KlineData
- type KlineDatas
- func (k *KlineDatas) ADX(period int) (*TaADX, error)
- func (k *KlineDatas) ADX_(period int) (float64, float64, float64)
- func (k *KlineDatas) ATR(period int) (*TaATR, error)
- func (k *KlineDatas) ATR_(period int) float64
- func (k *KlineDatas) Add(wsKline interface{}, customFields ...*FieldNames) error
- func (k *KlineDatas) Boll(period int, stdDev float64, source string) (*TaBoll, error)
- func (k *KlineDatas) Boll_(period int, stdDev float64, source string) (float64, float64, float64)
- func (k *KlineDatas) CCI(period int) (*TaCCI, error)
- func (k *KlineDatas) CCI_(period int) float64
- func (k *KlineDatas) CMF(period int, source string) (*TaCMF, error)
- func (k *KlineDatas) CMF_(period int, source string) float64
- func (k *KlineDatas) DPO(source string, shortPeriod, longPeriod, xPeriod, smoothPeriod int) (*TaDpo, error)
- func (k *KlineDatas) DPO_(shortPeriod, longPeriod, xPeriod, smoothPeriod int) (float64, float64, float64, float64, float64, float64)
- func (k *KlineDatas) EMA(period int, source string) (*TaEMA, error)
- func (k *KlineDatas) EMA_(period int) float64
- func (k *KlineDatas) ExtractSlice(priceType string) ([]float64, error)
- func (k *KlineDatas) GetLast(source string) float64
- func (k *KlineDatas) GetLastN(n int, source string) float64
- func (k *KlineDatas) JingZheMA(period1, period2 int) (*TaJingZheMA, error)
- func (k *KlineDatas) JingZheMA_(period1, period2 int) (float64, float64, float64, float64, float64)
- func (k *KlineDatas) KDJ(rsvPeriod, kPeriod, dPeriod int) (*TaKDJ, error)
- func (k *KlineDatas) KDJ_(rsvPeriod, kPeriod, dPeriod int) (float64, float64, float64)
- func (k *KlineDatas) Keep(n int) (KlineDatas, error)
- func (k *KlineDatas) Keep_(n int) error
- func (k *KlineDatas) MACD(source string, shortPeriod, longPeriod, signalPeriod int) (*TaMacd, error)
- func (k *KlineDatas) MACD_(shortPeriod, longPeriod, signalPeriod int) (float64, float64, float64)
- func (k *KlineDatas) OBV() (*TaOBV, error)
- func (k *KlineDatas) OBV_() float64
- func (k *KlineDatas) RMA(period int, source string) (*TaRMA, error)
- func (k *KlineDatas) RMA_(period int, source string) float64
- func (k *KlineDatas) RSI(period int, source string) (*TaRSI, error)
- func (k *KlineDatas) RSI_(period int, source string) float64
- func (k *KlineDatas) SMA(period int, source string) (*TaSMA, error)
- func (k *KlineDatas) SMA_(period int, source string) float64
- func (k *KlineDatas) StochRSI(rsiPeriod, stochPeriod, kPeriod, dPeriod int, source string) (*TaStochRSI, error)
- func (k *KlineDatas) StochRSI_(rsiPeriod, stochPeriod, kPeriod, dPeriod int, source string) (float64, float64)
- func (k *KlineDatas) SuperTrend(period int, multiplier float64) (*TaSuperTrend, error)
- func (k *KlineDatas) SuperTrendPivot(pivotPeriod int, factor float64, atrPeriod int) (*TaSuperTrendPivot, error)
- func (k *KlineDatas) SuperTrendPivotHl2(period int, multiplier float64) (*TaSuperTrendPivotHl2, error)
- func (k *KlineDatas) SuperTrendPivotHl2_(period int, multiplier float64) (float64, float64, int)
- func (k *KlineDatas) SuperTrendPivot_(pivotPeriod int, factor float64, atrPeriod int) (float64, float64, int)
- func (k *KlineDatas) SuperTrend_(period int, multiplier float64) (float64, float64, int)
- func (k *KlineDatas) T3(period int, vfact float64, source string) (*TaT3, error)
- func (k *KlineDatas) T3_(period int, vfact float64, source string) float64
- func (k KlineDatas) VolatilityRatio(shortPeriod, longPeriod int) (*TaVolatilityRatio, error)
- func (k *KlineDatas) VolatilityRatio_(shortPeriod, longPeriod int) float64
- func (k *KlineDatas) WilliamsR(period int) (*TaWilliamsR, error)
- func (k *KlineDatas) WilliamsR_(period int) float64
- type TaADX
- type TaATR
- type TaBoll
- type TaCCI
- type TaCMF
- type TaDpo
- type TaEMA
- type TaJingZheMA
- type TaKDJ
- type TaMacd
- type TaOBV
- type TaRMA
- type TaRSI
- type TaSMA
- type TaStochRSI
- type TaSuperTrend
- type TaSuperTrendPivot
- type TaSuperTrendPivotHl2
- type TaT3
- type TaVolatilityRatio
- type TaWilliamsR
Constants ¶
This section is empty.
Variables ¶
This section is empty.
Functions ¶
func FindPivotHighPoint ¶
func FindPivotHighPoint(klineData KlineDatas, index, period int) float64
FindPivotHighPoint 在指定周期范围内寻找高点轴点 说明:
在给定K线位置的前后period个周期内寻找是否存在高点轴点 当前位置的高点必须是指定范围内的最高点才能被认定为轴点
参数:
- klineData: K线数据
- index: 当前检查的位置
- period: 前后查找的周期范围
返回值:
- float64: 如果找到轴点返回该点的高点价格,否则返回NaN
func FindPivotLowPoint ¶
func FindPivotLowPoint(klineData KlineDatas, index, period int) float64
FindPivotLowPoint 在指定周期范围内寻找低点轴点 说明:
在给定K线位置的前后period个周期内寻找是否存在低点轴点 当前位置的低点必须是指定范围内的最低点才能被认定为轴点
参数:
- klineData: K线数据
- index: 当前检查的位置
- period: 前后查找的周期范围
返回值:
- float64: 如果找到轴点返回该点的低点价格,否则返回NaN
Types ¶
type FieldNames ¶ added in v1.4.1
type FieldNames struct {
TimeFields []string // 自定义时间字段名称
OpenFields []string // 自定义开盘价字段名称
HighFields []string // 自定义最高价字段名称
LowFields []string // 自定义最低价字段名称
CloseFields []string // 自定义收盘价字段名称
VolumeFields []string // 自定义成交量字段名称
}
FieldNames 自定义字段名称配置 用于扩展支持的字段名称,如果某个字段为 nil 或空,则使用默认字段名称
type KlineData ¶
type KlineData struct {
StartTime int64 `json:"startTime"` // K线的开始时间戳(毫秒)
Open float64 `json:"open"` // 开盘价
High float64 `json:"high"` // 最高价
Low float64 `json:"low"` // 最低价
Close float64 `json:"close"` // 收盘价
Volume float64 `json:"volume"` // 成交量
}
KlineData 表示一根K线的基本数据结构 说明:
包含了一根K线的所有基本信息,包括: - 开盘时间 - OHLCV (开盘价、最高价、最低价、收盘价、成交量)
func (*KlineData) Value ¶ added in v1.1.1
GetKlineValue 从单个K线数据中获取指定类型的值 说明:
从给定的K线数据中获取特定类型的价格或成交量数据 支持多种格式的参数输入
参数:
- source: 数据类型,支持多种格式:
- 完整名称: "open"、"high"、"low"、"close"、"volume"
- 数字格式: "1"(open)、"2"(high)、"3"(low)、"4"(close)、"5"(volume)
- 简写格式: "o"(open)、"h"(high)、"l"(low)、"c"(close)、"v"(volume)
返回值:
- float64: 请求的价格数据,如果数据类型不支持返回-1
type KlineDatas ¶
type KlineDatas []*KlineData
KlineDatas 是KlineData的切片类型,代表一组K线数据
func NewKlineDatas ¶
func NewKlineDatas(klines interface{}, l bool, customFields ...*FieldNames) (KlineDatas, error)
NewKlineDatas 创建新的K线数据集合 说明:
将任意格式的K线数据转换为标准的KlineDatas格式 支持并发处理大量数据,自动根据CPU核心数分配工作
参数:
- klines: 输入的K线数据(支持多种格式)
- l: 是否排除最后一根K线(通常用于处理未完成的K线)
- customFields: 可选的自定义字段名称,用于扩展支持的字段名称
返回值:
- KlineDatas: 标准格式的K线数据集合
- error: 转换过程中的错误
func (*KlineDatas) ADX ¶
func (k *KlineDatas) ADX(period int) (*TaADX, error)
ADX 为K线数据计算平均趋向指标 说明:
对当前K线数据计算ADX指标
参数:
- period: 计算周期
返回值:
- *TaADX: 包含ADX计算结果的结构体指针
- error: 计算过程中的错误
func (*KlineDatas) ADX_ ¶ added in v1.0.9
func (k *KlineDatas) ADX_(period int) (float64, float64, float64)
func (*KlineDatas) ATR ¶
func (k *KlineDatas) ATR(period int) (*TaATR, error)
ATR 为K线数据计算平均真实波幅 说明:
对当前K线数据计算ATR指标
参数:
- period: 计算周期
返回值:
- *TaATR: 包含ATR计算结果的结构体指针
- error: 计算过程中的错误
func (*KlineDatas) ATR_ ¶ added in v1.0.9
func (k *KlineDatas) ATR_(period int) float64
ATR_ 获取最新的ATR值 参数:
- period: 计算周期
返回值:
- float64: 最新的ATR值
func (*KlineDatas) Add ¶
func (k *KlineDatas) Add(wsKline interface{}, customFields ...*FieldNames) error
Add 添加一根新的K线数据 说明:
向K线数据集合中添加一根新的K线 支持多种输入格式的自动转换
参数:
- wsKline: 要添加的K线数据(支持多种格式)
- customFields: 可选的自定义字段名称,用于扩展支持的字段名称
返回值:
- error: 添加过程中的错误
func (*KlineDatas) Boll ¶
Boll 为K线数据计算布林带指标 说明:
对指定价格类型计算布林带指标
参数:
- period: 计算周期
- stdDev: 标准差倍数
- source: 价格类型,支持"open"、"high"、"low"、"close"等
返回值:
- *TaBoll: 包含布林带计算结果的结构体指针
- error: 计算过程中的错误
func (*KlineDatas) Boll_ ¶ added in v1.0.9
Boll_ 获取最新的布林带值 参数:
- period: 计算周期
- stdDev: 标准差倍数
- source: 价格类型
返回值:
- float64: 最新的上轨值
- float64: 最新的中轨值
- float64: 最新的下轨值
func (*KlineDatas) CCI ¶
func (k *KlineDatas) CCI(period int) (*TaCCI, error)
CCI 为K线数据计算商品通道指标 说明:
对当前K线数据计算CCI指标
参数:
- period: 计算周期
返回值:
- *TaCCI: 包含CCI计算结果的结构体指针
- error: 计算过程中的错误
func (*KlineDatas) CCI_ ¶ added in v1.0.9
func (k *KlineDatas) CCI_(period int) float64
CCI_ 获取最新的CCI值 参数:
- period: 计算周期
返回值:
- float64: 最新的CCI值
func (*KlineDatas) CMF ¶
func (k *KlineDatas) CMF(period int, source string) (*TaCMF, error)
CMF 为K线数据计算钱德动量指标 说明:
对当前K线数据计算CMF指标
参数:
- period: 计算周期
- source: 价格类型(此参数在CMF计算中实际未使用,保留是为了接口一致性)
返回值:
- *TaCMF: 包含CMF计算结果的结构体指针
- error: 计算过程中的错误
func (*KlineDatas) CMF_ ¶ added in v1.0.9
func (k *KlineDatas) CMF_(period int, source string) float64
CMF_ 获取最新的CMF值 参数:
- period: 计算周期
- source: 价格类型(此参数在CMF计算中实际未使用,保留是为了接口一致性)
返回值:
- float64: 最新的CMF值
func (*KlineDatas) DPO ¶ added in v1.0.7
func (k *KlineDatas) DPO(source string, shortPeriod, longPeriod, xPeriod, smoothPeriod int) (*TaDpo, error)
DPO 为K线数据计算DPO指标 说明:
对指定价格类型计算DPO指标
参数:
- source: 价格类型,支持"open"、"high"、"low"、"close"等
- shortPeriod: 短周期
- longPeriod: 长周期
- xPeriod: 差值长度周期
- smoothPeriod: 平滑周期
返回值:
- *TaDpo: 包含DPO计算结果的结构体指针
- error: 计算过程中的错误
func (*KlineDatas) DPO_ ¶ added in v1.0.9
func (k *KlineDatas) DPO_(shortPeriod, longPeriod, xPeriod, smoothPeriod int) (float64, float64, float64, float64, float64, float64)
DPO_ 获取最新的DPO值 参数:
- shortPeriod: 短周期
- longPeriod: 长周期
- xPeriod: 差值长度周期
- smoothPeriod: 平滑周期
返回值:
- float64: 最新的DPO值
func (*KlineDatas) EMA ¶
func (k *KlineDatas) EMA(period int, source string) (*TaEMA, error)
EMA 为K线数据计算指数移动平均线 说明:
对指定价格类型计算EMA指标
参数:
- period: 计算周期
- source: 价格类型,支持"open"、"high"、"low"、"close"等
返回值:
- *TaEMA: 包含EMA计算结果的结构体指针
- error: 计算过程中的错误
func (*KlineDatas) EMA_ ¶ added in v1.0.9
func (k *KlineDatas) EMA_(period int) float64
EMA_ 获取最新的EMA值 参数:
- period: 计算周期
返回值:
- float64: 最新的EMA值
func (*KlineDatas) ExtractSlice ¶
func (k *KlineDatas) ExtractSlice(priceType string) ([]float64, error)
ExtractSlice 从K线数据中提取指定类型的价格序列 说明:
从K线数据中提取特定类型的价格数据(如收盘价序列)
参数:
- priceType: 价格类型,支持"open"、"high"、"low"、"close"、"volume"
返回值:
- []float64: 提取的价格序列
- error: 提取过程中的错误
func (*KlineDatas) GetLast ¶
func (k *KlineDatas) GetLast(source string) float64
GetLast 获取最后一根K线的指定数据 说明:
获取最后一根K线的特定价格数据
参数:
- source: 数据类型,支持"open"、"high"、"low"、"close"、"volume"
返回值:
- float64: 请求的价格数据,如果数据不存在返回-1
func (*KlineDatas) GetLastN ¶ added in v1.1.0
func (k *KlineDatas) GetLastN(n int, source string) float64
GetLastN 获取最后指定K线的指定数据
说明:
获取最后指定K线的特定价格数据
参数:
- n: 要获取的K位置,倒序取值 0为最后一根 1为倒数第二根 2为倒数第三根
- source: 数据类型,支持"open"、"high"、"low"、"close"、"volume"
返回值:
- float64: 请求的价格数据,如果数据不存在返回-1
func (*KlineDatas) JingZheMA ¶ added in v1.0.8
func (k *KlineDatas) JingZheMA(period1, period2 int) (*TaJingZheMA, error)
JingZheMA 为K线数据计算惊蛰均线指标 说明:
使用K线数据计算惊蛰均线指标 包含多个条件信号线
参数:
- period1: 主要计算周期(默认25)
- period2: OBV的EMA计算周期(默认6)
返回值:
- *TaJingZheMA: 包含惊蛰均线计算结果的结构体指针
- error: 计算过程中的错误
func (*KlineDatas) JingZheMA_ ¶ added in v1.0.9
JingZheMA_ 获取最新的惊蛰均线信号值 参数:
- period1: 主要计算周期(默认25)
- period2: OBV的EMA计算周期(默认6)
返回值:
- float64: 最新的条件1信号值
- float64: 最新的条件2信号值
- float64: 最新的条件3信号值
- float64: 最新的条件4信号值
- float64: 最新的条件5信号值
func (*KlineDatas) KDJ ¶
func (k *KlineDatas) KDJ(rsvPeriod, kPeriod, dPeriod int) (*TaKDJ, error)
KDJ 为K线数据计算随机指标 说明:
对当前K线数据计算KDJ指标
参数:
- rsvPeriod: RSV计算周期
- kPeriod: K值计算周期
- dPeriod: D值计算周期
返回值:
- *TaKDJ: 包含KDJ计算结果的结构体指针
- error: 计算过程中的错误
func (*KlineDatas) KDJ_ ¶ added in v1.0.9
func (k *KlineDatas) KDJ_(rsvPeriod, kPeriod, dPeriod int) (float64, float64, float64)
KDJ_ 获取最新的KDJ值 参数:
- rsvPeriod: RSV计算周期
- kPeriod: K值计算周期
- dPeriod: D值计算周期
返回值:
- k: 最新的K值
- d: 最新的D值
- j: 最新的J值
func (*KlineDatas) Keep ¶
func (k *KlineDatas) Keep(n int) (KlineDatas, error)
Keep 保留最后N根K线并返回新的数据集 说明:
创建新的数据集,只包含原数据集最后N根K线
参数:
- n: 要保留的K线数量
返回值:
- KlineDatas: 新的K线数据集合
- error: 处理过程中的错误
func (*KlineDatas) Keep_ ¶
func (k *KlineDatas) Keep_(n int) error
Keep_ 保留最后N根K线(直接修改原数据) 说明:
直接修改原数据集,只保留最后N根K线
参数:
- n: 要保留的K线数量
返回值:
- error: 处理过程中的错误
func (*KlineDatas) MACD ¶
func (k *KlineDatas) MACD(source string, shortPeriod, longPeriod, signalPeriod int) (*TaMacd, error)
MACD 为K线数据计算MACD指标 说明:
对指定价格类型计算MACD指标
参数:
- source: 价格类型,支持"open"、"high"、"low"、"close"等
- shortPeriod: 短期EMA周期
- longPeriod: 长期EMA周期
- signalPeriod: 信号线周期
返回值:
- *TaMacd: 包含MACD计算结果的结构体指针
- error: 计算过程中的错误
func (*KlineDatas) MACD_ ¶ added in v1.0.9
func (k *KlineDatas) MACD_(shortPeriod, longPeriod, signalPeriod int) (float64, float64, float64)
MACD_ 获取最新的MACD值 参数:
- shortPeriod: 短期EMA周期
- longPeriod: 长期EMA周期
- signalPeriod: 信号线周期
返回值:
- float64: 最新的MACD值
- float64: 最新的DIF值
- float64: 最新的DEA值
func (*KlineDatas) OBV ¶
func (k *KlineDatas) OBV() (*TaOBV, error)
OBV 为K线数据计算能量潮指标 说明:
使用收盘价和成交量计算OBV指标
返回值:
- *TaOBV: 包含OBV计算结果的结构体指针
- error: 计算过程中的错误
func (*KlineDatas) OBV_ ¶ added in v1.0.9
func (k *KlineDatas) OBV_() float64
OBV_ 获取最新的OBV值 返回值:
- float64: 最新的OBV值
func (*KlineDatas) RMA ¶
func (k *KlineDatas) RMA(period int, source string) (*TaRMA, error)
RMA 为K线数据计算平滑移动平均线 说明:
对指定价格类型计算RMA指标
参数:
- period: 计算周期
- source: 价格类型,支持"open"、"high"、"low"、"close"等
返回值:
- *TaRMA: 包含RMA计算结果的结构体指针
- error: 计算过程中的错误
func (*KlineDatas) RMA_ ¶ added in v1.0.9
func (k *KlineDatas) RMA_(period int, source string) float64
RMA_ 获取最新的RMA值 参数:
- period: 计算周期
- source: 价格类型,支持"open"、"high"、"low"、"close"等
返回值:
- float64: 最新的RMA值
func (*KlineDatas) RSI ¶
func (k *KlineDatas) RSI(period int, source string) (*TaRSI, error)
RSI 为K线数据计算RSI指标 说明:
基于K线数据中指定的价格类型(如收盘价、开盘价等)计算RSI指标
参数:
- period: RSI计算周期
- source: 价格数据来源,可以是"close"、"open"、"high"、"low"等
返回值:
- *TaRSI: 包含RSI计算结果的结构体指针
- error: 计算过程中的错误
func (*KlineDatas) RSI_ ¶ added in v1.0.9
func (k *KlineDatas) RSI_(period int, source string) float64
RSI_ 获取最新的RSI值 参数:
- period: RSI计算周期
- source: 价格数据来源,可以是"close"、"open"、"high"、"low"等
返回值:
- float64: 最新的RSI值
func (*KlineDatas) SMA ¶
func (k *KlineDatas) SMA(period int, source string) (*TaSMA, error)
SMA 为K线数据计算简单移动平均线 说明:
基于K线数据中指定的价格类型(如收盘价、开盘价等)计算SMA指标
参数:
- period: SMA计算周期
- source: 价格数据来源,可以是"close"、"open"、"high"、"low"等
返回值:
- *TaSMA: 包含SMA计算结果的结构体指针
- error: 计算过程中的错误
func (*KlineDatas) SMA_ ¶ added in v1.0.9
func (k *KlineDatas) SMA_(period int, source string) float64
SMA_ 获取最新的SMA值 参数:
- period: SMA计算周期
- source: 价格数据来源,可以是"close"、"open"、"high"、"low"等
返回值:
- float64: 最新的SMA值
func (*KlineDatas) StochRSI ¶
func (k *KlineDatas) StochRSI(rsiPeriod, stochPeriod, kPeriod, dPeriod int, source string) (*TaStochRSI, error)
StochRSI 为K线数据计算随机RSI指标 说明:
基于K线数据中指定的价格类型(如收盘价、开盘价等)计算StochRSI指标
参数:
- rsiPeriod: RSI计算周期
- stochPeriod: 随机值计算周期
- kPeriod: K值平滑周期
- dPeriod: D值平滑周期
- source: 价格数据来源,可以是"close"、"open"、"high"、"low"等
返回值:
- *TaStochRSI: 包含StochRSI计算结果的结构体指针
- error: 计算过程中的错误
func (*KlineDatas) StochRSI_ ¶ added in v1.0.9
func (k *KlineDatas) StochRSI_(rsiPeriod, stochPeriod, kPeriod, dPeriod int, source string) (float64, float64)
StochRSI_ 获取最新的StochRSI的K值和D值 参数:
- rsiPeriod: RSI计算周期
- stochPeriod: 随机值计算周期
- kPeriod: K值平滑周期
- dPeriod: D值平滑周期
- source: 价格数据来源,可以是"close"、"open"、"high"、"low"等
返回值:
- float64: 最新的K值
- float64: 最新的D值
func (*KlineDatas) SuperTrend ¶
func (k *KlineDatas) SuperTrend(period int, multiplier float64) (*TaSuperTrend, error)
SuperTrend 为K线数据计算超级趋势指标 说明:
对当前K线数据计算SuperTrend指标
参数:
- period: ATR计算周期
- multiplier: ATR乘数
返回值:
- *TaSuperTrend: 包含SuperTrend计算结果的结构体指针
- error: 计算过程中的错误
func (*KlineDatas) SuperTrendPivot ¶
func (k *KlineDatas) SuperTrendPivot(pivotPeriod int, factor float64, atrPeriod int) (*TaSuperTrendPivot, error)
SuperTrendPivot 为K线数据计算基于轴点的超级趋势指标 说明:
对当前K线数据计算SuperTrendPivot指标
参数:
- pivotPeriod: 寻找轴点的周期范围
- factor: ATR乘数
- atrPeriod: ATR计算周期
返回值:
- *TaSuperTrendPivot: 包含计算结果的结构体指针
- error: 计算过程中的错误
func (*KlineDatas) SuperTrendPivotHl2 ¶
func (k *KlineDatas) SuperTrendPivotHl2(period int, multiplier float64) (*TaSuperTrendPivotHl2, error)
SuperTrendPivotHl2 为K线数据计算基于HL2的超级趋势指标 说明:
对当前K线数据计算SuperTrendPivotHl2指标
参数:
- period: ATR计算周期
- multiplier: ATR乘数
返回值:
- *TaSuperTrendPivotHl2: 包含计算结果的结构体指针
- error: 计算过程中的错误
func (*KlineDatas) SuperTrendPivotHl2_ ¶ added in v1.0.9
SuperTrendPivotHl2_ 获取最新的SuperTrendPivotHl2指标值 参数:
- period: ATR计算周期
- multiplier: ATR乘数
返回值:
- float64: 上轨值
- float64: 下轨值
- int: 趋势方向,1表示上涨,-1表示下跌,0表示初始状态
func (*KlineDatas) SuperTrendPivot_ ¶ added in v1.0.9
func (k *KlineDatas) SuperTrendPivot_(pivotPeriod int, factor float64, atrPeriod int) (float64, float64, int)
SuperTrendPivot_ 获取最新的SuperTrendPivot指标值 参数:
- pivotPeriod: 寻找轴点的周期范围
- factor: ATR乘数
- atrPeriod: ATR计算周期
返回值:
- float64: 最新的上轨线值
- float64: 最新的下轨线值
- int: 当前趋势方向,true表示上涨趋势,false表示下跌趋势
func (*KlineDatas) SuperTrend_ ¶ added in v1.0.9
SuperTrend_ 获取最新的SuperTrend指标值 参数:
- period: ATR计算周期
- multiplier: ATR乘数
返回值:
- float64: 最新的上轨线值
- float64: 最新的下轨线值
- bool: 当前趋势方向,true表示上涨趋势,false表示下跌趋势
func (*KlineDatas) T3 ¶
T3 为K线数据计算Tillson T3移动平均线 说明:
基于K线数据中指定的价格类型计算T3移动平均线
参数:
- period: 计算周期
- vfact: 体积因子
- source: 价格数据来源,可以是"close"、"open"、"high"、"low"等
返回值:
- *TaT3: 包含T3计算结果的结构体指针
- error: 计算过程中的错误
func (*KlineDatas) T3_ ¶ added in v1.0.9
func (k *KlineDatas) T3_(period int, vfact float64, source string) float64
T3_ 获取最新的T3值 参数:
- period: 计算周期
- vfact: 体积因子
- source: 价格数据来源
返回值:
- float64: 最新的T3值
func (KlineDatas) VolatilityRatio ¶
func (k KlineDatas) VolatilityRatio(shortPeriod, longPeriod int) (*TaVolatilityRatio, error)
VolatilityRatio 为K线数据计算波动率比率指标 说明:
对当前K线数据计算VR指标
参数:
- shortPeriod: 短周期
- longPeriod: 长周期
返回值:
- *TaVolatilityRatio: 包含VR计算结果的结构体指针
- error: 计算过程中的错误
func (*KlineDatas) VolatilityRatio_ ¶ added in v1.0.9
func (k *KlineDatas) VolatilityRatio_(shortPeriod, longPeriod int) float64
VolatilityRatio_ 获取最新的波动率比率值 参数:
- shortPeriod: 短周期
- longPeriod: 长周期
返回值:
- float64: 最新的VR值
func (*KlineDatas) WilliamsR ¶
func (k *KlineDatas) WilliamsR(period int) (*TaWilliamsR, error)
WilliamsR 为K线数据计算威廉指标 说明:
从K线数据中提取价格序列并计算Williams %R
参数:
- period: 计算周期
返回值:
- *TaWilliamsR: 包含计算结果的结构体指针
- error: 计算过程中的错误
func (*KlineDatas) WilliamsR_ ¶
func (k *KlineDatas) WilliamsR_(period int) float64
WilliamsR_ 快速计算最新的威廉指标值 说明:
计算最近period*14个K线的Williams %R值 这是一个简化版本,主要用于快速获取最新值
参数:
- period: 计算周期
返回值:
- float64: 最新的Williams %R值,计算失败返回0
type TaADX ¶
type TaADX struct {
ADX []float64 `json:"adx"` // ADX值序列
PlusDI []float64 `json:"plus_di"` // +DI值序列
MinusDI []float64 `json:"minus_di"` // -DI值序列
Period int `json:"period"` // 计算周期
}
TaADX 表示平均趋向指标(Average Directional Index)的计算结果 说明:
ADX是一个趋势强度指标,由Welles Wilder开发,包含三个指标: 1. ADX: 趋势强度指标,不分方向 2. +DI: 上升趋向指标 3. -DI: 下降趋向指标 特点: - ADX > 25 表示存在强趋势 - ADX < 20 表示趋势较弱 - ADX上升表示趋势增强 - ADX下降表示趋势减弱
func CalculateADX ¶
func CalculateADX(klineData KlineDatas, period int) (*TaADX, error)
CalculateADX 计算平均趋向指标 说明:
计算步骤: 1. 计算+DM和-DM: +DM = 当日最高价 - 前日最高价 (如果为正且大于-DM) -DM = 前日最低价 - 当日最低价 (如果为正且大于+DM) 2. 计算真实波幅TR: TR = max(high-low, |high-prevClose|, |low-prevClose|) 3. 计算平滑后的+DI和-DI: +DI = 100 * 平滑(+DM) / 平滑(TR) -DI = 100 * 平滑(-DM) / 平滑(TR) 4. 计算ADX: DX = 100 * |+DI - -DI| / (+DI + -DI) ADX = 平滑(DX)
参数:
- klineData: K线数据
- period: 计算周期,通常为14
返回值:
- *TaADX: 包含ADX计算结果的结构体指针
- error: 计算过程中的错误,如数据不足等
示例:
adx, err := CalculateADX(klineData, 14)
type TaATR ¶
type TaATR struct {
Values []float64 `json:"values"` // ATR值序列
Period int `json:"period"` // 计算周期
TrueRange []float64 `json:"true_range"` // 真实波幅序列
}
TaATR 表示平均真实波幅(Average True Range)的计算结果 说明:
ATR是衡量市场波动性的重要指标,由Welles Wilder开发: 1. 不测量价格方向,只测量价格波动幅度 2. 考虑了价格跳空的影响 3. 可用于判断市场波动状态和设置止损位 特点: - ATR值越大,表示市场波动越剧烈 - ATR值越小,表示市场波动越平缓 - 常用于确定止损距离和仓位大小
func CalculateATR ¶
func CalculateATR(klineData KlineDatas, period int) (*TaATR, error)
CalculateATR 计算平均真实波幅 说明:
计算步骤:
1. 计算真实波幅(TR):
TR = max(
当日最高价 - 当日最低价,
|当日最高价 - 前日收盘价|,
|当日最低价 - 前日收盘价|
)
2. 计算ATR:
第一个ATR = 前period日TR的简单平均
之后的ATR = (前一日ATR * (period-1) + 当日TR) / period
参数:
- klineData: K线数据
- period: 计算周期,通常为14
返回值:
- *TaATR: 包含ATR计算结果的结构体指针
- error: 计算过程中的错误,如数据不足等
示例:
atr, err := CalculateATR(klineData, 14)
type TaBoll ¶
type TaBoll struct {
Upper []float64 `json:"upper"` // 上轨线序列
Mid []float64 `json:"mid"` // 中轨线序列(移动平均线)
Lower []float64 `json:"lower"` // 下轨线序列
}
TaBoll 表示布林带(Bollinger Bands)的计算结果 说明:
布林带是由John Bollinger开发的技术分析工具,包含三条轨道线: 1. 中轨:N周期简单移动平均线(SMA) 2. 上轨:中轨 + K倍标准差 3. 下轨:中轨 - K倍标准差 特点: - 价格通常在上下轨道之间波动 - 轨道宽度反映市场波动性 - 可用于判断超买超卖和趋势强度
func CalculateBoll ¶
CalculateBoll 计算布林带指标 说明:
计算步骤: 1. 计算中轨(简单移动平均线) 2. 计算标准差: - 计算每个价格与移动平均线的差值 - 计算差值的平方和 - 计算平方和的均值并开方 3. 计算上下轨: - 上轨 = 中轨 + K倍标准差 - 下轨 = 中轨 - K倍标准差
参数:
- prices: 价格序列
- period: 计算周期,通常为20
- stdDev: 标准差倍数,通常为2
返回值:
- *TaBoll: 包含布林带计算结果的结构体指针
- error: 计算过程中的错误,如数据不足等
示例:
boll, err := CalculateBoll(prices, 20, 2.0)
type TaCCI ¶
type TaCCI struct {
Values []float64 `json:"values"` // CCI值序列
}
TaCCI 表示商品通道指标(Commodity Channel Index)的计算结果 说明:
CCI是由Donald Lambert开发的技术分析工具: 1. 测量价格是否偏离其统计平均水平 2. 用于识别周期性的超买超卖水平 3. 可以预测价格趋势的反转 特点: - 取值范围理论上无限,但通常在±100之间波动 - +100以上为超买区 - -100以下为超卖区 - 数值的绝对值越大,价格偏离度越高
func CalculateCCI ¶
func CalculateCCI(klineData KlineDatas, period int) (*TaCCI, error)
CalculateCCI 计算商品通道指标 说明:
计算步骤: 1. 计算典型价格(TP): TP = (最高价 + 最低价 + 收盘价) / 3 2. 计算TP的N周期简单移动平均(SMA) 3. 计算平均偏差(MD): MD = TP与其SMA的差值的N周期平均 4. 计算CCI: CCI = (TP - SMA) / (0.015 * MD) 其中0.015是Lambert选择的常数
参数:
- klineData: K线数据
- period: 计算周期,通常为20
返回值:
- *TaCCI: 包含CCI计算结果的结构体指针
- error: 计算过程中的错误,如数据不足等
示例:
cci, err := CalculateCCI(klineData, 20)
type TaCMF ¶
TaCMF 表示钱德动量指标(Chaikin Money Flow)的计算结果 说明:
CMF是由Marc Chaikin开发的技术分析工具: 1. 结合了价格和成交量的动量指标 2. 用于衡量资金流入和流出的强度 3. 可以预测价格趋势的持续性 特点: - 取值范围在-1到+1之间 - 正值表示资金流入(看多) - 负值表示资金流出(看空) - 绝对值越大表示资金流动越强烈
func CalculateCMF ¶
CalculateCMF 计算钱德动量指标 说明:
计算步骤: 1. 计算资金流量乘数(MFM): MFM = ((收盘价-最低价)-(最高价-收盘价))/(最高价-最低价) 2. 计算资金流量(MFV): MFV = MFM * 成交量 3. 计算CMF: CMF = N周期MFV之和 / N周期成交量之和 使用场景: - 判断主力资金流向 - 预测价格趋势持续性 - 识别潜在的趋势反转
参数:
- high: 最高价序列
- low: 最低价序列
- close: 收盘价序列
- volume: 成交量序列
- period: 计算周期,通常为20或21
返回值:
- *TaCMF: 包含CMF计算结果的结构体指针
- error: 计算过程中的错误,如数据不足等
示例:
cmf, err := CalculateCMF(high, low, close, volume, 20)
type TaDpo ¶ added in v1.0.7
type TaDpo struct {
Short []float64 `json:"short"` // 短周期DPO序列
Long []float64 `json:"long"` // 长周期DPO序列
Diff []float64 `json:"diff"` // DPO差值序列
High []float64 `json:"high"` // 差值的X周期最高点
Low []float64 `json:"low"` // 差值的X周期最低点
Mid []float64 `json:"mid"` // 高点和低点的平均值
ShortPeriod int `json:"short_period"` // 短周期
LongPeriod int `json:"long_period"` // 长周期
XPeriod int `json:"x_period"` // 差值长度周期
SmoothPeriod int `json:"smooth_period"` // 平滑周期
}
TaDpo 表示偏离价格振荡器(Detrended Price Oscillator)的计算结果 说明:
DPO是一种趋势跟踪指标,用于识别价格周期: 1. DPO短周期:收盘价与短周期SMA的差值 2. DPO长周期:收盘价与长周期SMA的差值 3. DPO差值:短周期DPO减去长周期DPO 4. DPO高点:差值的X周期最高点 5. DPO低点:差值的X周期最低点 6. DPO中点:高点和低点的平均值
func CalculateDPO ¶ added in v1.0.7
func CalculateDPO(prices []float64, shortPeriod, longPeriod, xPeriod, smoothPeriod int) (*TaDpo, error)
CalculateDPO 计算DPO指标 说明:
计算步骤: 1. 计算偏移量: - 短周期偏移量 = floor(短周期 / 2) + 1 - 长周期偏移量 = floor(长周期 / 2) + 1 2. 计算原始DPO值: - 短周期DPO = 收盘价 - 短周期SMA[短周期偏移量] - 长周期DPO = 收盘价 - 长周期SMA[长周期偏移量] 3. 对DPO值进行平滑处理 4. 计算DPO差值:短周期DPO - 长周期DPO 5. 计算差值的X周期最高点和最低点 6. 对最高点和最低点进行平滑处理 7. 计算中间值:(高点 + 低点) / 2
参数:
- prices: 价格序列
- shortPeriod: 短周期,默认15
- longPeriod: 长周期,默认19
- xPeriod: 差值长度周期,默认11
- smoothPeriod: 平滑周期,默认3
返回值:
- *TaDpo: 包含DPO计算结果的结构体指针
- error: 计算过程中的错误,如数据不足等
示例:
dpo, err := CalculateDPO(prices, 15, 19, 11, 3)
type TaEMA ¶
TaEMA 表示指数移动平均线(Exponential Moving Average)的计算结果 说明:
EMA是一种赋予近期数据更高权重的移动平均线: 1. 比简单移动平均线(SMA)对价格变化更敏感 2. 能更快反映价格趋势的变化 3. 广泛用于其他技术指标的计算(如MACD) 特点: - 对最新数据的反应更快 - 减少了滞后性 - 平滑度介于SMA和WMA之间 - 适合中短期趋势跟踪
func CalculateEMA ¶
CalculateEMA 计算指数移动平均线 说明:
计算步骤: 1. 计算第一个EMA值(使用SMA作为起始值): 首个EMA = 前N日价格的算术平均值 2. 计算后续EMA值: EMA = 当日价格 * K + 前一日EMA * (1-K) 其中 K = 2/(N+1),N为周期数 应用场景: - 判断价格趋势 - 支撑位和阻力位分析 - 用于构建其他技术指标
参数:
- prices: 价格序列
- period: 计算周期,常用值:
- 短期:5、10、12
- 中期:20、26
- 长期:50、100、200
返回值:
- *TaEMA: 包含EMA计算结果的结构体指针
- error: 计算过程中的错误,如数据不足等
示例:
ema, err := CalculateEMA(prices, 20)
type TaJingZheMA ¶ added in v1.0.8
type TaJingZheMA struct {
Cond1Values []float64 `json:"cond1_values"` // 条件1结果序列
Cond2Values []float64 `json:"cond2_values"` // 条件2结果序列
Cond3Values []float64 `json:"cond3_values"` // 条件3结果序列
Cond4Values []float64 `json:"cond4_values"` // 条件4结果序列
Cond5Values []float64 `json:"cond5_values"` // 条件5结果序列
Period1 int `json:"period1"` // 主要周期
Period2 int `json:"period2"` // OBV周期
}
TaJingZheMA 表示惊蛰均线指标的计算结果 说明:
惊蛰均线是基于EMA和OBV组合的复合指标: 1. 结合价格与成交量变化进行趋势判断 2. 通过多周期EMA和OBV信号提供交易参考 3. 用于捕捉市场趋势转换的关键点 特点: - 综合考量价格和成交量的变化 - 提供多种条件信号线 - 可用于趋势跟踪和趋势反转判断 - 适合中长期交易策略
func CalculateJingZheMA ¶ added in v1.0.8
func CalculateJingZheMA(prices, volumes []float64, period1, period2 int) (*TaJingZheMA, error)
CalculateJingZheMA 计算惊蛰均线指标 说明:
计算步骤: 1. 计算三个周期的价格EMA指标 2. 计算OBV指标及其两个不同周期的EMA 3. 根据不同条件生成5个条件信号线 应用场景: - 趋势确认和跟踪 - 发现价量背离 - 捕捉趋势转折点
参数:
- prices: 价格序列(通常使用收盘价)
- volumes: 成交量序列
- period1: 主要计算周期
- period2: OBV的EMA计算周期
返回值:
- *TaJingZheMA: 包含惊蛰均线计算结果的结构体指针
- error: 计算过程中的错误,如数据不足等
示例:
jzma, err := CalculateJingZheMA(prices, volumes, 25, 6)
func (*TaJingZheMA) DirectionNum ¶ added in v1.4.0
func (t *TaJingZheMA) DirectionNum() int
获取确认方向数量
type TaKDJ ¶
type TaKDJ struct {
K []float64 `json:"k"` // K值序列(快速线)
D []float64 `json:"d"` // D值序列(慢速线)
J []float64 `json:"j"` // J值序列(方向线)
}
TaKDJ 表示随机指标(Stochastic Oscillator)的计算结果 说明:
KDJ是一个超买超卖指标,也叫随机指标: 1. K值:快速线,对价格变化反应最敏感 2. D值:慢速线,是K值的移动平均 3. J值:方向线,反映K值与D值的偏离程度 特点: - 取值范围一般在0-100之间(J线可能超出) - 80以上为超买区 - 20以下为超卖区 - 常用于预测价格走势反转
func CalculateKDJ ¶
CalculateKDJ 计算随机指标 说明:
计算步骤: 1. 计算RSV值: RSV = (收盘价 - N日最低价) / (N日最高价 - N日最低价) * 100 2. 计算K值: 当日K = (2 * 前日K + 当日RSV) / 3 3. 计算D值: 当日D = (2 * 前日D + 当日K) / 3 4. 计算J值: J = 3 * K - 2 * D 应用场景: - 判断超买超卖 - 预测趋势反转 - 寻找背离信号
参数:
- high: 最高价序列
- low: 最低价序列
- close: 收盘价序列
- rsvPeriod: RSV计算周期,通常为9
- kPeriod: K值计算周期,通常为3
- dPeriod: D值计算周期,通常为3
返回值:
- *TaKDJ: 包含KDJ计算结果的结构体指针
- error: 计算过程中的错误,如数据不足等
示例:
kdj, err := CalculateKDJ(high, low, close, 9, 3, 3)
type TaMacd ¶
type TaMacd struct {
Macd []float64 `json:"macd"` // MACD柱状值序列
Dif []float64 `json:"dif"` // 差离值序列
Dea []float64 `json:"dea"` // 信号线序列
ShortPeriod int `json:"short_period"` // 短期EMA周期
LongPeriod int `json:"long_period"` // 长期EMA周期
SignalPeriod int `json:"signal_period"` // 信号线周期
}
TaMacd 表示移动平均趋同/背离指标(Moving Average Convergence/Divergence)的计算结果 说明:
MACD是由Gerald Appel开发的趋势跟踪指标: 1. DIF(差离值):短期与长期EMA的差值 2. DEA(信号线):DIF的移动平均 3. MACD柱:DIF与DEA的差值 特点: - 能够同时显示趋势方向和强度 - 可以识别市场的超买超卖状态 - 适合中长期趋势交易 - 能够发现趋势的背离现象
func CalculateMACD ¶
CalculateMACD 计算MACD指标 说明:
计算步骤: 1. 计算短期和长期EMA: - 短期EMA(通常12日) - 长期EMA(通常26日) 2. 计算DIF: DIF = 短期EMA - 长期EMA 3. 计算DEA: DEA = DIF的N日EMA(通常9日) 4. 计算MACD柱: MACD = 2 * (DIF - DEA) 使用场景: - 判断趋势方向和强度 - 寻找买卖点 - 发现趋势背离
参数:
- prices: 价格序列
- shortPeriod: 短期EMA周期,通常为12
- longPeriod: 长期EMA周期,通常为26
- signalPeriod: 信号线周期,通常为9
返回值:
- *TaMacd: 包含MACD计算结果的结构体指针
- error: 计算过程中的错误,如数据不足等
示例:
macd, err := CalculateMACD(prices, 12, 26, 9)
type TaOBV ¶
type TaOBV struct {
Values []float64 `json:"values"` // OBV值序列
}
TaOBV 表示能量潮指标(On Balance Volume)的计算结果 说明:
OBV是由Joe Granville开发的成交量指标: 1. 通过成交量来确认价格趋势 2. 判断成交量是否支撑价格走势 3. 可以预测价格突破的可能性 特点: - 将成交量的变化与价格方向相结合 - 可以发现量价关系的背离 - 帮助判断趋势的强弱 - 适合寻找主力资金进出的迹象
func CalculateOBV ¶
CalculateOBV 计算能量潮指标 说明:
计算规则: 1. 当收盘价上涨时: 当日OBV = 前一日OBV + 当日成交量 2. 当收盘价下跌时: 当日OBV = 前一日OBV - 当日成交量 3. 当收盘价不变时: 当日OBV = 前一日OBV 使用场景: - 判断量价配合程度 - 预测价格突破方向 - 发现趋势的强弱 - 识别主力资金动向
参数:
- prices: 价格序列(通常使用收盘价)
- volumes: 成交量序列
返回值:
- *TaOBV: 包含OBV计算结果的结构体指针
- error: 计算过程中的错误,如数据不足等
示例:
obv, err := CalculateOBV(prices, volumes)
type TaRMA ¶
TaRMA 表示平滑移动平均线(Running Moving Average)的计算结果 说明:
RMA是一种特殊的指数移动平均线: 1. 使用Wilder平滑法计算 2. 相比EMA具有更强的平滑效果 3. 常用于RSI等技术指标的计算 特点: - 平滑度高于简单移动平均线 - 对异常值的敏感度较低 - 计算过程中不会丢失历史信息 - 适合用于波动较大的市场
func CalculateRMA ¶
CalculateRMA 计算平滑移动平均线 说明:
计算步骤: 1. 设定平滑系数 alpha = 1/period 2. 第一个值直接使用原始数据 3. 后续值使用公式: RMA = alpha * 当前值 + (1 - alpha) * 前一期RMA 应用场景: - 用于计算RSI等技术指标 - 平滑价格波动 - 识别中长期趋势 - 过滤市场噪音
参数:
- prices: 价格序列
- period: 计算周期,常用值:
- RSI计算时通常为14
- 趋势跟踪时可选20-60
返回值:
- *TaRMA: 包含RMA计算结果的结构体指针
- error: 计算过程中的错误,如数据不足等
示例:
rma, err := CalculateRMA(prices, 14)
type TaRSI ¶
type TaRSI struct {
Values []float64 `json:"values"` // RSI值的时间序列
Period int `json:"period"` // 计算RSI使用的周期
Gains []float64 `json:"gains"` // 价格上涨幅度的时间序列
Losses []float64 `json:"losses"` // 价格下跌幅度的时间序列
}
TaRSI 表示相对强弱指标(RSI)的计算结果 说明:
RSI是一个动量指标,用于衡量价格变动的强度。它通过计算一定时期内价格上涨和下跌的相对强度来判断市场的超买或超卖状态。 RSI的取值范围是0-100: - RSI > 70 通常被认为是超买状态 - RSI < 30 通常被认为是超卖状态
func CalculateRSI ¶
CalculateRSI 计算给定价格序列的RSI指标 说明:
使用Wilder的RSI计算方法,包括以下步骤: 1. 计算每日价格变动的涨跌幅 2. 计算初始平均涨幅和跌幅 3. 使用平滑移动平均计算后续的平均涨幅和跌幅 4. 根据公式 RSI = 100 - (100 / (1 + RS)) 计算RSI值,其中RS = 平均涨幅/平均跌幅
参数:
- prices: 价格时间序列
- period: RSI计算周期
返回值:
- *TaRSI: 包含RSI计算结果的结构体指针
- error: 计算过程中的错误,如数据不足等
示例:
prices := []float64{10, 10.5, 10.3, 10.2, 10.4, 10.3, 10.7}
rsi, err := CalculateRSI(prices, 5)
type TaSMA ¶
type TaSMA struct {
Values []float64 `json:"values"` // SMA值的时间序列
Period int `json:"period"` // 计算SMA使用的周期
}
TaSMA 表示简单移动平均线(Simple Moving Average)的计算结果 说明:
SMA是最基础的移动平均线指标,用于平滑价格数据,帮助识别价格趋势。 计算方法是取特定周期内的价格平均值。 特点: - 对所有数据点赋予相同权重 - 能有效过滤价格噪音 - 滞后性较强,适合确认中长期趋势
func CalculateSMA ¶
CalculateSMA 计算给定价格序列的简单移动平均线 说明:
使用滑动窗口方法计算SMA,步骤如下: 1. 计算第一个SMA值(前period个价格的平均值) 2. 通过减去窗口最左侧价格并加入最新价格来更新移动窗口 3. 持续计算直至处理完所有数据
参数:
- prices: 价格时间序列
- period: SMA计算周期,如5日均线period=5
返回值:
- *TaSMA: 包含SMA计算结果的结构体指针
- error: 计算过程中的错误,如数据不足等
示例:
prices := []float64{10, 11, 12, 13, 14, 15, 16}
sma, err := CalculateSMA(prices, 5)
type TaStochRSI ¶
type TaStochRSI struct {
K []float64 `json:"k"` // K值(快线)的时间序列
D []float64 `json:"d"` // D值(慢线)的时间序列
RsiPeriod int `json:"rsi_period"` // RSI计算周期
StochPeriod int `json:"stoch_period"` // 随机指标计算周期
KPeriod int `json:"k_period"` // K值平滑周期
DPeriod int `json:"d_period"` // D值平滑周期
}
TaStochRSI 表示随机相对强弱指标(Stochastic RSI)的计算结果 说明:
StochRSI是一个复合指标,结合了RSI和随机指标的特点: 1. 首先计算RSI 2. 然后对RSI值应用随机指标的计算方法 3. 最后计算快线K值和慢线D值 特点: - 取值范围0-100 - 相比传统RSI更敏感 - 可以更早发现超买超卖区域 - 80以上为超买区,20以下为超卖区
func CalculateStochRSI ¶
func CalculateStochRSI(prices []float64, rsiPeriod, stochPeriod, kPeriod, dPeriod int) (*TaStochRSI, error)
CalculateStochRSI 计算给定价格序列的随机RSI指标 说明:
计算步骤: 1. 计算指定周期的RSI值 2. 计算RSI的随机值:(当前RSI - 最低RSI) / (最高RSI - 最低RSI) * 100 3. 对随机值进行平滑处理得到K值 4. 对K值进行平滑处理得到D值
参数:
- prices: 价格时间序列
- rsiPeriod: RSI计算周期,通常为14
- stochPeriod: 随机值计算周期,通常为14
- kPeriod: K值平滑周期,通常为3
- dPeriod: D值平滑周期,通常为3
返回值:
- *TaStochRSI: 包含StochRSI计算结果的结构体指针
- error: 计算过程中的错误,如数据不足等
示例:
prices := []float64{10, 10.5, 10.3, 10.2, 10.4, 10.3, 10.7}
stochRsi, err := CalculateStochRSI(prices, 14, 14, 3, 3)
func (*TaStochRSI) Value ¶
func (t *TaStochRSI) Value() (kValue, dValue float64)
Value 获取最新的StochRSI的K值和D值 说明:
返回StochRSI的最新K值(快线)和D值(慢线) 交易信号: - K线从下方穿过D线是买入信号 - K线从上方穿过D线是卖出信号 - K和D同时在超买区(80以上)或超卖区(20以下)时信号更强
返回值:
- kValue: 最新的K值
- dValue: 最新的D值
type TaSuperTrend ¶
type TaSuperTrend struct {
Values []float64 `json:"values"` // 指标值序列,上涨趋势时为下轨,下跌趋势时为上轨
Trend []int `json:"direction"` // 趋势方向:1表示上涨,-1表示下跌,0表示初始状态
Upper []float64 `json:"upper_band"` // 上轨线序列
Lower []float64 `json:"lower_band"` // 下轨线序列
Period int `json:"period"` // ATR计算周期
Multiplier float64 `json:"multiplier"` // ATR乘数,用于调整轨道宽度
}
TaSuperTrend 表示超级趋势指标(SuperTrend)的计算结果 说明:
SuperTrend是一个趋势跟踪指标,结合了ATR和中轨线的概念: 1. 利用ATR来衡量市场波动性 2. 根据中轨线和ATR计算上下轨 3. 通过价格与轨道的关系判断趋势 特点: - 能有效识别市场趋势 - 自动调整对市场波动的敏感度 - 提供明确的趋势反转信号 - 可作为止损止盈的参考位置
func CalculateSuperTrend ¶
func CalculateSuperTrend(klineData KlineDatas, period int, multiplier float64) (*TaSuperTrend, error)
CalculateSuperTrend 计算给定K线数据的超级趋势指标 说明:
计算步骤: 1. 计算ATR值作为波动参考 2. 计算中轨线 = (最高价 + 最低价) / 2 3. 计算上轨线 = 中轨线 + multiplier * ATR 4. 计算下轨线 = 中轨线 - multiplier * ATR 5. 根据收盘价与轨道的位置关系确定趋势 趋势判断规则: - 当收盘价上穿上轨线时,趋势转为上涨 - 当收盘价下穿下轨线时,趋势转为下跌
参数:
- klineData: K线数据
- period: ATR计算周期,通常为7-14
- multiplier: ATR乘数,通常为2-3,越大轨道越宽
返回值:
- *TaSuperTrend: 包含SuperTrend计算结果的结构体指针
- error: 计算过程中的错误,如数据不足等
示例:
superTrend, err := CalculateSuperTrend(klineData, 10, 3.0)
func (*TaSuperTrend) Value ¶
func (t *TaSuperTrend) Value() (upper, lower float64, trend int)
Value 获取最新的SuperTrend指标值 说明:
返回最新的上轨线、下轨线值和趋势方向 使用建议: - 上涨趋势时,下轨线可作为止损位 - 下跌趋势时,上轨线可作为止损位 - 趋势反转时及时调整持仓方向
返回值:
- upper: 最新的上轨线值
- lower: 最新的下轨线值
- isUpTrend: 当前趋势方向,true表示上涨趋势,false表示下跌趋势
type TaSuperTrendPivot ¶
type TaSuperTrendPivot struct {
Values []float64 `json:"values"` // 指标值序列,上涨趋势时为下轨,下跌趋势时为上轨
Trend []int `json:"direction"` // 趋势方向:1表示上涨,-1表示下跌,0表示初始状态
Upper []float64 `json:"upper_band"` // 上轨线的时间序列
Lower []float64 `json:"lower_band"` // 下轨线的时间序列
PivotPeriod int `json:"pivot_period"` // 寻找轴点的周期范围
Factor float64 `json:"factor"` // ATR乘数,用于调整轨道宽度
AtrPeriod int `json:"atr_period"` // ATR计算周期
}
TaSuperTrendPivot 表示基于轴点的超级趋势指标计算结果 说明:
SuperTrendPivot是SuperTrend的改进版本,通过寻找价格轴点来优化趋势线: 1. 使用价格轴点(高点和低点)来确定中心线 2. 结合ATR动态调整轨道宽度 3. 提供更准确的趋势转向信号 特点: - 相比传统SuperTrend更好地识别关键价格水平 - 减少假突破信号 - 趋势跟踪能力更强 - 适合中长期趋势交易
func CalculateSuperTrendPivot ¶
func CalculateSuperTrendPivot(klineData KlineDatas, pivotPeriod int, factor float64, atrPeriod int) (*TaSuperTrendPivot, error)
CalculateSuperTrendPivot 计算基于轴点的超级趋势指标 说明:
计算步骤: 1. 在每个位置寻找高点和低点轴点 2. 根据轴点计算中心线: - 如果同时存在高低点,取其平均值 - 如果只有一个轴点,使用该轴点 - 如果没有轴点,使用当前K线的中点 3. 使用加权平均方式平滑中心线 4. 结合ATR计算上下轨 5. 根据收盘价与轨道的关系确定趋势
参数:
- klineData: K线数据
- pivotPeriod: 寻找轴点的周期范围,通常为5-10
- factor: ATR乘数,通常为2-3,越大轨道越宽
- atrPeriod: ATR计算周期,通常为14-21
返回值:
- *TaSuperTrendPivot: 包含计算结果的结构体指针
- error: 计算过程中的错误,如数据不足等
示例:
pivot, err := CalculateSuperTrendPivot(klineData, 7, 2.5, 14)
func (*TaSuperTrendPivot) Value ¶
func (t *TaSuperTrendPivot) Value() (upper, lower float64, trend int)
Value 获取最新的SuperTrendPivot指标值 说明:
返回最新的上轨线、下轨线值和趋势方向 使用建议: - 趋势为1时表示上涨趋势,考虑做多 - 趋势为-1时表示下跌趋势,考虑做空 - 上涨趋势时下轨可作为止损位 - 下跌趋势时上轨可作为止损位
返回值:
- upper: 最新的上轨线值
- lower: 最新的下轨线值
- trend: 当前趋势方向(1: 上涨, -1: 下跌, 0: 初始状态)
type TaSuperTrendPivotHl2 ¶
type TaSuperTrendPivotHl2 struct {
Values []float64 `json:"values"` // 指标值序列,上涨趋势时为下轨,下跌趋势时为上轨
Trend []int `json:"direction"` // 趋势方向:1表示上涨,-1表示下跌,0表示初始状态
Upper []float64 `json:"upper_band"` // 上轨线序列
Lower []float64 `json:"lower_band"` // 下轨线序列
Period int `json:"period"` // ATR计算周期
Multiplier float64 `json:"multiplier"` // ATR乘数,用于调整轨道宽度
}
TaSuperTrendPivotHl2 表示基于HL2的超级趋势指标计算结果 说明:
SuperTrendPivotHl2是SuperTrend的另一个变种,使用HL2(最高价和最低价的平均值)作为中心价格: 1. 使用HL2代替传统的中轨计算方法 2. 结合ATR动态调整轨道宽度 3. 提供更平滑的趋势跟踪效果 特点: - 使用HL2降低价格波动的影响 - 趋势转换更加平滑 - 假突破信号较少 - 适合波动较大的市场
func CalculateSuperTrendPivotHl2 ¶
func CalculateSuperTrendPivotHl2(klineData KlineDatas, period int, multiplier float64) (*TaSuperTrendPivotHl2, error)
CalculateSuperTrendPivotHl2 计算基于HL2的超级趋势指标 说明:
计算步骤: 1. 计算HL2 = (最高价 + 最低价) / 2 2. 计算ATR值作为波动参考 3. 计算基础轨道: - 上轨 = HL2 + multiplier * ATR - 下轨 = HL2 - multiplier * ATR 4. 根据价格穿越情况调整最终轨道 5. 确定趋势方向和指标值 趋势判断规则: - 当收盘价上穿上轨时,趋势转为上涨 - 当收盘价下穿下轨时,趋势转为下跌
参数:
- klineData: K线数据
- period: ATR计算周期,通常为10-21
- multiplier: ATR乘数,通常为2-3,越大轨道越宽
返回值:
- *TaSuperTrendPivotHl2: 包含计算结果的结构体指针
- error: 计算过程中的错误,如数据不足等
示例:
hl2, err := CalculateSuperTrendPivotHl2(klineData, 14, 2.0)
func (*TaSuperTrendPivotHl2) Value ¶
func (t *TaSuperTrendPivotHl2) Value() (upper, lower float64, trend int)
Value 获取最新的SuperTrendPivotHl2指标值 说明:
返回最新的指标值,该值代表当前的趋势线: - 上涨趋势时返回下轨值(支撑位) - 下跌趋势时返回上轨值(压力位) 使用建议: - 可将返回值作为趋势跟踪的参考线 - 价格站上该线视为看多信号 - 价格跌破该线视为看空信号
返回值:
- upper: 上轨值
- lower: 下轨值
- trend: 趋势方向,1表示上涨,-1表示下跌,0表示初始状态
type TaT3 ¶
type TaT3 struct {
Values []float64 `json:"values"` // T3移动平均线的值序列
Period int `json:"period"` // 计算周期
VFact float64 `json:"vfact"` // 体积因子,用于调整平滑度
}
TaT3 表示Tillson T3移动平均线的计算结果 说明:
T3是Tim Tillson开发的一种改进型移动平均线,具有以下特点: 1. 通过多重EMA计算减少滞后性 2. 使用体积因子(Volume Factor)调整平滑度 3. 比传统移动平均更好地跟踪趋势 4. 对价格转折点的反应更快 特点: - 平滑度高,噪音少 - 转向延迟较小 - 可通过参数调整灵敏度 - 计算复杂但效果优异
func CalculateT3 ¶
CalculateT3 计算Tillson T3移动平均线 说明:
计算步骤: 1. 计算六重指数移动平均(EMA1-EMA6) 2. 使用体积因子计算加权系数(c1-c4) 3. 将加权系数应用于EMA3-EMA6得到最终T3值 计算公式: T3 = c1*ema6 + c2*ema5 + c3*ema4 + c4*ema3 其中: - c1 = -a³ - c2 = 3a² + 3a³ - c3 = -6a² - 3a - 3a³ - c4 = 1 + 3a + a³ + 3a² (a为体积因子vfact)
参数:
- prices: 价格序列
- period: 计算周期,通常为5-30
- vfact: 体积因子,范围0-1,通常为0.7
- 接近0时更平滑但滞后更大
- 接近1时响应更快但可能产生更多噪音
返回值:
- *TaT3: 包含T3计算结果的结构体指针
- error: 计算过程中的错误,如数据不足等
示例:
t3, err := CalculateT3(prices, 10, 0.7)
type TaVolatilityRatio ¶
type TaVolatilityRatio struct {
Values []float64 `json:"values"` // 波动率比率的时间序列
Period int `json:"period"` // 计算使用的长周期
}
TaVolatilityRatio 表示波动率比率(Volatility Ratio)指标的计算结果 说明:
波动率比率(VR)是一个用于衡量市场波动性变化的技术指标: 1. 通过比较短期和长期的真实波幅(TR)来衡量波动强度 2. 可以帮助识别市场波动的扩大和收缩 3. 用于判断市场是否即将发生重要变化 特点: - VR > 1 表示短期波动高于长期波动,市场活跃度增加 - VR < 1 表示短期波动低于长期波动,市场活跃度降低 - VR 的突变通常预示着市场即将发生重要变化
func CalculateVolatilityRatio ¶
func CalculateVolatilityRatio(klineData KlineDatas, shortPeriod, longPeriod int) (*TaVolatilityRatio, error)
CalculateVolatilityRatio 计算波动率比率指标 说明:
计算步骤: 1. 计算每个周期的真实波幅(TR): TR = max(high-low, |high-prevClose|, |low-prevClose|) 2. 分别计算短期和长期的平均TR 3. 计算短期TR与长期TR的比率 使用场景: - 识别市场波动性的变化 - 预测可能的趋势变化 - 辅助判断交易时机
参数:
- klineData: K线数据
- shortPeriod: 短周期,通常为3-7
- longPeriod: 长周期,通常为14-21
返回值:
- *TaVolatilityRatio: 包含VR计算结果的结构体指针
- error: 计算过程中的错误,如数据不足等
示例:
vr, err := CalculateVolatilityRatio(klineData, 5, 14)
func (*TaVolatilityRatio) Value ¶
func (vr *TaVolatilityRatio) Value() float64
Value 获取最新的波动率比率值 说明:
返回VR指标的最新值 使用建议: - VR > 1.2 表示波动显著扩大,可能即将发生趋势变化 - VR < 0.8 表示波动显著收缩,可能处于盘整阶段 - VR的快速变化预示市场状态的转换
返回值:
- float64: 最新的VR值,如果没有数据返回0
type TaWilliamsR ¶
type TaWilliamsR struct {
Values []float64 `json:"values"` // Williams %R值的时间序列
Period int `json:"period"` // 计算周期
}
TaWilliamsR 表示威廉指标(Williams %R)的计算结果 说明:
Williams %R是一个动量指标,用于判断市场是否处于超买或超卖状态: 1. 测量收盘价在最近N个周期内的高低价范围中的相对位置 2. 取值范围为0到-100 3. 与随机指标KD相似,但计算方法略有不同 特点: - 0到-20区域表示超买 - -80到-100区域表示超卖 - 指标与价格的背离可能预示趋势反转 - 相比其他超买超卖指标反应更快速
func CalculateWilliamsR ¶
func CalculateWilliamsR(high, low, close []float64, period int) (*TaWilliamsR, error)
CalculateWilliamsR 计算威廉指标 说明:
计算公式: W%R = (最高价 - 收盘价) / (最高价 - 最低价) * -100 计算步骤: 1. 找出周期内的最高价和最低价 2. 计算当前收盘价在这个范围内的相对位置 3. 将结果乘以-100得到最终值 使用场景: - 判断市场超买超卖状态 - 寻找潜在的趋势反转点 - 与其他指标配合确认交易信号
参数:
- high: 最高价序列
- low: 最低价序列
- close: 收盘价序列
- period: 计算周期,通常为14
返回值:
- *TaWilliamsR: 包含计算结果的结构体指针
- error: 计算过程中的错误,如数据不足等
示例:
wr, err := CalculateWilliamsR(high, low, close, 14)
func (*TaWilliamsR) Value ¶
func (t *TaWilliamsR) Value() float64
Value 获取最新的威廉指标值 说明:
返回Williams %R的最新值 使用建议: - 当指标从超买区域(-20以上)向下穿越时,考虑卖出 - 当指标从超卖区域(-80以下)向上穿越时,考虑买入 - 与价格趋势一起使用,不要单独作为交易信号 - 可以通过调整周期来改变指标的敏感度
返回值:
- float64: 最新的Williams %R值