在股市中,妖股因其股价波动剧烈、涨幅巨大而备受投资者关注。选股公式的运用可以帮助投资者精准捕捉市场热点,降低投资风险。以下是10大妖股选股公式,助您轻松驾驭投资风浪。
1. 指数平滑异同移动平均线(MACD)
MACD指标通过计算两个不同周期的指数移动平均线的差值,来反映市场趋势的变化。当MACD线向上穿过信号线时,表明市场趋势向上,可考虑买入。
import numpy as np
def calculate_macd(data, short_period=12, long_period=26, signal_period=9):
ema_short = np.convolve(data, np.ones(short_period)/short_period, mode='valid')
ema_long = np.convolve(data, np.ones(long_period)/long_period, mode='valid')
macd = ema_short - ema_long
signal = np.convolve(macd, np.ones(signal_period)/signal_period, mode='valid')
return macd, signal
# 示例数据
data = [10, 15, 20, 25, 30, 35, 40, 45, 50, 55, 60, 65, 70, 75, 80, 85, 90, 95, 100]
macd, signal = calculate_macd(data)
2. 相对强弱指数(RSI)
RSI指标通过比较一段时间内股价上涨和下跌幅度,来衡量股票的超买或超卖状态。当RSI值大于70时,表明股票可能处于超买状态,可考虑卖出;当RSI值小于30时,表明股票可能处于超卖状态,可考虑买入。
def calculate_rsi(data, period=14):
up_prices = [max(data[i+1] - data[i], 0) for i in range(len(data)-1)]
down_prices = [max(data[i] - data[i+1], 0) for i in range(len(data)-1)]
avg_gain = sum(up_prices) / len(up_prices)
avg_loss = sum(down_prices) / len(down_prices)
rsi = 100 - (100 / (1 + avg_gain / avg_loss))
return rsi
# 示例数据
data = [10, 15, 20, 25, 30, 35, 40, 45, 50, 55, 60, 65, 70, 75, 80, 85, 90, 95, 100]
rsi = calculate_rsi(data)
3. 布林带(Bollinger Bands)
布林带由一个中间的简单移动平均线(SMA)和两个标准差线组成。当股价突破布林带上轨时,表明股票可能处于超买状态,可考虑卖出;当股价跌破布林带下轨时,表明股票可能处于超卖状态,可考虑买入。
def calculate_bollinger_bands(data, period=20, num_std=2):
sma = np.convolve(data, np.ones(period)/period, mode='valid')
std = np.std(data[:len(sma)], ddof=1)
upper_band = sma + num_std * std
lower_band = sma - num_std * std
return sma, upper_band, lower_band
# 示例数据
data = [10, 15, 20, 25, 30, 35, 40, 45, 50, 55, 60, 65, 70, 75, 80, 85, 90, 95, 100]
sma, upper_band, lower_band = calculate_bollinger_bands(data)
4. 平均方向性指数(ADX)
ADX指标用于衡量趋势的强度。当ADX值大于25时,表明市场存在明显的趋势,可考虑进行趋势交易。
def calculate_adx(data, period=14):
plus_di = []
minus_di = []
for i in range(1, len(data)):
plus_di.append(max(data[i] - data[i-1], 0))
minus_di.append(max(data[i-1] - data[i], 0))
plus_di = np.convolve(plus_di, np.ones(period)/period, mode='valid')
minus_di = np.convolve(minus_di, np.ones(period)/period, mode='valid')
adx = 100 * np.abs((plus_di - minus_di) / (plus_di + minus_di))
return adx
# 示例数据
data = [10, 15, 20, 25, 30, 35, 40, 45, 50, 55, 60, 65, 70, 75, 80, 85, 90, 95, 100]
adx = calculate_adx(data)
5. 乖离率(BIAS)
BIAS指标通过比较股价与某个移动平均线的偏离程度,来衡量股票的超买或超卖状态。当BIAS值大于1时,表明股票可能处于超买状态,可考虑卖出;当BIAS值小于-1时,表明股票可能处于超卖状态,可考虑买入。
def calculate_bias(data, period=20):
sma = np.convolve(data, np.ones(period)/period, mode='valid')
bias = (data - sma) / sma
return bias
# 示例数据
data = [10, 15, 20, 25, 30, 35, 40, 45, 50, 55, 60, 65, 70, 75, 80, 85, 90, 95, 100]
bias = calculate_bias(data)
6. 量比(VR)
量比指标通过比较当前成交量与过去一段时间平均成交量的比值,来衡量成交量的放大或缩小。当量比值大于1时,表明成交量放大,可考虑买入;当量比值小于1时,表明成交量缩小,可考虑卖出。
def calculate_vr(data, period=20):
avg_volume = sum(data[:period]) / period
vr = sum(data[-period:]) / avg_volume
return vr
# 示例数据
data = [10, 15, 20, 25, 30, 35, 40, 45, 50, 55, 60, 65, 70, 75, 80, 85, 90, 95, 100]
vr = calculate_vr(data)
7. 腾讯自选股指标(TDX)
TDX指标是腾讯自选股软件中的一种选股指标,通过计算股票价格与成交量之间的关系,来筛选出具有潜力的股票。
def calculate_tdx(data, period=20):
volume = np.convolve(data, np.ones(period)/period, mode='valid')
tdx = (data - np.min(data[-period:])) / (np.max(data[-period:]) - np.min(data[-period:])) * volume
return tdx
# 示例数据
data = [10, 15, 20, 25, 30, 35, 40, 45, 50, 55, 60, 65, 70, 75, 80, 85, 90, 95, 100]
tdx = calculate_tdx(data)
8. 股价偏离度(SD)
股价偏离度指标通过比较股价与某个移动平均线的偏离程度,来衡量股票的超买或超卖状态。当SD值大于1时,表明股票可能处于超买状态,可考虑卖出;当SD值小于-1时,表明股票可能处于超卖状态,可考虑买入。
def calculate_sd(data, period=20):
sma = np.convolve(data, np.ones(period)/period, mode='valid')
sd = (data - sma) / sma
return sd
# 示例数据
data = [10, 15, 20, 25, 30, 35, 40, 45, 50, 55, 60, 65, 70, 75, 80, 85, 90, 95, 100]
sd = calculate_sd(data)
9. 股价波动率(VOL)
股价波动率指标通过计算股价的波动幅度,来衡量股票的波动性。当VOL值较大时,表明股票波动性较大,可考虑进行波段操作。
def calculate_vol(data):
vol = np.std(data)
return vol
# 示例数据
data = [10, 15, 20, 25, 30, 35, 40, 45, 50, 55, 60, 65, 70, 75, 80, 85, 90, 95, 100]
vol = calculate_vol(data)
10. 股价趋势线(TREND)
股价趋势线指标通过连接股价的峰值和谷值,来描绘出股票的趋势。当股价突破趋势线时,表明趋势可能发生改变,可考虑进行相应的操作。
def calculate_trend(data):
peaks = [data[i] for i in range(1, len(data)-1) if data[i] > data[i-1] and data[i] > data[i+1]]
valleys = [data[i] for i in range(1, len(data)-1) if data[i] < data[i-1] and data[i] < data[i+1]]
trend = np.polyfit(peaks, valleys, 1)
return trend
# 示例数据
data = [10, 15, 20, 25, 30, 35, 40, 45, 50, 55, 60, 65, 70, 75, 80, 85, 90, 95, 100]
trend = calculate_trend(data)
以上10大妖股选股公式可以帮助投资者在市场中精准捕捉热点,降低投资风险。在实际操作中,投资者可以根据自身情况和市场环境,灵活运用这些公式,提高投资收益。
