def gtrend1(shigh, slow): ''' 江恩1周期趋势线 #返回trend线,top,bottom线 返回trend线,使用时可用strend2来判断当前趋势,当up时当前点为高点,down时为低点 如果要找到高点之前的地点,可以用strend2作为选择,找到这些点,然后extend2next 如: t1=strend2(gtrend) thigh = np.select([t1>0],[gtrend]) thigh = extend2next(thigh) 如此就取到了高点序列,同理可得到低点序列 一日摆动由江恩定义. 1日转向图. 上升日(Up down:UD): 高点高,低点高 下降日(Down day:DD): 高点低,低点低 外延日(Outside day,OD):高点高,低点低 内移日(Inside day:ID):高点低,低点高 上升日则趋势线移动到高点,下降日则趋势线移动到低点 上升趋势中的外延日,如果先高后低,则移动到低点,否则移动到高点,#这里简单起见,都算延续趋势 下降趋势中的外延日,如果先低后高,则移动到高点,否则移动到高点,#这里简单起见,都算延续趋势 忽略内移日 top:上行中的高点,或转为下行前的上一个高点 bottom: 下行中的低点,或转为上行前的上一个低点 ''' dup = gand(shigh > rollx(shigh), slow > rollx(slow)) ddown = gand(shigh < rollx(shigh), slow < rollx(slow)) dexpand = gand(shigh > rollx(shigh), slow < rollx(slow)) #dinside = gand(shigh<rollx(shigh),slow>rollx(slow)) #忽略 #先不计扩张日,得到原始趋势 st = np.select([dup, ddown], [shigh, slow], 0) st = extend2next(st) t1 = strend2(st) st2 = np.select( [dup, gand(dexpand, t1 > 0), ddown, gand(dexpand, t1 < 0)], [shigh, shigh, slow, slow]) #st_top = np.select([dup,gand(dexpand,t1>0)],[shigh,shigh]) #st_bottom = np.select([ddown,gand(dexpand,t1<0)],[slow,slow]) st2 = extend2next(st2) #st_top = extend2next(st_top) #st_bottom = extend2next(st_bottom) return st2 #,st_top,st_bottom
def gtrend1(shigh,slow): ''' 江恩1周期趋势线 #返回trend线,top,bottom线 返回trend线,使用时可用strend2来判断当前趋势,当up时当前点为高点,down时为低点 如果要找到高点之前的地点,可以用strend2作为选择,找到这些点,然后extend2next 如: t1=strend2(gtrend) thigh = np.select([t1>0],[gtrend]) thigh = extend2next(thigh) 如此就取到了高点序列,同理可得到低点序列 一日摆动由江恩定义. 1日转向图. 上升日(Up down:UD): 高点高,低点高 下降日(Down day:DD): 高点低,低点低 外延日(Outside day,OD):高点高,低点低 内移日(Inside day:ID):高点低,低点高 上升日则趋势线移动到高点,下降日则趋势线移动到低点 上升趋势中的外延日,如果先高后低,则移动到低点,否则移动到高点,#这里简单起见,都算延续趋势 下降趋势中的外延日,如果先低后高,则移动到高点,否则移动到高点,#这里简单起见,都算延续趋势 忽略内移日 top:上行中的高点,或转为下行前的上一个高点 bottom: 下行中的低点,或转为上行前的上一个低点 ''' dup = gand(shigh>rollx(shigh),slow>rollx(slow)) ddown = gand(shigh<rollx(shigh),slow<rollx(slow)) dexpand = gand(shigh>rollx(shigh),slow<rollx(slow)) #dinside = gand(shigh<rollx(shigh),slow>rollx(slow)) #忽略 #先不计扩张日,得到原始趋势 st = np.select([dup,ddown],[shigh,slow],0) st = extend2next(st) t1 = strend2(st) st2 = np.select([dup,gand(dexpand,t1>0),ddown,gand(dexpand,t1<0)],[shigh,shigh,slow,slow]) #st_top = np.select([dup,gand(dexpand,t1>0)],[shigh,shigh]) #st_bottom = np.select([ddown,gand(dexpand,t1<0)],[slow,slow]) st2 = extend2next(st2) #st_top = extend2next(st_top) #st_bottom = extend2next(st_bottom) return st2 #,st_top,st_bottom
def organize_net_array(self, date_manager): ''' 根据date_manager和vhistory获得净值数组(坐标与dates相一致) ''' rev = np.zeros(len(date_manager), int) self.vhistory[0].date = date_manager.begin try: for b in self.vhistory: #第一个是初始值 index = date_manager.get_index(b.date) rev[index] = b.value except: #错误的时候才有可能,利润无限高 print u'溢出了:', b.value rev = extend2next(rev) return rev
def organize_net_array(self,date_manager): ''' 根据date_manager和vhistory获得净值数组(坐标与dates相一致) ''' rev = np.zeros(len(date_manager),int) self.vhistory[0].date = date_manager.begin try: for b in self.vhistory: #第一个是初始值 index = date_manager.get_index(b.date) rev[index] = b.value except: #错误的时候才有可能,利润无限高 print u'溢出了:',b.value rev = extend2next(rev) return rev