计算函数
简单移动平均—MA
简单移动平均—MA (array数组, 周期N, 计算位置pos),计算X的N周期简单移动平均值,Y=(X1+X2+…+XN)/N,X1表示N-1周期前的X值,XN表示当前周期的X值,其余类推。
注意:计算前需要用CreateCalcObj创建对象,如果需要计算多个周期MA,要创建多个对象。
参数
array:数组
N:周期
Pos:计算位置,-2代表计算全部,-1代表计算最后一个,0~数组总长度-1 代表计算指定位置
返回
一个数组,包含所有的计算结果
示例
import numpy as np
option = PBObj()
klinedata = GetHisData("hc1901.SHFE", BarType.Day, option)
i=0
klist = []
while i<len(klinedata):
klist.append(klinedata[i].close)
i+=1
if len(klist)>0:
ma3 = CreateCalcObj()
X = np.array(klist, dtype=np.double)
Y=ma3.MA(X, 3, -2)
ma5 = CreateCalcObj()
Z = ma5.MA(X, 5, -2)
求和—SUM
求和—SUM (array数组, 周期N, 计算位置pos),统计近期求和。
注意:计算前需要用CreateCalcObj创建对象,如果需要计算多个周期SUM,要创建多个对象。
参数
array:数组
N:周期
Pos:计算位置,-2代表计算全部,-1代表计算最后一个,0~数组总长度-1 代表计算指定位置
返回
一个数组,包含所有的计算结果
示例
import numpy as np
option = PBObj()
klinedata = GetHisData(g.code, BarType.Day, option)
i=0
klist = []
while i<len(klinedata):
klist.append(klinedata[i].close)
i+=1
if len(klist)>0:
sum3 = CreateCalcObj()
X = np.array(klist, dtype=np.double)
Y=sum3.SUM(X, 3, -2)
sum5 = CreateCalcObj()
Z = sum5.SUM(X, 5, -2)
指数平滑移动平均—EMA
指数平滑移动平均—EMA (array数组, 周期N, 计算位置pos),Y=[2X+(N-1)Y’]/(N+1),其中Y’表示上一周期Y值。
注意:计算前需要用CreateCalcObj创建对象,如果需要计算多个周期EMA,要创建多个对象。
参数
array:数组
N:周期
Pos:计算位置,-2代表计算全部,-1代表计算最后一个,0~数组总长度-1 代表计算指定位置
返回
一个数组,包含所有的计算结果
示例
import numpy as np
option = PBObj()
klinedata = GetHisData(g.code, BarType.Day, option)
i=0
klist = []
while i<len(klinedata):
klist.append(klinedata[i].close)
i+=1
if len(klist)>0:
ema5 = CreateCalcObj()
ema10 = CreateCalcObj()
X = np.array(klist, dtype=np.double)
Y=ema5.EMA(X, 5, -2)
Z=ema10.EMA(X, 10, -2)
加权移动平均—WMA
加权移动平均—WMA (array数组, 周期N, 计算位置pos),X的N周期加权移动平均值,Y=(1X1+2X2+…+N*XN)/(1+2+…+N),X1表示N-1周期前的X值,XN表示当前周期的X值,其余类推
注意:计算前需要用CreateCalcObj创建对象,如果需要计算多个周期WMA,要创建多个对象。
参数
array:数组
N:周期
Pos:计算位置,-2代表计算全部,-1代表计算最后一个,0~数组总长度-1 代表计算指定位置
返回
一个数组,包含所有的计算结果
示例
import numpy as np
option = PBObj()
klinedata = GetHisData(g.code, BarType.Day, option)
i=0
klist = []
while i<len(klinedata):
klist.append(klinedata[i].close)
i+=1
if len(klist)>0:
wma5 = CreateCalcObj()
wma10 = CreateCalcObj()
X = np.array(klist, dtype=np.double)
Y=wma5.WMA(X, 5, -2)
Z=wma10.WMA(X, 10, -2)
动态移动平均—DMA
动态移动平均—DMA(array数组, 平滑因子A, 计算位置pos),以A为平滑因子的X的动态移动平均值,Y=AX+(1-A)Y’,其中Y’表示上一周期Y值,A必须大于0且小于1
注意:计算前需要用CreateCalcObj创建对象,如果需要计算多个DMA,要创建多个对象。
参数
array:数组
A:平滑因子
Pos:计算位置,-2代表计算全部,-1代表计算最后一个,0~数组总长度-1 代表计算指定位置
返回
一个数组,包含所有的计算结果
示例
import numpy as np
option = PBObj()
klinedata = GetHisData("600050.SHSE", BarType.Day, option)
i=0
klist = []
while i<len(klinedata):
klist.append(klinedata[i].close)
i+=1
if len(klist)>0:
dma5 = CreateCalcObj()
dma10 = CreateCalcObj()
X = np.array(klist, dtype=np.double)
Y=dma5.DMA(X, 0.5, -2)
Z=dma10.DMA(X, 0.8, -2)
移动平均—SMA
移动平均—SMA(array数组, 周期N, 平滑系数M, 计算位置pos),以M为平滑系数的X的N周期移动平均值,Y=[MX+(N-M)Y’]/N,其中Y’表示上一周期Y值,M必须大于0且小于N。
注意:计算前需要用CreateCalcObj创建对象,如果需要计算多个SMA,要创建多个对象。
参数
array:数组
N:周期
M:平滑系数
Pos:计算位置,-2代表计算全部,-1代表计算最后一个,0~数组总长度-1 代表计算指定位置
返回
一个数组,包含所有的计算结果
示例
import numpy as np
option = PBObj()
klinedata = GetHisData(g.code, BarType.Day, option)
i=0
klist = []
while i<len(klinedata):
klist.append(klinedata[i].close)
i+=1
if len(klist)>0:
sma5 = CreateCalcObj()
sma10 = CreateCalcObj()
X = np.array(klist, dtype=np.double)
Y=sma5.SMA(X, 5,0.3, -2)
Z=sma10.SMA(X, 10,0.3, -2)
近期最低值—LLV
近期最低值—LLV(array数组, 周期N, 计算位置pos),计算N个周期内的最低值
注意:计算前需要用CreateCalcObj创建对象,如果需要计算多个LLV,要创建多个对象。
参数
array:数组
N:周期
Pos:计算位置,-2代表计算全部,-1代表计算最后一个,0~数组总长度-1 代表计算指定位置
返回
一个数组,包含所有的计算结果
示例
import numpy as np
option = PBObj()
klinedata = GetHisData(g.code, BarType.Day, option)
i=0
klist = []
while i<len(klinedata):
klist.append(klinedata[i].close)
i+=1
if len(klist)>0:
b = CreateCalcObj()
X = np.array(klist, dtype=np.double)
Y=b.LLV(X, 3, -2)
近期最高值—HHV
近期最高值—HHV(array数组, 周期N, 计算位置pos),计算N个周期内的最高值
注意:计算前需要用CreateCalcObj创建对象,如果需要计算多个HHV,要创建多个对象。
参数
array:数组
N:周期
Pos:计算位置,-2代表计算全部,-1代表计算最后一个,0~数组总长度-1 代表计算指定位置
返回
一个数组,包含所有的计算结果
示例
import numpy as np
option = PBObj()
klinedata = GetHisData(g.code, BarType.Day, option)
i=0
klist = []
while i<len(klinedata):
klist.append(klinedata[i].close)
i+=1
if len(klist)>0:
b = CreateCalcObj()
X = np.array(klist, dtype=np.double)
Y=b.HHV(X, 3, -2)
历史波动率—GetVolatility
历史波动率—GetVolatility(array数组),计算历史波动率.
注意:计算前需要用CreateCalcObj创建对象,如果需要计算多个历史波动率,要创建多个对象。
参数
array:数组
返回
计算结果
示例
b = CreateCalcObj()
option = PBObj()
option.StartDate = datetime.datetime(2017, 1, 4)
option.Count = 60
klinedata = GetHisData(g.code, BarType.Day, option)
klist = []
while i<len(klinedata):
klist.append(klinedata[i].close)
i+=1
if len(klist)>0:
Kl = np.array(klist, dtype=np.double)
c=b.GetVolatility(Kl)
期权理论价格—GetOptionBSPrice
期权理论价格—GetOptionBSPrice(direct, type, stockprice, strikeprice, volatility, r, t),用B-S模型计算一个欧式期权的理论价格.
注意:计算前需要用CreateCalcObj创建对象,如果需要计算多个理论价格,要创建多个对象。
参数
direct:权证方向,0-CALL,1-PUT
type:权证类型0-股票期权,1-股指期权,2-期货期权
stockprice:当前标的物价格
strikeprice:权证行权价格
volatility:标的物历史波动率
r:无风险利率
t:期权期限,以年为单位,比如12天到期的,要用12除365
返回
计算结果
示例
b = CreateCalcObj()
bsp = b.GetOptionBSPrice(0,0,2.724,2.7,0.22,0.04,0.0328767)
计算隐含波动率—GetImpliedVolatility
计算隐含波动率—GetImpliedVolatility(direct, type, stockprice, strikeprice, volatility, r, t,optionprice)
注意:计算前需要用CreateCalcObj创建对象,如果需要计算多个隐含波动率,要创建多个对象。
参数
direct:权证方向,0-CALL,1-PUT
type:权证类型0-股票期权,1-股指期权,2-期货期权
stockprice:当前标的价格
strikeprice:权证行权价格
volatility:标的物历史波动率
r:无风险利率
t:期权期限,以年为单位
optionprice:当前期权价格
返回
计算结果
示例
b = CreateCalcObj()
Imp= b. GetImpliedVolatility (0,0,2.719,2.7,0.22,0.04,0.0328767,0.0562)
计算delta值—GetOptionDelta
计算delta值—GetOptionDelta(direct,type,stockprice,strikeprice,volatility,r,t),计算一个欧式期权的Delta值。
注意:计算前需要用CreateCalcObj创建对象,如果需要计算多个Delta,要创建多个对象。
参数
direct:权证方向,0-CALL,1-PUT
type:权证类型0-股票期权,1-股指期权,2-期货期权
stockprice:当前标的价格
strikeprice:权证行权价格
volatility:标的物历史波动率
r:无风险利率
t:期权期限,以年为单位
返回
计算结果
示例
b = CreateCalcObj()
del = b. GetOptionDelta (0,0,2.724,2.7,0.22,0.04,0.0328767)
计算Theta值—GetOptionTheta
计算Theta值—GetOptionTheta(direct,type,stockprice,strikeprice,volatility,r,t),计算一个欧式期权的Theta值。
注意:计算前需要用CreateCalcObj创建对象,如果需要计算多个Theta,要创建多个对象。
参数
同GetOptionDelta
示例
b = CreateCalcObj()
theta = b. GetOptionTheta (0,0,2.724,2.7,0.22,0.04,0.0328767)
计算Gamma值—GetOptionGamma
计算Gamma值—GetOptionGamma(direct,type,stockprice,strikeprice,volatility,r,t)计算一个欧式期权的Gamma值
注意:计算前需要用CreateCalcObj创建对象,如果需要计算多个Gamma,要创建多个对象。
参数
同GetOptionDelta
示例
b = CreateCalcObj()
gam = b. GetOptionGamma (0,0,2.724,2.7,0.22,0.04,0.0328767)
计算Vega值—GetOptionVega
计算Vega值—GetOptionVega(direct,type,stockprice,strikeprice,volatility,r,t)计算一个欧式期权的Vega值
注意:计算前需要用CreateCalcObj创建对象,如果需要计算多个Vega,要创建多个对象。
参数
同GetOptionDelta
示例
b = CreateCalcObj()
vega = b. GetOptionVega (0,0,2.724,2.7,0.22,0.04,0.0328767)
计算Rho值—GetOptionRho
计算Rho值—GetOptionRho(direct,type,stockprice,strikeprice,volatility,r,t)计算一个欧式期权的Rho值
注意:计算前需要用CreateCalcObj创建对象,如果需要计算多个Rho,要创建多个对象。
参数
同GetOptionDelta
示例
b = CreateCalcObj()
rho = b. GetOptionRho (0,0,2.724,2.7,0.22,0.04,0.0328767)
标的价格波动概率—GetPOLProbability
标的价格波动概率—GetPOLProbability(direct,type,price_from,price_to,strikeprice,volatility,r,t),计算在特定波动率下一个从一个价格变化到另外一个价格之外的概率。
注意:计算前需要用CreateCalcObj创建对象,如果需要计算多个概率,要创建多个对象。
参数
direct=权证方向,0-CALL,1-PUT
type=权证类型0-股票期权,1-股指期权,2-期货期权
price_from=标的初始价格
price_to=标的最终价格
strikeprice=权证行权价格
volatility=价格波动率
r=无风险利率
t=过程所经历的时间,按年计算
示例
b = CreateCalcObj()
bility = b. GetPOLProbability (0,0,2.724,2.9,2.7,0.22,0.04,0.0328767)
标的价格在区间内波动概率—GetPIRProbability
标的价格在区间内波动概率—GetPIRProbability(type,price_from,price_up,price_down,volatility,r,t),计算在特定波动率下一个从一个价格变化到一个价格范围之内的概率。
注意:计算前需要用CreateCalcObj创建对象,如果需要计算多个概率,要创建多个对象。
参数
type=权证类型0-股票期权,1-股指期权,2-期货期权
price_from=标的初始价格
price_up=标的最终价格上限
price_down=标的最终价格下限
volatility=价格波动率
r=无风险利率
t=过程所经历的时间,按年计算
示例
b = CreateCalcObj()
pirbility = b. GetPIRProbability (0,2.724,2.8,2.7,0.22,0.04,0.0328767)