def prepare_hmacd(stock): #linelog('prepare hmacd:%s' % stock.code) pdiff,pdea = cmacd(stock.hour) upcross_t = gand(cross(pdea,pdiff)>0,strend(pdiff)>0) upcross = gand(upcross_t,pdiff<100) #<100才保险 downcross = gand(cross(pdea,pdiff)<0,strend(pdiff)<0) stock.hup_t = hour2day(upcross_t) stock.hup = hour2day(upcross) stock.hdown = hour2day(downcross) upcross2 = gand(cross(pdea,pdiff)>0,strend(pdiff)>0) dsub = rsub(pdiff,upcross2) csub = rsub(stock.hour,upcross2) stock.hdev = hour2day(band(greater(dsub),lesser(csub))) #小时线背离 stock.mup_100 = hour2day(gand(pdiff>pdea,pdiff<100,strend(pdiff)>0,strend(pdea)>0)) #stock.hgreater = hour2day4(pdiff>pdea) stock.xup = hour2day(gand(pdiff>pdea,strend(pdiff)>0,strend(pdea)>0))
def decline_ranges(source,covered=22): ''' 求以covered为顶/底点辐射半径所得到的高低点确定的衰落幅度 covered默认为辐射半径为月 返回衰落幅度数组 ''' peaks = xpeak_points(source,covered) prange = rsub(source,peaks) min_peaks = (peaks == -1) #做选择下标必须是bool类型 max_ranges = -prange[min_peaks] #这里的值都是cur_min-pre_max,故此需要取反. return max_ranges
def decline_ranges(source, covered=22): ''' 求以covered为顶/底点辐射半径所得到的高低点确定的衰落幅度 covered默认为辐射半径为月 返回衰落幅度数组 ''' peaks = xpeak_points(source, covered) prange = rsub(source, peaks) min_peaks = (peaks == -1) #做选择下标必须是bool类型 max_ranges = -prange[min_peaks] #这里的值都是cur_min-pre_max,故此需要取反. return max_ranges
def vdis(sopen, sclose, shigh, slow, svolume): """ 功率含义的比较,但是很难应用 up,uf,dp,df = vdis(t[OPEN],t[CLOSE],t[HIGH],t[LOW],t[VOLUME]) """ su, sd = supdown(sopen, sclose, shigh, slow) x = f.xpeak_points_2(shigh, slow, 11) uv = svolume * su / (su + sd) dv = svolume - uv uvx = de.rsum2(uv, x) dvx = de.rsum2(dv, x) cl = np.log(sclose) clx = de.rsub(cl, x) dx = de.distance2(x) xd = np.where(x != 0)[0] # ue1 = (uv/clx/dx)[xd] # ue2 = (uv/clx/dx/dx)[xd] # de1 = (dv/clx/dx)[xd] # de2 = (dv/clx/dx/dx)[xd] # return xd,ue1,ue2,de1,de2 # e1 = (np.abs((uv-dv))/clx/dx)[xd] # e2 = (np.abs((uv-dv))/clx/dx/dx)[xd] # return xd,e1,e2,uv-dv return (uv / dx)[xd], (uv / clx)[xd], (dv / dx)[xd], (dv / clx)[xd]
def vdis(sopen, sclose, shigh, slow, svolume): ''' 功率含义的比较,但是很难应用 up,uf,dp,df = vdis(t[OPEN],t[CLOSE],t[HIGH],t[LOW],t[VOLUME]) ''' su, sd = supdown(sopen, sclose, shigh, slow) x = f.xpeak_points_2(shigh, slow, 11) uv = svolume * su / (su + sd) dv = svolume - uv uvx = de.rsum2(uv, x) dvx = de.rsum2(dv, x) cl = np.log(sclose) clx = de.rsub(cl, x) dx = de.distance2(x) xd = np.where(x != 0)[0] #ue1 = (uv/clx/dx)[xd] #ue2 = (uv/clx/dx/dx)[xd] #de1 = (dv/clx/dx)[xd] #de2 = (dv/clx/dx/dx)[xd] #return xd,ue1,ue2,de1,de2 #e1 = (np.abs((uv-dv))/clx/dx)[xd] #e2 = (np.abs((uv-dv))/clx/dx/dx)[xd] #return xd,e1,e2,uv-dv return (uv / dx)[xd], (uv / clx)[xd], (dv / dx)[xd], (dv / clx)[xd]