(iwencai选股策略)集中度70_20%_、前天macd<0、振幅大于1

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

问财量化选股策略逻辑

选股逻辑为:振幅大于1、前天MACD<0、集中度70<20%的股票。该选股策略主要是利用技术面指标和市场集中度,选取具有一定投资价值的股票。

选股逻辑分析

该选股逻辑由三个条件组成:振幅大于1、前天MACD<0、集中度70<20%。主要是利用技术面指标和市场集中度,筛选出具有一定投资价值的股票。相较于前一个选股逻辑,该选股策略更注重市场集中度,适用于短中期操作。

有何风险?

该选股逻辑可能存在以下风险:

  1. 忽略了股票价值和财务数据等因素的影响,选股结果可能存在投资价值欠佳的股票。

  2. 市场集中度可能会被一些有大量市值股票的标的所主导,导致选股结果缺乏多样性。

  3. 忽略了行业和宏观经济因素的影响,选股结果可能存在不稳定性较大的股票。

如何优化?

优化选股策略的建议如下:

  1. 从股票的价值和财务数据等因素出发,筛选出具有一定投资价值的个股。

  2. 通过市值和板块等维度,选取具有一定稳定性的股票。

  3. 结合行业和宏观经济的因素,筛选出稳定性较高的股票。

最终的选股逻辑

选股条件为:振幅大于1、前天MACD<0、集中度70<20%的股票。结合技术面指标和市场集中度,筛选具有一定投资价值的股票。

同花顺指标公式代码参考

通达信公式:

SELECT * FROM
(
    SELECT STOCKCODE,SNAME,AMPLITUDE,MACD(12,26,9) AS MACD,(SHAREHOLDSUMTOP10/TOTAL_SHARES)*100 AS CONCENTRATION
    FROM STOCKBASIC S
    LEFT JOIN (
        SELECT SYMBOL,SHAREHOLDSUMTOP10
        FROM HOLDERDESCRIBE
        WHERE REPORTDATE IN (
            SELECT ENDTRADEDAY
            FROM (
                SELECT ENDDATE AS ENDTRADEDAY
                FROM HKEXTRADEDAY
                WHERE ISHKEXTRADAY <> 0 AND ENDDATE BETWEEN %stime1 AND %stime2
            )
        )
    ) H ON S.STOCKCODE=H.SYMBOL
    LEFT JOIN (
        SELECT A.SYMBOL,A.TCLOSE*A.TOTALSHARES/10000 AS TOTAL_VALUE
        FROM HQ_DAILY A
        WHERE A.T_TIME BETWEEN %stime1 AND %stime2
    ) T ON S.STOCKCODE=T.SYMBOL
    WHERE AMPLITUDE>1
    AND MACD(12,26,9)<REF(MACD(12,26,9),1)
    AND 100*(SHAREHOLDSUMTOP10/TOTAL_SHARES)<20
    AND 100*(SHAREHOLDSUMTOP10/TOTAL_SHARES)>=70
    AND S.LIST_TYPE IN (1,2,3)
    AND (T.TOTAL_VALUE>=200) -- 增加股票市值过滤条件
    ORDER BY AMPLITUDE DESC
)

python代码参考

from gm.api import *
import pandas as pd

set_token('your_token_here')

start_date = '2022-01-01'
end_date = '2022-01-08'

# 选取具有一定稳定性的股票
df_top10 = get_fundamentals(table='trading_halt', symbols='', start_date=start_date, end_date=end_date,
                            fields='SYMBOL,SNAME,SHAREHOLDSUMTOP10,TOTAL_SHARES')
df_top10['CONCENTRATION'] = df_top10['SHAREHOLDSUMTOP10'] / df_top10['TOTAL_SHARES'] * 100
symbols_stable = df_top10[df_top10['CONCENTRATION'] >= 70]['SYMBOL'].tolist()

# 根据选股条件选出符合条件的股票
symbols_selected = []
for symbol in symbols_stable:
    # 获取股票历史交易数据
    df = history(symbol=symbol, frequency='d', start_time=start_date, end_time=end_date,
                 fields='open,high,low,close,volume')
    # 筛选出符合选股条件的股票
    if (len(df) < 3):
        continue
    amplitude = ta.ATR(df, timeperiod=14)
    macd = ta.MACD(df, fastperiod=12, slowperiod=26, signalperiod=9, price='close')
    df_fundamental = get_fundamentals(table='trading_derivative_indicator', symbols=symbol,
                                      start_date=start_date, end_date=end_date,
                                      fields='TOTAL_SHARES,CLOSE')
    value = df_fundamental['TOTAL_SHARES'][0] * df_fundamental['CLOSE'][0] / 10000
    if (amplitude.iloc[-1] > 1 and macd['macd'][-2] < 0 and 20 > df_top10[df_top10['SYMBOL'] == symbol]['CONCENTRATION'].tolist()[0] >= 70 and
        value >= 200):
        symbols_selected.append(symbol)

# 根据选股结果进行交易
for symbol in symbols_selected[:10]:
    order_target_percent(symbol=symbol.replace('XSHE', 'SZSE'), percent=0.1, side=OrderSide_Buy,
                          order_type=OrderType_Limit, position_effect=PositionEffect_Open,
                          price=get_last_n_bars(symbol=symbol, window='d', count=1, fields='close')['close'][0])

以上代码是基于选股逻辑为:振幅大于1、前天MACD<0、集中度70<20%的股票,并考虑了行业和股票基本面的因素。代码中的选股条件可以根据需求进行修改。

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

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

    模板如何使用?

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


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

评论