Python高效量化的选择-fengwo模块

Python高效量化的选择-fengwo模块

  • 关于fengwo模块
    • 使用环境
    • 使用及函数说明
          • 1. 引入模块
          • 2. 通用说明
          • 3. 基础函数
          • 4. 指标类函数
          • 5. 进阶函数
          • 6.通达信公式DLL函数(Windows专用,Linux不支持)

关于fengwo模块

fengwo模块是Python量化的麦语言扩展,他跟其它Python麦语言扩展比较有以下特点:
1、所有函数使用C/C++编写,运行速度快
2、所有基础函数如MA/EMA/SMA/SLOPE等的周期值均可以使用序列输入,不限于常量
3、支持SAR、BOLL-M(布林线传统版)等交易软件加密的指标
4、支持RSRS、股票相对高低点(GetLPoint/GetHPoint)等实用函数
5、支持WINNER、COST和通达信公式dll的绑定调用等其它麦语言模块普遍不支持的函数
6、所有函数,包括WINNER【根据价格求获利比例】、COST【根据获利比例反推价格】均突破了Python全局线程锁(GIL)的限制,可以使用在多线程环境中提高效率
7、在64位的Python中也可以用时32位的通达信公式dll(通达信公式dll只有32位的,没有64位的)

使用环境

1.支持Windows及Linux系统,Python版本>=3.4,暂不支持MAC等,不支持Python2
2. 需要VC2015运行库支持(一般系统上已经安装好了),在导入模块是提示

ImportError: DLL load failed: 找不到指定的模块。

则必须安装VC2015运行库,VC运行库可以在https://fengwo.run/news/3.html下载
3、安装方法:

pip install fengwo

使用及函数说明

1. 引入模块
import fengwo as fw

模块在引入后默认显示一条消息,要取消消息可在模块引入后立即运行showMsg(False)即可取消消息显示

import fengwo as fw;fw.showMsg(False)
2. 通用说明

本模块所使用的序列值,可以是list数组,也可以是numpy数组,只要是可迭代对象即可,但数组或可迭代的内容都采用数字,文字和其它Python对象无法处理
本模块所用的常量也必须是数字,大部分都需要处理整形int,个别函数常量也可以使用浮点型float,具体使用可以查询函数说明。

  • 函数参数为S则说明该参数为序列值
  • 函数参数为N则说明该参数为常量
  • OPEN,CLOSE,HIGH,LOW,VOL,AMO,TurnRate 分别是指开盘价、收盘价、最高价、最低价、成交量、成交额,换手率,这些均采用序列值
  • 函数参数SN,则要求参数为int类型或者int类型的序列值(如果提供的是float类型或者float类型的序列值,函数内部会将该参数转换成int类型,但有可能采用以下3正方式:①四舍五入成整数,②向下取整为整数,因此强烈建议浮点数序列自行处理成整数序列再进行调用,其中向下取整可使用INTPART函数)
  • 本模块函数返回的序列值均采用numpy数组形式
3. 基础函数

STD - 标准差函数
函数原型:

def STD(S:Iterable,SN:Union[Iterable[int],int])->Optional[np.ndarray]
#简洁表示
def STD(S,SN)

返回Numpy数组:估算标准差

BACKSET - 向前赋值函数
函数原型:

def BACKSET(S:Iterable,N:Union[Iterable[int],int])->Optional[np.ndarray]
#简洁表示
def BACKSET(S,N)

属于未来函数,将当前位置到若干周期前的数据设为1.
用法:
  BACKSET(S,N),若X非0,则将当前位置到N周期前的数值设为1.
例如:
  BACKSET(CLOSE>OPEN,2)若收阳则将该周期及前一周期数值设为1,否则为0

REF - 引用若干周期前的数据
函数原型:

def REF(S:Iterable,SN:Union[Iterable[int],int])->Optional[np.ndarray]
#简洁表示
def REF(S,SN)

用法:
  REF(X,A),引用A周期前的X值.A可以是变量.
例如:
  REF(CLOSE,BARSCOUNT©-1)表示第二根K线的收盘价.

INTPART - 取整行数
函数原型:

def INTPART(S:Iterable)->Optional[np.ndarray]
#简洁表示
def INTPART(S)

用法:
  INTPART(A)返回沿A绝对值减小方向最接近的整数
例如:
  INTPART(12.3)求得12,INTPART(-3.5)求得-3

EMA - 返回指数移动平均
函数原型:

def EMA(S:Iterable,SN:Union[Iterable[int],int])->Optional[np.ndarray]
#简洁表示	
def EMA(S,SN)

用法:
  EMA(X,N):X的N日指数移动平均.算法:Y=(X2+Y’(N-1))/(N+1)
  EMA(X,N)相当于SMA(X,N+1,2),N支持变量

SMA - 返回移动平均
函数原型:

def SMA(S:Iterable,N:Union[Iterable[int],int],M:int=1)->Optional[np.ndarray]
#简洁表示	
def SMA(S,SN)

用法:
  SMA(X,N,M):X的N日移动平均,M为权重,如Y=(XM+Y’(N-M))/N

SLOPE - 返回线性回归斜率
函数原型:

def SLOPE(S:Iterable,SN:Union[Iterable[int],int])->Optional[np.ndarray]
#简洁表示	
def SLOPE(S,SN)

HHV - 求最高值
函数原型:

def HHV(S:Iterable,SN:Union[Iterable[int],int])->Optional[np.ndarray]
#简洁表示	
def HHV(S,SN)

用法:
  HHV(X,N),求N周期内X最高值,N=0则从第一个有效值开始.
例如:
  HHV(HIGH,30)表示求30日最高价

LLV - 求最低值
函数原型:

def LLV(S:Iterable,SN:Union[Iterable[int],int])->Optional[np.ndarray]
#简洁表示
def LLV(S,SN)

用法:
  LLV(X,N),求N周期内X最高值,N=0则从第一个有效值开始.
例如:
  LLV(LOW,30)表示求30日最低价

MA - 简单移动平均
函数原型:

def MA(S:Iterable,SN:Union[Iterable[int],int])->Optional[np.ndarray]
#简洁表示
def MA(S,SN)

返回简单移动平均
用法:
  MA(X,N):X的N日简单移动平均,算法(X1+X2+X3+…+Xn)/N,N支持变量

AVEDEV - 返回平均绝对偏差
函数原型:

def AVEDEV(S:Iterable,SN:Union[Iterable[int],int])->Optional[np.ndarray]
#简洁表示
def AVEDEV(S,SN)

求总和.

**SUM -求和函数 **
函数原型:

def SUM(S:Iterable,SN)->Optional[np.ndarray]
#简洁表示
def SUM(S,SN)

用法:
  SUM(X,N),统计N周期中X的总和,N=0则从第一个有效值开始.
例如:
  SUM(VOL,0)表示统计从上市第一天以来的成交量总和

BARSLAST - 上一次条件成立到当前的周期数.
函数原型:

def BARSLAST(S:Iterable)->Optional[np.ndarray]
#简洁表示
def BARSLAST(S)

用法:
  BARSLAST(X):上一次X不为0到现在的周期数
例如:
  BARSLAST(CLOSE/REF(CLOSE,1)>=1.1)表示上一个涨停板到当前的周期数

BARSCOUNT - 有效数据周期数.
函数原型:

def BARSCOUNT(S:Iterable)->Optional[np.ndarray]
#简洁表示
def BARSCOUNT(S)

用法:
  BARSCOUNT(X)第一个有效数据到当前的间隔周期数
注意:判断范围为指标或条件选股计算时公式使用的数据,如果给画线指标的数据少(比如没有按下箭头取更多K线)或给条件选股给的数据少,这个有效值也可能少

BETWEEN - 介于
函数原型:

def BETWEEN(S1:Iterable,S2:Iterable,S3:Iterable)->Optional[np.ndarray]
#简洁表示
def BETWEEN(S1,S2,S3)

用法:
  BETWEEN(A,B,C)表示A处于B和C之间时返回1(B<=A<=C或C<=A<=B),否则返回0
例如:
  BETWEEN(CLOSE,MA(CLOSE,10),MA(CLOSE,5))表示收盘价介于5日均线和10日均线之间

COUNT - 统计满足条件的周期数.
函数原型:

def COUNT(S:Iterable,SN:Union[Iterable[int],int])->Optional[np.ndarray]
#简洁表示
def COUNT(S,SN)

用法:
  COUNT(X,N),统计N周期中满足X条件的周期数,若N<=0则从第一个有效值开始.
例如:
  COUNT(CLOSE>OPEN,20)表示统计20周期内收阳的周期数

WMA -返回加权移动平均
函数原型:

def WMA(S:Iterable,SN:Union[Iterable[int],int])->Optional[np.ndarray]
#简洁表示
def WMA(S,SN)

用法:
  WMA(X,N):X的N日加权移动平均.算法:Yn=(1X1+2X2+…+n*Xn)/(1+2+…+n)

BARSLASTCOUNT - 统计连续满足条件的周期数
函数原型:

def BARSLASTCOUNT(S:Iterable)->Optional[np.ndarray]
#简洁表示
def BARSLASTCOUNT(S)

用法:
  BARSLASTCOUNT(X),统计连续满足X条件的周期数.
例如:
  BARSLASTCOUNT(CLOSE>OPEN)表示统计连续收阳的周期数

FILTER - 过滤连续出现的信号.
函数原型:

def FILTER(S:Iterable,SN)->Optional[np.ndarray]
#简洁表示
def FILTER(S,SN)

用法:
  FILTER(X,N):X满足条件后,将其后N周期内的数据置为0,N为常量.
例如:
  FILTER(CLOSE>OPEN,5)查找阳线,5天内再次出现的阳线不被记录在内

EXIST - 是否存在
函数原型:

def EXIST(S:Iterable,N:int)->Optional[np.ndarray]
#简洁表示
def EXIST(S,N)

例如:
  EXIST(CLOSE>OPEN,10),表示10日内存在着阳线

DIFF - 单周期差异指标
函数原型:

def DIFF(S:Iterable)->Optional[np.ndarray]
#简洁表示
def DIFF(S)

返回前一个值减后一个值的数值

VALUEWHEN - 条件取值
函数原型:

def VALUEWHEN(COND:Iterable,S:Iterable)->Optional[np.ndarray]:
#简洁表示
def VALUEWHEN(COND,S)

  当COND条件成立时,取X的当前值,否则取VALUEWHEN的上个值.

CROSS - 两条线交叉
函数原型:

def CROSS(S1:Iterable,S2:Iterable)->Optional[np.ndarray]
#简洁表示
def CROSS(S1,S2)

用法:
  CROSS(A,B)表示当A从下方向上穿过B时返回1,否则返回0
例如:
  CROSS(MA(CLOSE,5),MA(CLOSE,10))表示5日均线与10日均线交金叉

LONGCROSS - 两条线维持一定周期后交叉
函数原型:

def LONGCROSS(S1:Iterable,S2:Iterable,N:Union[Iterable[int],int])->Optional[np.ndarray]
简洁表示:
def LONGCROSS(S1,S2,N)

用法:LONGCROSS(A,B,N)表示A在N周期内都小于B,本周期从下方向上穿过B时返回1,否则返回0

DMA - 求动态移动平均
函数原型:

def DMA(S:Iterable,SN:Union[int,Iterable[int]])->Optional[np.ndarray]:
#简洁表示
def DMA(S,SN)

用法:
  DMA(X,A),求X的动态移动平均.
算法:Y=A*X+(1-A)*Y’,其中Y’表示上一周期Y值,A必须大于0且小于1.A支持变量.
例如:
  DMA(CLOSE,VOL/CAPITAL)表示求以换手率作平滑因子的平均价

BARSSINCEN - N个周期内第一个条件成立到当前的周期数.
函数原型:

def BARSSINCEN(S:Iterable,N:int)->Optional[np.ndarray]
#简洁表示
def BARSSINCEN(S,N)

用法: BARSSINCEN(S,N):N周期内第一次S不为0到现在的周期数,N为常量
例如: BARSSINCE(HIGH>10,10)表示10个周期内股价超过10元时到当前的周期数

LAST - 持续存在
函数原型:

def LAST(S:Iterable,A:int,B:int)->Optional[np.ndarray]:
#简洁表示
def LAST(S,A,B)

LAST(X,A,B):持续存在
例如:
  LAST(CLOSE>OPEN,10,5)
  表示从前10日到前5日内一直阳线
  若A为0,表示从第一天开始,B为0,表示到最后日止

CONST - 获取常量序列
函数原型:

def CONST(S:Iterable)->Optional[np.ndarray]
#简洁表示
def CONST(S)

返回序列S最后的值组成常量序列

LLVBARS - 求上一低点到当前的周期数
函数原型:

def LLVBARS(S:Iterable,N:int)->Optional[np.ndarray]
#简洁表示
def LLVBARS(S,N)

用法: LLVBARS(S,N):求N周期内X最低值到当前周期数,N=0表示从第一个有效值开始统计

HHVBARS - 求上一高点到当前的周期数
函数原型:

def HHVBARS(S:Iterable,N:int)->Optional[np.ndarray]:
#简洁表示
def HHVBARS(S,N)

用法: HHVBARS(S,N):求N周期内X最高值到当前周期数,N=0表示从第一个有效值开始统计

EVERY - 一直存在
函数原型:

def EVERY(S:Iterable,SN:Union[int,Iterable[int]])->Optional[np.ndarray]
#简洁表示:
def EVERY(S,SN)

例如:
  EVERY(CLOSE>OPEN,N)
  表示N日内一直阳线(N应大于0,小于总周期数,N支持变量)

FORCAST - 线性回归预测
函数原型:

def FORCAST(S:Iterable,SN:Union[Iterable[int],int])->Optional[np.ndarray]
#简洁表示
def FORCAST(S,SN)

返回S的线性回归预测值,SN支持变量

ATAN - 反正切
函数原型:

def ATAN(S)->Union[np.ndarray,float]
#简洁表示
def ATAN(S)

返回S的反正切值

ACOS - 反余弦
函数原型:

def ACOS(S)->Union[np.ndarray,float]
#简洁表示
def ACOS(S)

返回S的反余弦值

ASIN - 反正弦
函数原型:

def ASIN(S)->Union[np.ndarray,float]  
#简洁表示 
def ASIN(S)

返回S的反正弦值

TAN - 正切
函数原型:

def TAN(S)->Union[np.ndarray,float]
#简洁表示
def TAN(S)

返回S的正切值

COS - 余弦
函数原型:

def COS(S)->Union[np.ndarray,float] 
#简洁表示
def COS(S)

返回S的余弦值

SIN - 正弦
函数原型:

def SIN(S)->Union[np.ndarray,float] 
#简洁表示
def SIN(S)

返回S的正弦值

RD - 四舍五入取值
函数原型:

def RD(SN,D:int=3)->Union[np.ndarray,float,int]
#简洁表示
def RD(SN,D)

对SN四舍五入取D位小数

RET - 取末尾值
函数原型:

def RET(S:Iterable,N:int=1)
#简洁表示:
def RET(S,N) 

返回序列倒数第N个值,默认返回最后一个

ABS - 求绝对值
函数原型:

def ABS(S)

用法: ABS(X)返回X的绝对值
例如: ABS(-34)返回34

MAX - 求最大值
函数原型:

def MAX(S1,S2)

用法: MAX(A,B)返回A和B中的较大值
例如: MAX(CLOSE-OPEN,0)表示若收盘价大于开盘价返回它们的差值,否则返回0

MAX - 求最小值
函数原型:

def MIN(S1,S2)

用法: MIN(A,B)返回A和B中的较大值
例如: MIN(CLOSE,OPEN)返回开盘价和收盘价中的较小值

IF - 根据条件求不同的值
函数原型:

def IF(S,A,B)->np.ndarray: 
#简洁表示
def IF(S,A,B)

用法: IF(X,A,B)若X不为0则返回A,否则返回B
例如: IF(CLOSE>OPEN,HIGH,LOW)表示该周期收阳则返回最高值,否则返回最低值

SUMBARS - 向前累加到指定值到现在的周期数
函数原型:

def SUMBARS(S:Iterable,SN)->Optional[np.ndarray]
#简洁表示
def SUMBARS(S,SN)

用法:
  SUMBARS(X,A):将X向前累加直到大于等于A,返回这个区间的周期数,若所有的数据都累加后还不能达到A,则返回此时前面的总周期数.
  例如:SUMBARS(VOL,流通股数)求完全换手到现在的周期数

4. 指标类函数

ATR -均幅指标,又叫真实波幅:取一定时间周期内的股价波动幅度的移动平均值
函数原型:

def ATR(CLOSE:Iterable,HIGH:Iterable,LOW:Iterable,N:int=20)->Optional[Tuple[np.ndarray,np.ndarray]]
#简洁表示
def ATR(CLOSE,HIGH,LOW,N=20)

返回(ATR,ATRMA)元组,ATR即真实波幅,ATRMA即真实波幅的N周期平均值
BOLL - 布林带
函数原型

def BOLL(CLOSE:Iterable,N:int=20)->Optional[Tuple[np.ndarray,np.ndarray,np.ndarray]]
#简洁表示
def BOLL(CLOSE,N=20)

返回布林带上、中、下三个轨道的元组

CCI - 商品路径指标
函数原型:

def CCI(CLOSE:Iterable,HIGH:Iterable,LOW:Iterable,N:int=14)->Optional[np.ndarray]
#简洁表示
def CCI(CLOSE,HIGH,LOW,N=14)

返回CCI的值

KDJ - 随机指标
函数原型:

def KDJ(CLOSE:Iterable,HIGH:Iterable,LOW:Iterable,N:int=9,M1:int=3,M2:int=3)->Optional[Tuple[np.ndarray,np.ndarray,np.ndarray]]
#简洁表示
def KDJ(CLOSE,HIGH,LOW,N=9,M1=3,M2=3)

返回(K,D,J)三个序列的元组

MACD - 平滑异同平均线
函数原型:

def MACD(CLOSE:Iterable,SHORT:int=12,LONG:int=26,MID:int=9,bit:int=2)->Optional[Tuple[np.ndarray,np.ndarray,np.ndarray]]
#简洁表示
def MACD(CLOSE,SHORT=12,LONG=26,MID=9,bit=2)

依次返回(DIF,DEA,MACD)元组

WR- 威廉指标
函数原型:

def WR(CLOSE:Iterable,HIGH:Iterable,LOW:Iterable,N:int=10,N1:int=6)->Optional[Tuple[np.ndarray,np.ndarray]]
#简洁表示
def WR(CLOSE,HIGH,LOW,N=10,N1=6)

返回(WR1,WR2)元组,WR1、WR2即N和N1周期的威廉指标数值

MFI - 资金流量指标
函数原型:

def MFI(CLOSE:Iterable,HIGH:Iterable,LOW:Iterable,VOL:Iterable,N:int=14)->Optional[np.ndarray]
#简洁表示
def MFI(CLOSE,HIGH,LOW,VOL,N=14)

返回值:MFI数值

TRIX - 三重指数平滑平均线
函数原型:

def TRIX(CLOSE:Iterable,N:int=12,M:int=9)->Optional[np.ndarray]
#简洁表示
def TRIX(CLOSE,N=12,M=9)

返回值:(TRIX,MATRIX)元组,MATRIX为TRIX的N日平均

BIAS - 乖离率指标
函数原型

def BIAS(CLOSE:Iterable,N1:int=6,N2:int=12,N3:int=24)->Optional[Tuple[np.ndarray,np.ndarray,np.ndarray]]
#简洁表示:
def BIAS(CLOSE,N1=6,N2=12,N3=24)

返回:(BIAS1,BIAS2,BIAS)元组,即N1,N2,N3三个周期计算的乖离率

BIAS_QL - 乖离率指标(传统版)
函数原型:

def BIAS_QL(CLOSE:Iterable,N:int=6,M:int=6)->Optional[Tuple[np.ndarray,np.ndarray]]
#简洁表示:
def BIAS_QL(CLOSE,N=6,M=6)

返回:(BIAS,MABIAS)元组,MABIAS是乖离率BIAS的M日周期简单平均

BBI多空均线指标
函数原型:

def BBI(CLOSE:Iterable,M1:int=3,M2:int=6,M3:int=12,M4:int=24)->Optional[np.ndarray]
#简洁表示
def BBI(CLOSE,M1=3,M2=6,M3=12,M4=24)

返回M1-M4周期的BBI多空均线数值

VR - 威廉指标
函数原型:

def VR(CLOSE:Iterable,VOL:Iterable,N:int=26,M:int=6)->Optional[Tuple[np.ndarray,np.ndarray]]
#简洁表示
def VR(CLOSE,VOL,N=26,M=6)

返回值:(VR,MAVR)元组,MAVR为VR的M日均值

RSI - 相对强弱指标
函数原型:

def RSI(CLOSE:Iterable,N1:int=6,N2:int=12,N3:int=24)->Optional[Tuple[np.ndarray,np.ndarray,np.ndarray]]:
#简洁表示
def RSI(CLOSE,N1=6,N2=12,N3=24)

返回值:(RSI1,RSI2,RSI3)元组,即根据收盘价计算的3个周期的RSI值

KTN - 肯特纳交易通道指标
函数原型:

def KTN(CLOSE:Iterable,HIGH:Iterable,LOW:Iterable,N:int=20,M:int=10)->Optional[Tuple[np.ndarray,np.ndarray,np.ndarray]]
#简洁表示:
def KTN(CLOSE,HIGH,LOW,N=20,M=10)

返回值:(UPPER,MID,LOWER)元组,即通道的上中下三轨

TAQ - 唐安奇通道
函数原型:

def TAQ(HIGH:Iterable,LOW:Iterable,N:int=20)->Optional[Tuple[np.ndarray,np.ndarray,np.ndarray]]
#简洁表示:
def TAQ(HIGH,LOW,N=20)

返回值:(UP,MID,DOWN)元组,即通道的上中下三轨

BRAR - 情绪指标
函数原型:

def BRAR(OPEN:Iterable,CLOSE:Iterable,HIGH:Iterable,LOW:Iterable,N:int=26)->Optional[Tuple[np.ndarray,np.ndarray]]
#简洁表示
def BRAR(OPEN,CLOSE,HIGH,LOW,N=26)

返回:(BR,AR)元组

EMV - 简易波动指标
函数原型:

def EMV(HIGH:Iterable,LOW:Iterable,VOL:Iterable,N:int=14,M:int=9)->Optional[Tuple[np.ndarray,np.ndarray]]
#简洁表示
def EMV(HIGH,LOW,VOL,N=14,M=9)

返回值:(EMV,MAEMV)元组,MAEMV为EMV的M日均值

OBV - 能量潮指标
函数原型:

def OBV(CLOSE:Iterable,VOL:Iterable,N:int=30)->Optional[Tuple[np.ndarray,np.ndarray]]
#简洁表示
def OBV(CLOSE,VOL,N=30)

返回值:(OBV,MAOBV)元组,MAOBV为OBV的N日均值

DPO - 区间震荡线
函数原型:

def DPO(CLOSE:Iterable,N:int=20,M:int=6)->Optional[Tuple[np.ndarray,np.ndarray]]
#简洁表示
def DPO(CLOSE,N=20,M=6)

返回值:(DPO,MADPO)元组,MADPO为DPO的M日均值

MTM - 动量线指标
函数原型:

def MTM(CLOSE:Iterable,N:int=12,M:int=6)->Optional[Tuple[np.ndarray,np.ndarray]]
#简洁表示
def MTM(CLOSE,N=12,M=6)

返回值:(MTM,MTMMA)元组,MTMMA为MTM的M日均值

DMA - 平均差指标
函数原型:

def DMA(CLOSE:Iterable,N1:int=10,N2:int=50,M:int=10)->Optional[Tuple[np.ndarray,np.ndarray]]
#简洁表示
def DMA(CLOSE,N1=10,N2=50,M=10)

返回值:(DIF,DIFMA)元组,DIFMA为DIF的M日均值

DFMA - 平均差指标
同DMA指标

DMI - 趋向指标
函数原型:

def DMI(CLOSE:Iterable,HIGH:Iterable,LOW:Iterable,N:int=14,M:int=6)->Optional[Tuple[np.ndarray,np.ndarray,np.ndarray,np.ndarray]]
#简洁表示
def DMI(CLOSE,HIGH,LOW,N=14,M=6)

返回:(PDI,MDX,ADX,ADXR)元组

ROC 变动率指标
函数原型:

def ROC(CLOSE:Iterable,N:int=12,M:int=6)->Optional[Tuple[np.ndarray,np.ndarray]]
#简洁表示
def ROC(CLOSE,N=12,M=6)

返回值:(ROC,MAROC)元组,MAROC为ROC的M日均值’

MASS - 梅斯线指标
函数原型:

def MASS(HIGH:Iterable,LOW:Iterable,N1:int=9,N2:int=25,M:int=6)->Optional[Tuple[np.ndarray,np.ndarray]]
#简洁表示
def MASS(HIGH,LOW,N1=9,N2=25,M=6)

返回值:(MASS,MAMASS)元组,MAMASS为MASS的M日均值

EXPMA - 指数平均线指标
函数原型:

def EXPMA(CLOSE:Iterable,M1:int=12,M2:int=50)->Optional[Tuple[np.ndarray,np.ndarray]]
#简洁表示
def EXPMA(CLOSE,M1=12,M2=50)

返回值:(EXP1,EXP2)元组,即收盘价的M1,M2日指数移动平均’

PSY - 心理线指标
函数原型:

def PSY(CLOSE:Iterable,N:int=12,M:int=6)->Optional[Tuple[np.ndarray,np.ndarray]]
#简洁表示
def PSY(CLOSE,N=12,M=6)

返回值:(PSY,PSYMA)元组,PSYMA为PSY的M日均值

ASI - 震动升降指标
函数原型:

def ASI(OPEN:Iterable,CLOSE:Iterable,HIGH:Iterable,LOW:Iterable,N:int=6)->Optional[Tuple[np.ndarray,np.ndarray]]
#简洁表示
def ASI(OPEN,CLOSE,HIGH,LOW,N=6)

返回值:(ASI,ASIMA)元组,ASIMA为ASI的N日均值

5. 进阶函数

BOLL_M - 布林带(传统版) *通达信加密函数
函数原型:

def BOLL_M(CLOSE:Iterable,N:int=20)->Optional[Tuple[np.ndarray,np.ndarray,np.ndarray]]
#简洁表示
def BOLL_M(CLOSE,N=20)

返回布林带上、中、下三个轨道的元组

WINNER - 盈利盘比例函数 *通达信加密函数
函数原型:

def WINNER(HIGH:Iterable,LOW:Iterable,VOL:Iterable,Turnrate:Iterable,price,avg:Union[Iterable,str]='hlavg')->Optional[np.ndarray]
#简洁表示
def WINNER(HIGH,LOW,VOL,Turnrate,price,avg='hlavg')

说明:

  • VOL-成交量[序列值],单位是手,万股等不重要,只要统一就行
  • Turnrate[换手率]:取值范围0-1,注意50%的换手应写作0.5
    *换手率由于流通股变动问题,故不能简单使用“成交量/流通股”的方式计算,这也是本函数保留输入换手率的原因
  • price-某价格的盈利比例中的价格,可以是具体数值(如:99.98),也可以是序列(如收盘价、开盘价等)
  • avg-筹码三角分布顶点:默认’hlavg’是取每日最高价和最低价的平均值,已经基本满足筹码计算要求。某些算法中使用“成交额/成交量”的计算方法计算当日平均价
    *使用“成交额/成交量”的计算方法的话,注意这个平均位置也要复权,否则会出现平均位置出现在当日最高价和最低价之外的情况
    返回一组获利比例的numpy数组,范围0-1,如0.1即当前股价的盈利比例为10%,这里跟通达信软件是保持一致的
    *此函数专用于T+1交易,不适用于可转债或者非日线周期等换手率超过100%的情况

COST - 成本函数 依据获利盘比例找价格 *通达信加密函数
函数原型:

def COST(HIGH:Iterable,LOW:Iterable,VOL:Iterable,Turnrate:Iterable,winpercent:Iterable,radio:float=0.01,avg:Union[Iterable,str]='hlavg')->Optional[np.ndarray]
#简洁表示
def COST(HIGH,LOW,VOL,Turnrate,winpercent,radio=0.01,avg='hlavg')

计算某盈利比例对应的股价

  • VOL-成交量[序列值],单位是手,万股等不重要,只要统一就行
  • Turnrate[换手率]:取值范围0-1,注意50%的换手应写作0.5
    *换手率由于流通股变动问题,故不能简单使用“成交量/流通股”的方式计算,这也是本函数保留输入换手率的原因
  • winpercent-指定获利比例,应为0-100之间的数值(如winpercent=90,即返回盈利90%的股价),和通达信软件保持一致
  • avg-筹码三角分布顶点:默认’hlavg’是取每日最高价和最低价的平均值,已经基本满足筹码计算要求。某些算法中使用“成交额/成交量”的计算方法计算当日平均价
    *使用“成交额/成交量”的计算方法的话,注意这个平均位置也要复权,否则会出现平均位置出现在当日最高价和最低价之外的情况
  • radio-精确度:如股票等使用0.01,ETF,Reits等使用0.001,只能取这两值其一
    返回一组指定获利比例的股价。
    *此函数专用于T+1交易,不适用于可转债或者非日线周期等换手率超过100的情况’‘’

getHPoint - 指示当前位置是否是一组数据的高点
函数原型:

def getHPoint(S:Iterable,N:int)->Optional[np.ndarray]
#简洁表示
def getHPoint(S,N)

返回值为dtype=bool_的数组,True位置即为相对高点位置

getLPoint - 指示当前位置是否是一组数据的低点
函数原型:

def getLPoint(S:Iterable,N:int)->Optional[np.ndarray]
#简洁表示:
def getLPoint(S:Iterable,N:int)

返回值为dtype=bool_的数组,True位置即为相对低点位置

getHLine - 获取一组数据高点的拟合直线
函数原型:

def getHLine(S:Iterable,N:int)->Optional[Tuple[np.ndarray,float,float]]
#简洁表示
def getHLine(S,N)

返回值:(DATA,R2,SLOPE)元组
  DATA-拟合后的高点序列,绘图的话是一条直线
  R2-高点拟合的r-square数值[取值范围0-1,数值越大说明数据拟合度越好]
  SLOPE-拟合后直线的斜率,为正则标识数据越来越大,为负则表示数据越来越小

getLLine - 获取一组数据低点的拟合直线
函数原型:

def getLLine(S:Iterable,N:int)->Optional[Tuple[np.ndarray,float,float]]
#简洁表示
def getLLine(S,N)

返回值:(DATA,R2,SLOPE)元组
  DATA-拟合后的低点序列,绘图的话是一条直线
  R2-高点拟合的r-square数值[取值范围0-1,数值越大说明数据拟合度越好]
  SLOPE-拟合后直线的斜率,为正则标识数据越来越大,为负则表示数据越来越小

getBestHLine - 获取一组数据在N取值为N1到N2之间的高点最佳拟合直线
函数原型:

def getBestHLine(S:Iterable,N1:int,N2:int)->Optional[Tuple[np.ndarray,float,float,int]]
#简洁表示
def getBestHLine(S,N1,N2)

返回值:(DATA,R2,SLOPE,N)元组
  DATA-最佳拟合后的高点序列,绘图的话是一条直线
  R2-高点拟合后的最佳r-square数值[即函数getHLine(S,N)的N值取N1-N2之间所有整数时计算的R2最大值]
  SLOPE-最佳拟合后直线的斜率,为正则标识数据越来越大,为负则表示数据越来越小
  N-最佳拟合时的N值

getBestLLine - 获取一组数据在N取值为N1到N2之间的低点最佳拟合直线
函数原型:

def getBestLLine(S:Iterable,N1:int,N2:int)->Optional[Tuple[np.ndarray,float,float,int]]
#简洁表示
def getBestLLine(S,N1,N2)

返回值:(DATA,R2,SLOPE,N)元组
  DATA-最佳拟合后的低点序列,绘图的话是一条直线
  R2-低点拟合后的最佳r-square数值[即函数getHLine(S,N)的N值取N1-N2之间所有整数时计算的R2最大值]
  SLOPE-最佳拟合后直线的斜率,为正则标识数据越来越大,为负则表示数据越来越小
  N-最佳拟合时的N值

RSRS - 阻力相对支撑强度指标 炒股软件一般无此指标
函数原型:

def RSRS(HIGH:Iterable,LOW:Iterable,N:int=18,M:int=600)->Optional[np.ndarray]
#简洁表示
def RSRS(HIGH,LOW,N=18,M=600)

N,M-周期常量 M默认值值为600,注意输入数据的数量
返回值:计算的RSRS数值,一般在RSRS>0.7时买入,RSRS小于-0.7时卖出’

SAR - 抛物线指标 通达信、同花顺等软件上是加密指标
函数原型:

def SAR(HIGH:Iterable,LOW:Iterable,start:int=4,stepstart:int=2,step:int=2,maxstep:int=20)->Optional[np.ndarray]
#函数原型
def SAR(HIGH,LOW,start=4,stepstart=2,step=2,maxstep=20)

输入参数:
  start:起始统计周期
  stepstart:加速因子参数
  step:加速因子增量
  maxstep:反向临界参数
返回值:SAR值,SAR大于收盘价代表下跌趋势,SAR小于收盘价代表上涨趋势

6.通达信公式DLL函数(Windows专用,Linux不支持)

*通达信dll为32为dll文件,但是使用本模块,在64位的Python上亦可正常调用

binddll - 绑定dll文件
函数原型:

def binddll(no:int,dllpath:str)->Optional[bool]
#简洁表示
def binddll(no,dllpath)

输入参数:
  no-要绑定dll文件的函数取值[取值范围:1-10]
  dllpath-要绑定dll文件的路径
成功返回True,失败直接抛出异常

TDXDLL(1-10) - 调用指定号码的通达信dll文件
函数原型:

def TDXDLL1(funcno:int,ina:Iterable,inb,inc)->Optional[np.ndarray]
def TDXDLL2(funcno:int,ina:Iterable,inb,inc)->Optional[np.ndarray]
def TDXDLL3(funcno:int,ina:Iterable,inb,inc)->Optional[np.ndarray]
def TDXDLL4(funcno:int,ina:Iterable,inb,inc)->Optional[np.ndarray]
def TDXDLL5(funcno:int,ina:Iterable,inb,inc)->Optional[np.ndarray]
def TDXDLL6(funcno:int,ina:Iterable,inb,inc)->Optional[np.ndarray]
def TDXDLL7(funcno:int,ina:Iterable,inb,inc)->Optional[np.ndarray]
def TDXDLL8(funcno:int,ina:Iterable,inb,inc)->Optional[np.ndarray]
def TDXDLL9(funcno:int,ina:Iterable,inb,inc)->Optional[np.ndarray]
def TDXDLL10(funcno:int,ina:Iterable,inb,inc)->Optional[np.ndarray]
#简洁表示:
def TDXDLL1(funcno,ina,inb,inc)
def TDXDLL2(funcno,ina,inb,inc)
def TDXDLL3(funcno,ina,inb,inc)
def TDXDLL4(funcno,ina,inb,inc)
def TDXDLL5(funcno,ina,inb,inc)
def TDXDLL6(funcno,ina,inb,inc)
def TDXDLL7(funcno,ina,inb,inc)
def TDXDLL8(funcno,ina,inb,inc)
def TDXDLL9(funcno,ina,inb,inc)
def TDXDLL10(funcno,ina,inb,inc)

输入参数:ina,inb,inc为输入的3个参数,其中ina必须为序列值
返回值为计算结果的序列

你可能感兴趣的:(python,开发语言)