def analyze(stock_code, date, period1, period2): signal = "" score = 0.0 recent_high_price = bd.getHighPriceInPeriod("CLOSE_TODAY", stock_code, date, period1) recent_low_price = bd.getLowPriceInPeriod("CLOSE_TODAY", stock_code, date, period1) close_today = bd.getBasicData("CLOSE_TODAY", stock_code, date) BBI = getBBI(stock_code, date) if (abs(close_today - recent_high_price) / recent_high_price <= HIGH_OFFSET / 100) and (BBI > close_today): score = score - 1 signal = signal + "[-1]股价在高价区以收市价跌破多空线为卖出信号;" if (abs(close_today - recent_low_price) / recent_low_price <= LOW_OFFSET / 100) and (BBI < close_today): score = score + 1 signal = signal + "[1]股价在低价区以收市价突破多空线为买入信号;" BBIs = getBBIs(stock_code, date, period2) K = mu.getPoly(BBIs, 1)[0] if (K > 0) and (BBI > close_today): score += 1 signal += "[1]多空指数由下向上递增,股价在多空线上方,表明多头势强,可以继续持股;" if (K < 0) and (BBI < close_today): score -= 1 signal += "[-1]多空指数由上向下递减,股价在多空线下方,表明空头势强,一般不宜买入;" print score print signal.decode("utf-8").encode("gbk") bd.updateAnalysisData("BBI", str(score) + ";" + signal, stock_code, date) return [score, signal]
def calcWR(stock_code, date, period): close_today = bd.getBasicData("CLOSE_TODAY", stock_code, date) high_today = bd.getHighPriceInPeriod("HIGH_TODAY", stock_code, date, period) low_today = bd.getLowPriceInPeriod("LOW_TODAY", stock_code, date, period) WR = 100 - (close_today - low_today) / (high_today - low_today) * 100 return round(WR, 3)