(iwencai量化)底部抬高_、资金强度由大到小、macd零轴以上

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

问财量化选股策略逻辑

选股逻辑:MACD零轴以上,资金流强度由大到小,底部抬高的股票。

选股逻辑分析

该选股逻辑基于技术分析和市场底部抬高理论,运用MACD指标和资金流强度等技术指标,筛选出当前上升趋势的股票,并结合市场底部抬高理论,选取相对底部高位的品种。此选股策略结合了短线与长线的交易策略,偏中长线,寻找稳定增长股票,对于投资和交易都具有实用价值。

有何风险?

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

  1. 所选技术指标对行情变化的反应滞后,会出现过度交易的情况。

  2. 选股策略较为单一,没有根据市场情况进行调整,存在策略失效的风险。

如何优化?

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

  1. 加强对市场情况的分析和研究,调整选股指标和交易策略;

  2. 适当扩大技术指标的选择范围,加入其他交易因素,提高交易策略的综合性;

  3. 结合市场的变化和特点,灵活适时地调整选股指标和交易策略。

最终的选股逻辑

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

选股逻辑:MACD零轴以上,资金流强度由大到小,底部抬高的股票,并且在近期趋势恢复后,相对市场表现良好。

同花顺指标公式代码参考

  • MACD零轴以上
    CROSS(JC,0) AND DIFF>DEA

  • 资金流强度由大到小
    资金流强度(30)
    SZ#

  • 底部抬高
    TSRANK(LOW, 20)<10

  • 近期趋势恢复后相对表现良好
    RELYEXPRICE > X

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,
        income_statement.total_profit,
        income_statement.net_profit_after_tax,
        income_statement.total_operating_revenue,
        income_statement.total_cost,
        income_statement.operating_profit,
        stock_account.industry_code_name_1,
        stock_account.exchanges
    ).filter(
        valuation.market_cap >= 1000000000,
        valuation.circulating_market_cap < 10000000000,
        income_statement.total_profit > 0,
        income_statement.net_profit_after_tax > 0,
        (income_statement.total_operating_revenue - income_statement.total_cost - income_statement.operating_profit) > 0,
        stock_account.exchanges != '北京A股'
    )
    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)

    # 底部抬高
    bottom_high = []
    for stock in strong_fund:
        close = get_price(stock[0], end_date=context.current_dt, frequency='daily', fields=['close', 'high', 'low'], count=252)
        low_rank = ta.STDDEV((close['low'] - close['low'].rolling(20).min()), timeperiod=10)  # 底部抬高策略
        if low_rank.iloc[-1] < 10:
            bottom_high.append(stock[0])

    # 相对市场表现良好
    relative_price = []
    for stock in bottom_high:
        close = get_price(stock, start_date=context.current_dt - datetime.timedelta(days=120), end_date=context.current_dt, frequency='daily', fields=['close'], count=None)
        close['return_%'] = (close['close'] - close['close'].shift(1)) / close['close'].shift(1)
        close.loc[close.index[0], 'return_%'] = 0
        retrun_rank = close['return_%'].rank(pct=True)[-1]
        if retrun_rank > X:
            relative_price.append(stock)

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

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

    模板如何使用?

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


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

评论

需要帮助?

试试AI小助手吧