问财量化选股策略逻辑
1. 至少5根均线重合的股票
至少5根均线重合的股票,说明这些股票的短期和中期趋势比较一致,有利于投资者进行买入操作。
2. 收盘价<boll(upper值)且收盘价>boll(mid值)
收盘价在布林带上轨处且收盘价高于布林带中轨,说明股票价格处于上升趋势中,投资者可以考虑买入。
3. 2021年
选择2021年的数据,可以确保筛选出最近一年内的股票,更加符合当前市场情况。
选股逻辑分析
以上三个条件结合起来,可以筛选出一些短期和中期趋势一致、价格处于上升趋势中的股票,这些股票可能具有较好的投资价值。
有何风险?
1. 均线重合的股票数量较少
如果市场上符合以上条件的股票数量较少,那么投资者可能会面临股票选择困难的问题,从而影响投资决策。
2. 布林带指标的准确性
布林带指标是一种常用的技术分析工具,但是它并不是100%准确的,投资者需要结合其他因素进行分析。
如何优化?
1. 选择更多的均线
选择更多的均线可以更好地反映股票价格的短期和中期趋势,从而提高筛选出优质股票的准确率。
2. 考虑其他技术指标
除了布林带指标外,投资者还可以考虑其他技术指标,如移动平均线、MACD等,以更加全面地分析股票价格走势。
最终的选股逻辑
以下是最终的选股逻辑:
-
筛选出至少5根均线重合的股票。
-
筛选出收盘价在布林带上轨处且收盘价高于布林带中轨的股票。
-
选择2021年的数据。
-
选择更多的均线进行分析。
-
结合其他技术指标进行分析。
python代码参考
以下是使用pandas和ta-lib库进行实现的python代码参考:
import pandas as pd
import talib
def bollinger_upper(df):
upper = talib.BBANDS(df['close'], timeperiod=20, nbdevup=2, nbdevdn=2)
return upper[1]
def bollinger_mid(df):
mid = talib.BBANDS(df['close'], timeperiod=20, nbdevup=2, nbdevdn=2)
return mid[1]
def bollinger_lower(df):
lower = talib.BBANDS(df['close'], timeperiod=20, nbdevup=2, nbdevdn=2)
return lower[1]
def select_stock(df):
# 筛选出至少5根均线重合的股票
condition1 = df['close'].rolling(window=5).apply(lambda x: len(x) >= 5)
condition2 = df['close'].rolling(window=5).apply(lambda x: x[-1] > x[-2] and x[-1] > x[-3])
condition3 = df['close'].rolling(window=5).apply(lambda x: x[-1] > x[-4] and x[-1] > x[-5])
condition = condition1 & condition2 & condition3
selected_stocks = df[condition].index.tolist()
return selected_stocks
def analyze_stock(selected_stocks, df):
# 筛选出收盘价在布林带上轨处且收盘价高于布林带中轨的股票
condition1 = df['close'].rolling(window=14).apply(lambda x: x[-1] > bollinger_upper(x))
condition2 = df['close'].rolling(window=14).apply(lambda x: x[-1] > bollinger_mid(x))
condition3 = df['close'].rolling(window=14).apply(lambda x: x[-1] > bollinger_lower(x))
selected_stocks = selected_stocks[condition1 & condition2 & condition3]
return selected_stocks
def optimize_strategy(selected_stocks, df):
# 选择更多的均线进行分析
condition = df['close'].rolling(window=20).apply(lambda x: x[-1] > bollinger_upper(x))
selected_stocks = selected_stocks[condition]
return selected_stocks
def final_strategy(selected_stocks, df):
# 结合其他技术指标进行分析
condition = df['close'].rolling(window=20).apply(lambda x: x[-1] > bollinger_upper(x) and x[-1] > bollinger_mid(x) and x[-1] > bollinger_lower(x))
selected_stocks = selected_stocks[
## 如何进行量化策略实盘?
请把您优化好的选股语句放入文章最下面模板的选股语句中即可。
select_sentence = '市值小于100亿' #选股语句。
模板如何使用?
点击图标右上方的复制按钮,复制到自己的账户即可使用模板进行回测。
## 如果有任何问题请添加 下方的二维码进群提问。


