#!/usr/bin/env python# -*- coding: utf-8 -*-import cross_order as orderimport timedef StochRSI(close, lengthRSI=14, lengthStoch=14, smoothK=3, smoothD=3):""" 计算StochRSI(close),有5个参数,第1个为数据源 @param close: 数据源 @param lengthRSI: RSI参数 @param lengthStoch: Stoch参数 @param smoothK: K参数 @param smoothD: D参数 @return: """ # 计算RSI lc = close.shift(1)
diff = close - lc
up = diff.where(diff > 0, 0)
down = -diff.where(diff < 0, 0)
ema_up = up.ewm(alpha=1 / lengthRSI, adjust=False).mean()
ema_down = down.ewm(alpha=1 / lengthRSI, adjust=False).mean()
rs = ema_up / ema_down
rsi = 100 - 100 / (1 + rs)# 计算Stochastic stoch = (rsi - rsi.rolling(window=lengthStoch).min()) / (rsi.rolli
diff = close - lc
up = diff.where(diff > 0, 0)
down = -diff.where(diff < 0, 0)
ema_up = up.ewm(alpha=1 / lengthRSI, adjust=False).mean()
ema_down = down.ewm(alpha=1 / lengthRSI, adjust=False).mean()
rs = ema_up / ema_down
rsi = 100 - 100 / (1 + rs)# 计算Stochastic stoch = (rsi - rsi.rolling(window=lengthStoch).min()) / (rsi.rolli