(supermind量化投资)task13/a/元宇宙、股票均价站在五日均线之上、kdj(

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

问财量化选股策略逻辑

该选股策略选择元宇宙行业中,符合以下条件的股票进行投资:股票均价站在五日均线之上,kdj(KDJ指标)(K值)增长。

选股逻辑分析

该选股策略的主要选股条件包括:选择元宇宙行业中的股票、股票均价站在五日均线之上、kdj(KDJ指标)的K值增长。

选择元宇宙行业的股票,可以体现对新兴行业的关注和投资。选择股票均价站在五日均线之上的股票,则显示出该股票较好的短期涨势。而选择kdj(KDJ指标)的K值增长的股票,则显示出该股票有望进一步上涨。

有何风险?

该选股策略可能会受到市场环境、政策变化等多种因素的影响,存在一些风险:

  1. 股票对市场判断错误;
  2. 选股条件过于简单,存在遗漏;
  3. KDJ指标的K值增长只是一个辅助指标,不能够充分反映股票的真实增长情况;
  4. 所选行业发展迅速,出现系统性风险。

如何优化?

为了减小选股策略受到的风险,可以进行如下优化:

  1. 加入更多的技术指标和股票价值分析,如SMA、MACD、PEG等,综合考虑多种指标;
  2. 更加深入的分析企业财务状况、业绩、投资风险等方面的指标,提高选股精度;
  3. 选择更合理的KDJ指标的K值条件,结合KDJ的D值和J值进行比较;
  4. 不仅考虑单一指标条件,而应该将多个指标综合分析。

最终的选股逻辑

该选股策略选择元宇宙行业中,符合以下条件的股票进行投资:股票均价站在五日均线之上,kdj(KDJ指标)的K值增长。

具体的选股条件为:

  • 元宇宙行情为GNXQ;
  • 股票均价站在五日均线之上,可以通过计算五日均价和股票的收盘价比较;
  • kdj(KDJ指标)的K值增长,可以通过计算KDJ指标中最近的两日的K值增长来判断。

因此,该选股策略的最终选股公式为:

BKI('gnxq') AND CROSS(MA(C,5), C) AND (REF(KDJ(K,9,3),2) - KDJ(K,9,3)) > 0

其中,REF(KDJ(K,9,3),2)表示KDJ(K,9,3)指标在前两天的值,KDJ(K,9,3)表示KDJ指标的K值。

同花顺指标公式代码参考

  • 元宇宙行情:GNBK('gnxq')
  • 五日均线:MA(C,5)
  • KDJ(K,9,3)指标:KDJ(K,9,3)
  • KDJ指标的K值增长:REF(KDJ(K,9,3),2) - KDJ(K,9,3)

在通达信中,可以使用如下指标代码:

CROSS(MA(C,5), C) AND (REF(KDJ(K,9,3),2) - KDJ(K,9,3)) > 0

Python代码参考

import pandas as pd
import tushare as ts
from pyalgotrade import technical
from pyalgotrade.technical import kd as kd

def stock_selector(date):
    ts.set_token('your_token')
    pro = ts.pro_api()
    data1 = pro.query('stock_basic', exchange='', list_status='L', fields='ts_code, name, industry, list_date, circ_mv')
    data2 = pro.daily(trade_date=date, fields='ts_code, close, pre_close')
    data2['chg'] = data2['close'] - data2['pre_close']
    data2['chg_sign'] = data2['chg'].apply(lambda x: 1 if x > 0 else -1 if x < 0 else 0)
    data3 = pd.merge(data1, data2[['ts_code', 'chg_sign']], on='ts_code', how='inner')
    data4 = data3.sort_values(by=['ts_code'])
    data5 = pd.read_csv('path/to/stock_sector.csv')
    data6 = pd.merge(data5, data4, on='ts_code', how='inner')
    data7 = data6[data6['sector_code'] == '000001.SH']
    data8 = data7[(data7['industry'] == '元宇宙')]

    data9 = pd.DataFrame()
    for ts_code in data8['ts_code']:
        if (data1.loc[(data1['ts_code'] == ts_code), 'circ_mv'].values[0] > 5000) and (data1.loc[(data1['ts_code'] == ts_code), 'circ_mv'].values[0] < 10000):
            df = pro.daily(ts_code=ts_code, start_date=(pd.to_datetime(date) - pd.DateOffset(days=30)).strftime('%Y%m%d'), end_date=date, fields='ts_code, close')
            if len(df) >= 9:
                close_prices = df['close'].tolist()
                high_prices = df['high'].tolist()
                low_prices = df['low'].tolist()
                period = 9
                k, d = kd.KDGenerator(high_prices, low_prices, close_prices, period, 3, 3).getKd()
                if k[-1] > k[-2]:
                    data9 = data9.append(data8[data8['ts_code'] == ts_code], ignore_index=True)
                
    if len(data9) > 0:
        return data9[['ts_code', 'name']]
    else:
        return pd.DataFrame()
    ## 如何进行量化策略实盘?
    请把您优化好的选股语句放入文章最下面模板的选股语句中即可。

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

    模板如何使用?

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


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

评论