(iwencai选股策略)今日均线向上发散_、按个股热度从大到小排序名、振幅大于1

用户头像神盾局量子研究部
2023-09-01 发布

问财量化选股策略逻辑

选股逻辑为:振幅大于1、按个股热度从大到小排序、今日均线向上发散。将选股逻辑作为第一个标题放入段落中。

选股逻辑分析

该选股策略的逻辑如下:

  1. 振幅大于1:表示该股票交易活跃度较高;
  2. 按照个股热度进行排序:表示在符合条件下按照市场的热度进行排序,选择市场认可度高的个股;
  3. 今日均线向上发散:表示股票近期的价格走势向上并有一定的趋势性。

基于以上选择条件,可以筛选出市场认可度高、活跃度高、且具有趋势性的股票,有助于指导投资决策。

有何风险?

该选股策略可能存在以下风险:

  1. 均线向上发散指标只能反映股票的短期趋势,难以判断其长期走势;
  2. 个股热度指标容易受到市场情绪和投资者心理的影响,存在人为炒作、市场异常波动等风险;
  3. 挑选出来的股票可能会在未来出现行情变化,造成持仓风险。

如何优化?

为了提高选股的准确性和降低风险,可以从以下方面进行优化:

  1. 在考察个股热度时,需关注到不同行业、不同地区的独特特点,避免受盲目追涨杀跌的影响;
  2. 均线发散指标只能反映股票的短期趋势,为了更好地捕捉其长期涨势,可以引入其他技术指标进行分析,如MACD、KDJ指标等;
  3. 在考察股票时,需要同时考虑其基本面和财务数据,全面判断股票的价值潜力和风险。

最终的选股逻辑

综合以上分析和优化,我们最终的选股逻辑为:
在符合振幅大于1、按个股热度从大到小排序、今日均线向上发散等综合条件下,同时考虑股票基本面数据、公司发展情况、风险评估等因素,综合分析选出符合长期价值投资的个股,并进行相应的持有操作。在操作上,考虑到市场波动,进行定期的卖出操作,并及时调整策略,避免风险。

同花顺指标公式代码参考

该策略可引入以下指标进行辅助分析:

  1. 振幅指标:
    振幅:
((HIGH-LOW)/REF(CLOSE,1))>0.01
  1. 个股热度指标:
    个股热度指标:
SORT_BY_DESC(stock_heat/)
  1. 均线向上发散指标:
    MA均线向上发散:
((MA(C,5)>MA(C,10)) AND (MA(C,10)>MA(C,20)) AND (MA(C,20)>MA(C,60)) AND (MA(C,60)>MA(C,120)))

python代码参考

以下是使用Python进行选股的代码实现示例:

import pandas as pd
import tushare as ts
from pyecharts.charts import *
from pyecharts.options import *

# 获取符合条件的股票代码
def get_selected_codes():
    codes = ts.get_today_all()["code"].tolist()
    selected_codes = []
    for code in codes:
        df = ts.get_stock_basics()
        name = df.loc[code]["name"]
        if code.startswith("ST"):
            continue
        df_daily = ts.get_hist_data(code)
        if df_daily.empty or (len(df_daily) < 252):
            continue
        if (df_daily.iloc[-1]["high"] - df_daily.iloc[-1]["low"]) / df_daily.iloc[-1]["open"] > 0.01:
            df_gzxg = ts.get_today_all()
            yesterday_close = df_gzxg[df_gzxg["code"]==code]["settlement"].values[0]
            if ((df_daily.iloc[-2]["high"] > yesterday_close * 1.098) or (df_daily.iloc[-2]["low"] < yesterday_close)):
                continue
            if ((df_daily.iloc[-1]["close"] > df_daily.iloc[-1]["ma5"]) and 
                    (df_daily.iloc[-2]["close"] > df_daily.iloc[-2]["ma5"]) and 
                    (df_daily.iloc[-3]["close"] > df_daily.iloc[-3]["ma5"]) and 
                    (df_daily.iloc[-4]["close"] > df_daily.iloc[-4]["ma5"]) and 
                    (df_daily.iloc[-5]["close"] > df_daily.iloc[-5]["ma5"]) and 
                    (df_daily.iloc[-1]["ma5"] > df_daily.iloc[-2]["ma5"]) and 
                    (df_daily.iloc[-2]["ma5"] > df_daily.iloc[-3]["ma5"]) and 
                    (df_daily.iloc[-3]["ma5"] > df_daily.iloc[-4]["ma5"]) and 
                    (df_daily.iloc[-4]["ma5"] > df_daily.iloc[-5]["ma5"]) and 
                    (df_daily.iloc[-1]["ma10"] > df_daily.iloc[-2]["ma10"]) and 
                    (df_daily.iloc[-2]["ma10"] > df_daily.iloc[-3]["ma10"]) and 
                    (df_daily.iloc[-3]["ma10"] > df_daily.iloc[-4]["ma10"]) and 
                    (df_daily.iloc[-4]["ma10"] > df_daily.iloc[-5]["ma10"]) and 
                    (df_daily.iloc[-1]["ma20"] > df_daily.iloc[-2]["ma20"]) and 
                    (df_daily.iloc[-2]["ma20"] > df_daily.iloc[-3]["ma20"]) and 
                    (df_daily.iloc[-3]["ma20"] > df_daily.iloc[-4]["ma20"]) and 
                    (df_daily.iloc[-4]["ma20"] > df_daily.iloc[-5]["ma20"]) and 
                    (df_daily.iloc[-1]["ma60"] > df_daily.iloc[-2]["ma60"]) and 
                    (df_daily.iloc[-2]["ma60"] > df_daily.iloc[-3]["ma60"]) and 
                    (df_daily.iloc[-3]["ma60"] > df_daily.iloc[-4]["ma60"]) and 
                    (df_daily.iloc[-4]["ma60"] > df_daily.iloc[-5]["ma60"]) and 
                    (df_daily.iloc[-1]["ma120"] > df_daily.iloc[-2]["ma120"]) and 
                    (df_daily.iloc[-2]["ma120"] > df_daily.iloc[-3]["ma120"]) and 
                    (df_daily.iloc[-3]["ma120"] > df_daily.iloc[-4]["ma120"]) and 
                    (df_daily.iloc[-4]["ma120"] > df_daily.iloc[-5]["ma120"])):
                selected_codes.append(code)
    stock_heat_dict = {}
    for code in selected_codes:
        df = ts.get_realtime_quotes(code)
        stock_heat = int(df["volume"]) * float(df["price"])
        stock_heat_dict[code] = stock_heat
    sorted_stock_heat = sorted(stock_heat_dict.items(), key=lambda x: x[1], reverse=True)
    selected_codes = [x[0] for x in sorted_stock_heat[:100]]
    return selected_codes

# 获取股票基本面数据
def get_stocks_info(codes):
    info_dict = {}
    for code in codes:
        df = ts.get_stock_basics()
        name = df.loc[code]["name"]
        info_dict[name] = {
            "industry": df.loc[code]["industry"], 
            "area": df.loc[code]["area"], 
            "pe": df.loc[code]["pe"],
            "pb": df.loc[code]["pb"]
        }
    return info_dict

# 选股策略
def stock_selection():
    selected_codes = get_selected_codes()
    selected_info = get_stocks_info(selected_codes)
    return selected_info

# 可视化展示
def show(selected_info):
  data = []
  for name, info in selected_info.items():
    data.append((name, info["industry"], info["area"], info["pe"], info["pb"]))
  # 绘制表格
  chart = (
      Table()
      .add(headers=["股票名称", "行业", "地区", "市盈率", "市净率"], rows=data)
      .set_global_opts(title_opts=opts.ComponentTitleOpts(title="股票挑选结果"))
  )
  return chart

# 选出符合条件的股票
selected_info = stock_selection()
print("符合条件的股票:", selected_info)

# 展示结果
chart = show(selected_info)
chart.render()

其中,在代码中需要根据实际需求进行相应的设置。

    ## 如何进行量化策略实盘?
    请把您优化好的选股语句放入文章最下面模板的选股语句中即可。

    select_sentence = '市值小于100亿' #选股语句。

    模板如何使用?

    点击图标右上方的复制按钮,复制到自己的账户即可使用模板进行回测。


    ## 如果有任何问题请添加 下方的二维码进群提问。
    ![94c5cde12014f99e262a302741275d05.png](http://u.thsi.cn/imgsrc/pefile/94c5cde12014f99e262a302741275d05.png)
收益&风险
源码

评论