问财量化选股策略逻辑
- 至少5根均线重合的股票
- 圆弧形
- 100亿市值以内的无亏损企业
选股逻辑分析
这个策略基于以下假设:
- 股票价格的走势可以通过均线来反映。
- 圆弧形形态通常表示股票价格在某一区间内波动,可能会出现反转。
- 无亏损企业通常具有更好的经营状况和稳定性。
根据这些假设,我们可以使用以下步骤来实现这个策略:
- 选择至少5根均线,例如5日、10日、20日、50日和200日均线。
- 检查股票价格是否在均线之间波动,如果符合则继续进行下一步。
- 检查股票价格是否出现圆弧形形态,如果符合则继续进行下一步。
- 检查股票市值是否小于100亿,如果符合则继续进行下一步。
- 如果以上步骤都符合,则将该股票加入到股票池中。
有何风险?
这个策略存在以下风险:
- 均线的选取可能会对策略的准确性产生影响。
- 圆弧形形态的判断可能会出现误差。
- 股票市值的选取可能会导致某些股票被遗漏。
如何优化?
为了优化这个策略,我们可以考虑以下方法:
- 使用更多的均线来提高准确性。
- 使用更复杂的形态判断方法来减少误差。
- 考虑市值的其他限制条件,例如流通市值等。
最终的选股逻辑
以下是最终的选股逻辑:
- 选择至少5根均线,例如5日、10日、20日、50日和200日均线。
- 检查股票价格是否在均线之间波动,如果符合则继续进行下一步。
- 检查股票价格是否出现圆弧形形态,如果符合则继续进行下一步。
- 检查股票市值是否小于100亿,如果符合则继续进行下一步。
- 检查股票的流通市值是否小于10亿,如果符合则继续进行下一步。
- 如果以上步骤都符合,则将该股票加入到股票池中。
python代码参考
以下是使用pandas和numpy库实现这个策略的Python代码参考:
import pandas as pd
import numpy as np
def get_stock_prices(dataframe):
# 获取股票价格数据
stock_prices = dataframe['close'].values
return stock_prices
def get_rolling_mean(prices, n):
# 获取n周期的滚动平均值
rolling_mean = np.convolve(prices, np.ones(n), mode='full') / n
return rolling_mean
def get_rolling_std(prices, n):
# 获取n周期的滚动标准差
rolling_std = np.convolve(prices, np.ones(n), mode='full') / n
return rolling_std
def check_price_position(prices, moving_average):
# 检查股票价格是否在均线附近波动
position = np.sign(prices - moving_average)
return position
def check_rounding(prices, moving_average):
# 检查股票价格是否出现圆弧形形态
rounding = np.sign(prices - moving_average)
return rounding
def check市值_size(dataframe):
# 检查股票市值是否小于100亿
market_cap = dataframe['market_cap'].values
return market_cap
def check流通市值_size(dataframe):
# 检查股票流通市值是否小于10亿
market_cap = dataframe['market_cap'].values
return market_cap
def check_stock_pool(dataframe):
# 检查股票池是否为空
stock_pool = dataframe['code'].values
return stock_pool
def get_stock_pool(prices, moving_average, rounding, market_cap, market_cap_size, n):
# 获取股票池
stock_pool = []
for i in range(len(prices)):
if check_price_position(prices[i], moving_average) == 1 and check_rounding(prices[i], moving_average) == 1 and market_cap[i] < market_cap_size and market_cap[i] < n:
stock_pool.append(prices[i])
return stock_pool
def get_optimized_pool(prices, moving_average, rounding, market_cap, market_cap_size, n):
# 获取优化后的股票池
stock_pool = []
for i in range(len(prices)):
if check_price_position(prices[i], moving_average) == 1 and check_rounding(prices[i], moving_average) == 1 and market_cap[i] < market_cap_size and market_cap[i] < n:
stock_pool.append(prices[i])
return stock_pool
def main():
# 读
## 如何进行量化策略实盘?
请把您优化好的选股语句放入文章最下面模板的选股语句中即可。
select_sentence = '市值小于100亿' #选股语句。
模板如何使用?
点击图标右上方的复制按钮,复制到自己的账户即可使用模板进行回测。
## 如果有任何问题请添加 下方的二维码进群提问。


