Ejemplo n.º 1
0
def HCL(df, n):
    """均线通道"""
    new_df = pd.DataFrame()
    new_df["mah"] = ta_func.ma(df["high"], n)
    new_df["mal"] = ta_func.ma(df["low"], n)
    new_df["mac"] = ta_func.ma(df["close"], n)
    return new_df
Ejemplo n.º 2
0
def DMA(df, short, long, m):
    """平均线差"""
    new_df = pd.DataFrame()
    new_df["ddd"] = ta_func.ma(df["close"], short) - ta_func.ma(
        df["close"], long)
    new_df["ama"] = ta_func.ma(new_df["ddd"], m)
    return new_df
Ejemplo n.º 3
0
def PRICEOSC(df, long, short):
    """价格震荡指数 Price Oscillator"""
    ma_s = ta_func.ma(df["close"], short)
    ma_l = ta_func.ma(df["close"], long)
    new_df = pd.DataFrame(data=list((ma_s - ma_l) / ma_s * 100),
                          columns=["priceosc"])
    return new_df
Ejemplo n.º 4
0
def MICD(df, n, n1, n2):
    """异同离差动力指数"""
    new_df = pd.DataFrame()
    mi = df["close"] - df["close"].shift(1)
    ami = ta_func.sma(mi, n, 1)
    new_df["dif"] = ta_func.ma(ami.shift(1), n1) - ta_func.ma(ami.shift(1), n2)
    new_df["micd"] = ta_func.sma(new_df["dif"], 10, 1)
    return new_df
Ejemplo n.º 5
0
def RCCD(df, n, n1, n2):
    """异同离差变化率指数"""
    new_df = pd.DataFrame()
    rc = df["close"] / df["close"].shift(n)
    arc = ta_func.sma(rc.shift(1), n, 1)
    new_df["dif"] = ta_func.ma(arc.shift(1), n1) - ta_func.ma(arc.shift(1), n2)
    new_df["rccd"] = ta_func.sma(new_df["dif"], n, 1)
    return new_df
Ejemplo n.º 6
0
def BBIBOLL(df, n, m):
    """多空布林线"""
    new_df = pd.DataFrame()
    new_df["bbiboll"] = (
        ta_func.ma(df["close"], 3) + ta_func.ma(df["close"], 6) +
        ta_func.ma(df["close"], 12) + ta_func.ma(df["close"], 24)) / 4
    new_df["upr"] = new_df["bbiboll"] + m * new_df["bbiboll"].rolling(n).std()
    new_df["dwn"] = new_df["bbiboll"] - m * new_df["bbiboll"].rolling(n).std()
    return new_df
Ejemplo n.º 7
0
def DBCD(df, n, m, t):
    """异同离差乖离率"""
    new_df = pd.DataFrame()
    bias = (df["close"] - ta_func.ma(df["close"], n)) / ta_func.ma(
        df["close"], n)
    dif = bias - bias.shift(m)
    new_df["dbcd"] = ta_func.sma(dif, t, 1)
    new_df["mm"] = ta_func.ma(new_df["dbcd"], 5)
    return new_df
Ejemplo n.º 8
0
def ZDZB(df, n1, n2, n3):
    """筑底指标"""
    new_df = pd.DataFrame()
    a = pd.Series(np.where(df["close"] >= df["close"].shift(1), 1,
                           0)).rolling(n1).sum() / pd.Series(
                               np.where(df["close"] < df["close"].shift(1), 1,
                                        0)).rolling(n1).sum()
    new_df["b"] = ta_func.ma(a, n2)
    new_df["d"] = ta_func.ma(a, n3)
    return new_df
Ejemplo n.º 9
0
def CDP(df, n):
    """逆势操作"""
    new_df = pd.DataFrame()
    pt = df["high"].shift(1) - df["low"].shift(1)
    cdp = (df["high"].shift(1) + df["low"].shift(1) + df["close"].shift(1)) / 3
    new_df["ah"] = ta_func.ma(cdp + pt, n)
    new_df["al"] = ta_func.ma(cdp - pt, n)
    new_df["nh"] = ta_func.ma(2 * cdp - df["low"], n)
    new_df["nl"] = ta_func.ma(2 * cdp - df["high"], n)
    return new_df
Ejemplo n.º 10
0
def ROC(df, n, m):
    """变动速率"""
    new_df = pd.DataFrame()
    new_df["roc"] = (df["close"] -
                     df['close'].shift(n)) / df["close"].shift(n) * 100
    new_df["rocma"] = ta_func.ma(new_df["roc"], m)
    return new_df
Ejemplo n.º 11
0
def PSY(df, n, m):
    """心理线"""
    new_df = pd.DataFrame()
    new_df["psy"] = ta_func.count(df["close"] > df["close"].shift(1),
                                  n) / n * 100
    new_df["psyma"] = ta_func.ma(new_df["psy"], m)
    return new_df
Ejemplo n.º 12
0
def BOLL(df, n, p):
    """布林线"""
    new_df = pd.DataFrame()
    mid = ta_func.ma(df["close"], n)
    std = df["close"].rolling(n).std()
    new_df["mid"] = mid
    new_df["top"] = mid + p * std
    new_df["bottom"] = mid - p * std
    return new_df
Ejemplo n.º 13
0
def CR(df, n, m):
    """CR能量"""
    new_df = pd.DataFrame()
    mid = (df["high"] + df["low"] + df["close"]) / 3
    new_df["cr"] = pd.Series(
        np.where(0 > df["high"] - mid.shift(1), 0,
                 df["high"] - mid.shift(1))).rolling(n).sum() / pd.Series(
                     np.where(0 > mid.shift(1) - df["low"], 0,
                              mid.shift(1) - df["low"])).rolling(n).sum() * 100
    new_df["crma"] = ta_func.ma(new_df["cr"], m).shift(int(m / 2.5 + 1))
    return new_df
Ejemplo n.º 14
0
def CCI(df, n):
    """顺势指标"""
    typ = (df["high"] + df["low"] + df["close"]) / 3
    ma = ta_func.ma(typ, n)

    def mad(x):
        return np.fabs(x - x.mean()).mean()

    md = typ.rolling(window=n).apply(mad, raw=True)  # 平均绝对偏差
    new_df = pd.DataFrame(data=list((typ - ma) / (md * 0.015)),
                          columns=["cci"])
    return new_df
Ejemplo n.º 15
0
def DMI(df, n, m):
    """动向指标"""
    new_df = pd.DataFrame()
    new_df["atr"] = ATR(df, n)["atr"]
    pre_high = df["high"].shift(1)
    pre_low = df["low"].shift(1)
    hd = df["high"] - pre_high
    ld = pre_low - df["low"]
    admp = ta_func.ma(pd.Series(np.where((hd > 0) & (hd > ld), hd, 0)), n)
    admm = ta_func.ma(pd.Series(np.where((ld > 0) & (ld > hd), ld, 0)), n)
    new_df["pdi"] = pd.Series(
        np.where(new_df["atr"] > 0, admp / new_df["atr"] * 100,
                 np.NaN)).ffill()
    new_df["mdi"] = pd.Series(
        np.where(new_df["atr"] > 0, admm / new_df["atr"] * 100,
                 np.NaN)).ffill()
    ad = pd.Series(
        np.absolute(new_df["mdi"] - new_df["pdi"]) /
        (new_df["mdi"] + new_df["pdi"]) * 100)
    new_df["adx"] = ta_func.ma(ad, m)
    new_df["adxr"] = (new_df["adx"] + new_df["adx"].shift(m)) / 2
    return new_df
Ejemplo n.º 16
0
def DKX(df, m):
    """多空线"""
    new_df = pd.DataFrame()
    a = (3 * df["close"] + df["high"] + df["low"] + df["open"]) / 6
    new_df["b"] = (20 * a + 19 * a.shift(1) + 18 * a.shift(2) +
                   17 * a.shift(3) + 16 * a.shift(4) + 15 * a.shift(5) +
                   14 * a.shift(6) + 13 * a.shift(7) + 12 * a.shift(8) +
                   11 * a.shift(9) + 10 * a.shift(10) + 9 * a.shift(11) +
                   8 * a.shift(12) + 7 * a.shift(13) + 6 * a.shift(14) +
                   5 * a.shift(15) + 4 * a.shift(16) + 3 * a.shift(17) +
                   2 * a.shift(18) + a.shift(20)) / 210
    new_df["d"] = ta_func.ma(new_df["b"], m)
    return new_df
Ejemplo n.º 17
0
def SRDM(df, n):
    """动向速度比率"""
    new_df = pd.DataFrame()
    dmz = np.where((df["high"] + df["low"]) <=
                   (df["high"].shift(1) + df["low"].shift(1)), 0,
                   np.where(
                       np.absolute(df["high"] - df["high"].shift(1)) >
                       np.absolute(df["low"] - df["low"].shift(1)),
                       np.absolute(df["high"] - df["high"].shift(1)),
                       np.absolute(df["low"] - df["low"].shift(1))))
    dmf = np.where((df["high"] + df["low"]) >=
                   (df["high"].shift(1) + df["low"].shift(1)), 0,
                   np.where(
                       np.absolute(df["high"] - df["high"].shift(1)) >
                       np.absolute(df["low"] - df["low"].shift(1)),
                       np.absolute(df["high"] - df["high"].shift(1)),
                       np.absolute(df["low"] - df["low"].shift(1))))
    admz = ta_func.ma(pd.Series(dmz), 10)
    admf = ta_func.ma(pd.Series(dmf), 10)
    new_df["srdm"] = np.where(admz > admf, (admz - admf) / admz,
                              np.where(admz == admf, 0, (admz - admf) / admf))
    new_df["asrdm"] = ta_func.sma(new_df["srdm"], n, 1)
    return new_df
Ejemplo n.º 18
0
def ATR(df, n):
    """平均真实波幅"""
    new_df = pd.DataFrame()
    pre_close = df["close"].shift(1)
    new_df["tr"] = np.where(
        df["high"] - df["low"] > np.absolute(pre_close - df["high"]),
        np.where(df["high"] - df["low"] > np.absolute(pre_close - df["low"]),
                 df["high"] - df["low"], np.absolute(pre_close - df["low"])),
        np.where(
            np.absolute(pre_close - df["high"]) >
            np.absolute(pre_close - df["low"]),
            np.absolute(pre_close - df["high"]),
            np.absolute(pre_close - df["low"])))
    new_df["atr"] = ta_func.ma(new_df["tr"], n)
    return new_df
Ejemplo n.º 19
0
def SHORT(df):
    """短线指标"""
    new_df = pd.DataFrame()
    tb = np.where(df["high"] > df["close"].shift(1),
                  df["high"] - df["close"].shift(1) + df["close"] - df["low"],
                  df["close"] - df["low"])
    ts = np.where(df["close"].shift(1) > df["low"],
                  df["close"].shift(1) - df["low"] + df["high"] - df["close"],
                  df["high"] - df["close"])
    vol1 = (tb - ts) * df["volume"] / (tb + ts) / 10000
    vol10 = vol1.ewm(alpha=0.1, adjust=False).mean()  # DMA 动态均值
    vol11 = vol1.ewm(alpha=0.05, adjust=False).mean()  # DMA
    new_df["short"] = vol10 - vol11
    new_df["ma1"] = ta_func.ma(new_df["short"], 10)
    return new_df
Ejemplo n.º 20
0
def ADTM(df, n, m):
    """动态买卖气指标"""
    new_df = pd.DataFrame()
    dtm = np.where(
        df["open"] < df["open"].shift(1), 0,
        np.where(df["high"] - df["open"] > df["open"] - df["open"].shift(1),
                 df["high"] - df["open"], df["open"] - df["open"].shift(1)))
    dbm = np.where(
        df["open"] >= df["open"].shift(1), 0,
        np.where(df["open"] - df["low"] > df["open"] - df["open"].shift(1),
                 df["open"] - df["low"], df["open"] - df["open"].shift(1)))
    stm = pd.Series(dtm).rolling(n).sum()
    sbm = pd.Series(dbm).rolling(n).sum()
    new_df["adtm"] = np.where(stm > sbm, (stm - sbm) / stm,
                              np.where(stm == sbm, 0, (stm - sbm) / sbm))
    new_df["adtmma"] = ta_func.ma(new_df["adtm"], m)
    return new_df
Ejemplo n.º 21
0
def DDI(df, n, n1, m, m1):
    """方向标准离差指数"""
    new_df = pd.DataFrame()
    tr = np.where(
        np.absolute(df["high"] - df["high"].shift(1)) >
        np.absolute(df["low"] - df["low"].shift(1)),
        np.absolute(df["high"] - df["high"].shift(1)),
        np.absolute(df["low"] - df["low"].shift(1)))
    dmz = np.where((df["high"] + df["low"]) <=
                   (df["high"].shift(1) + df["low"].shift(1)), 0, tr)
    dmf = np.where((df["high"] + df["low"]) >=
                   (df["high"].shift(1) + df["low"].shift(1)), 0, tr)
    diz = pd.Series(dmz).rolling(n).sum() / (pd.Series(dmz).rolling(n).sum() +
                                             pd.Series(dmf).rolling(n).sum())
    dif = pd.Series(dmf).rolling(n).sum() / (pd.Series(dmf).rolling(n).sum() +
                                             pd.Series(dmz).rolling(n).sum())
    new_df["ddi"] = diz - dif
    new_df["addi"] = ta_func.sma(new_df["ddi"], n1, m)
    new_df["ad"] = ta_func.ma(new_df["addi"], m1)
    return new_df
Ejemplo n.º 22
0
def MA(df, n):
    """简单移动平均线"""
    new_df = pd.DataFrame(data=list(ta_func.ma(df["close"], n)),
                          columns=["ma"])
    return new_df
Ejemplo n.º 23
0
def VOSC(df, short, long):
    """移动平均成交量指标 Volume Oscillator"""
    vosc = (ta_func.ma(df["volume"], short) - ta_func.ma(
        df["volume"], long)) / ta_func.ma(df["volume"], short) * 100
    new_df = pd.DataFrame(data=list(vosc), columns=["vosc"])
    return new_df
Ejemplo n.º 24
0
def DPO(df, n, m):
    """区间震荡线"""
    dpo = df["close"] - (ta_func.ma(df["close"], 20)).shift(11)
    new_df = pd.DataFrame(data=list(dpo), columns=["dpo"])
    return new_df
Ejemplo n.º 25
0
def ENV(df, n, k):
    """包略线 (Envelopes)"""
    new_df = pd.DataFrame()
    new_df["upper"] = ta_func.ma(df["close"], n) * (1 + k / 100)
    new_df["lower"] = ta_func.ma(df["close"], n) * (1 - k / 100)
    return new_df
Ejemplo n.º 26
0
def BIAS(df, n):
    """乖离率"""
    ma1 = ta_func.ma(df["close"], n)
    new_df = pd.DataFrame(data=list((df["close"] - ma1) / ma1 * 100),
                          columns=["bias"])
    return new_df
Ejemplo n.º 27
0
def PUBU(df, m):
    """瀑布线"""
    pb = (ta_func.ema(df["close"], m) + ta_func.ma(df["close"], m * 2) +
          ta_func.ma(df["close"], m * 4)) / 3
    new_df = pd.DataFrame(data=list(pb), columns=["pb"])
    return new_df
Ejemplo n.º 28
0
def BBI(df, n1, n2, n3, n4):
    """多空指数"""
    bbi = (ta_func.ma(df["close"], n1) + ta_func.ma(df["close"], n2) +
           ta_func.ma(df["close"], n3) + ta_func.ma(df["close"], n4)) / 4
    new_df = pd.DataFrame(data=list(bbi), columns=["bbi"])
    return new_df
Ejemplo n.º 29
0
def B3612(df):
    """三减六日乖离率"""
    new_df = pd.DataFrame()
    new_df["b36"] = ta_func.ma(df["close"], 3) - ta_func.ma(df["close"], 6)
    new_df["b612"] = ta_func.ma(df["close"], 6) - ta_func.ma(df["close"], 12)
    return new_df
Ejemplo n.º 30
0
def MTM(df, n, n1):
    """MTM动力指标"""
    new_df = pd.DataFrame()
    new_df["mtm"] = df["close"] - df["close"].shift(n)
    new_df["mtmma"] = ta_func.ma(new_df["mtm"], n1)
    return new_df