(iwencai量化策略)竞价涨幅>-2<5_、资金强度由大到小、macd零轴以上

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

问财量化选股策略逻辑

选股逻辑:MACD零轴以上、资金强度由大到小、竞价涨幅>-2<5。

选股逻辑分析

该选股逻辑要求股票的MACD指标在零轴以上,表明股票的上涨势头较强。同时,要求股票的资金强度由大到小,表示市场资金对该股票的关注程度逐渐减弱。最后,要求股票的竞价涨幅在-2%到5%之间,以筛选出近期有一定波动但未到达涨停的股票。

有何风险?

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

  1. 忽略了公司实际业绩、估值、市场竞争等因素,只关注了MACD、资金流和竞价涨幅指标的状况;
  2. 竞价涨幅的选取范围有一定的主观性,可能存在一定误差,导致选股不准确。

如何优化?

为了克服上述风险,可以优化选股策略,例如:

  1. 加入更多的基本面指标,如ROE、EPS、应收账款周转率、资产负债率等指标,以便全面评估股票的价值和风险;
  2. 调整竞价涨幅的选取范围,如根据历史数据进行统计分析等方法,确定更加合理的选取范围。

最终的选股逻辑

综合以上分析,我们得到最终的选股逻辑:

MACD零轴以上、资金强度由大到小、竞价涨幅在-2%到5%之间。

同花顺指标公式代码参考

支持策略1:MACD零轴以上

MACD(12,26,9)
DIFF > 0 AND DEA > 0

支持策略2:资金强度

资金流强度(60)
SZ#

支持策略3:竞价涨幅

竞价涨幅(0, 8, yesterday)
SH#

python代码参考

import talib as ta
import pandas as pd
from jqdata import *

def select_stock(context):
    q = query(
          valuation.code, 
          valuation.circulating_cap, 
          indicator.eps, 
          indicator.net_profit_period_increase_ratio,
          valuation.market_cap,
          valuation.pe_ratio,
          valuation.pb_ratio,
          valuation.ps_ratio,
          valuation.pcf_ratio
        ) 
    df = get_fundamentals(q)
    df = df.dropna(subset=['net_profit_period_increase_ratio', 'pe_ratio', 'pb_ratio', 'ps_ratio', 'pcf_ratio'])
    df = df[df.circulating_cap > 0]
    df = df[df.eps > 0]
    df = df[df.market_cap > 100000000]
    df = df[df.apply(lambda x: x.code[:2] in ['60', '00', '30'], axis=1)]
    df = df[df.apply(lambda x: x.code[0] != '3' or x.code[:3] in ['300', '301', '302'], axis=1)]
    df = df[df.net_profit_period_increase_ratio.between(20, 100)]
    
    # MACD零轴以上
    stock_list = list(df['code'])
    macd_list = []
    for stock in stock_list:
        close = get_price(stock, end_date=context.current_dt, frequency='daily', fields='close', count=200)['close']
        macd, signal, _ = ta.MACD(close, fastperiod=12, slowperiod=26, signalperiod=9) 
        if macd[-1] > signal[-1] and macd[-2] < signal[-2]:  # MACD金叉
            macd_list.append(stock)
    
    # 资金强度由大到小
    strong_fund = []
    for stock in macd_list:
        x = get_money_flow(stock, end_date=context.current_dt, count=40, fields=['main_fund_in', 'main_fund_out'])
        strong = x.main_fund_in.rolling(10).sum().iloc[-1] > x.main_fund_out.rolling(10).sum().iloc[-1]
        if strong:
            strong_fund.append(stock)
            
    # 竞价涨幅在-2%到5%之间
    chosen_list = []
    for stock in strong_fund:
        jc = get_bars(stock, count=2, unit='1m', fields=['open', 'close'])
        increase_rate = (jc[-1]['close'] - jc[-1]['open']) / jc[-1]['open']
        if -0.02 < increase_rate < 0.05:
            chosen_list.append(stock)
    
    return chosen_list
    ## 如何进行量化策略实盘?
    请把您优化好的选股语句放入文章最下面模板的选股语句中即可。

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

    模板如何使用?

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


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

评论