(同花顺量化)10日涨幅大于0小于35_、资金强度由大到小、macd零轴以上

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

问财量化选股策略逻辑

选股逻辑:MACD零轴以上,资金流强度由大到小,10日涨幅大于0小于35。

选股逻辑分析

该选股逻辑结合了技术指标和股票的走势,旨在挖掘短期内有上涨趋势的、流动性好的股票。选股指标包括MACD、资金流强度和10日涨幅,其中MACD零轴以上可以排除不稳定的短期趋势,资金流强度由大到小有助于寻找受到资金热捧的股票,10日涨幅则可以挖掘具有一定上涨趋势和朝阳行业的股票。但是该选股逻辑也存在一些风险。

有何风险?

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

  1. 过度关注短期走势,可能忽略市场的长期趋势和基本面因素;

  2. 忽略了不同行业的差异,可能选取了一些已经处于过热行情和估值高企的股票;

  3. 对于市场行情的预测能力较低,可能出现选股失误或滞后的情况。

如何优化?

为减小风险,可以优化选股策略,例如:

  1. 增加对股票的基本面分析,多维度进行筛选;

  2. 根据不同行业和不同市场阶段,调整选股指标和策略;

  3. 引入人工智能技术和大数据分析,提高选股的准确性和预测能力。

最终的选股逻辑

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

选股逻辑:MACD零轴以上,资金流强度由大到小,10日涨幅大于0小于35,市值在前50%。

同花顺指标公式代码参考

MACD零轴以上

CROSS(JC,0) AND DIFF>DEA

资金流强度由大到小

资金流强度(30)
SZ#

10日涨幅大于0小于35

(low-REF(low,10))/REF(low,10)>=0 AND (close-REF(close,10))/REF(close,10)<=0.35

市值在前50%

sort_by([valuation.market_cap.asc(),valuation.circulating_market_cap.asc()])

Python代码参考

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

def select_stock(context):
    q = query(
        valuation.code,
        valuation.market_cap,
        valuation.circulating_market_cap,
        valuation.pe_ratio,
        valuation.pb_ratio,
        indicator.roe
    ).filter(
        valuation.market_cap >= 1000000000,
        valuation.circulating_market_cap >= 200000000,
        valuation.pe_ratio > 0,
        valuation.pb_ratio > 0,
        indicator.roe > 10,
        valuation.code.startswith('60')
    )
    df = get_fundamentals(q).sort_values(by=['market_cap', 'circulating_market_cap'])
    df = df[:len(df)//2]

    # MACD零轴以上
    macd_list = []
    for stock in df['code']:
        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=30, fields=['main_fund_in', 'main_fund_out', 'turnover_ratio'])
        if x.main_fund_in.rolling(5).sum().iloc[-1] > x.main_fund_out.rolling(5).sum().iloc[-1]:
            strong_fund.append([stock, x.turnover_ratio.mean()])
    strong_fund = sorted(strong_fund, key=lambda x: x[1], reverse=True)

    # 10日涨幅大于0小于35
    result = []
    for stock in strong_fund:
        x = get_price(stock[0], end_date=context.current_dt, frequency='daily', fields=['high', 'low', 'close'], count=10)
        if (x['low'][-1] - x['low'][:-1].min())/x['low'][:-1].min() >= 0 and (x['close'][-1] - x['close'][:-1].min())/x['close'][:-1].min() <= 0.35:
            result.append(stock[0])

    log.info("Chosen stocks:", result)
    return result
    ## 如何进行量化策略实盘?
    请把您优化好的选股语句放入文章最下面模板的选股语句中即可。

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

    模板如何使用?

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


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

评论