(同花顺量化)15分钟周期MACD绿柱变短_、高点为两日最高、macd零轴以上

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

问财量化选股策略逻辑

选股逻辑:MACD零轴以上,高点为两日最高,15分钟周期MACD绿柱变短。

选股逻辑分析

该选股逻辑基于MACD和高点指标进行选股,并考虑了股票的短期趋势,即15分钟周期MACD绿柱的变化。同时,限制股票所处的板块,即不考虑科创板股票。该选股逻辑通过技术面和市场趋势综合选出符合要求的股票,适合追求短期收益的投资者。

有何风险?

该选股策略可能存在以下风险:

  1. 仅考虑MACD和高点指标,可能无法全面反映股票的长期表现,选股结果可能不准确。

  2. 依赖15分钟周期的MACD绿柱变化,可能对短期市场波动较为敏感,选股结果可能存在一定的波动性。

  3. 只选择非科创板股票,可能无法充分利用科创板带来的投资机会。

如何优化?

为减少风险,可以采用以下方式进行优化:

  1. 加入其它技术指标,如均线等指标,综合分析股票在市场中的表现。

  2. 选择不同周期的MACD指标,并考虑多周期的综合情况,降低单一技术指标对选股结果的影响。

  3. 在进行选股时,可以单独考虑科创板股票的情况,并根据需要决定是否将其纳入投资范围。

  4. 加入风控管理,避免选股结果的波动范围过大。

最终的选股逻辑

优化后的选股逻辑如下:

选股逻辑:满足MACD零轴以上、高点为两日最高、15分钟周期MACD绿柱变短、非科创板股票,并加入其它技术指标和风控管理的辅助。

同花顺指标公式代码参考

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

  • 高点为两日最高:
    H = HHV(HIGH,2)
    CROSS(H, REF(H, 1))

  • 15分钟周期MACD绿柱变短:
    DIF, DEA, MACD = MACD(L, H, C, fastperiod=12, slowperiod=26, signalperiod=9)
    REF(MACD, 1) - MACD > 0

  • 非科创板股票:
    NOT(industry_code.startswith('787'))

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,
        stock_account.industry_code_name_1,
        fundamental.eps
    ).filter(
        valuation.market_cap >= 500000000,
        valuation.circulating_market_cap >= 100000000,
        stock_account.exchanges != '北京A股',
        ~stock_account.industry_code.startswith('787')
    )
    df = get_fundamentals(q).sort_values(by=['market_cap', 'circulating_market_cap'])

    # MACD零轴以上
    macd_list = []
    for stock in df['code']:
        if df.loc[df['code'] == stock, 'macd'].iloc[-1] > 0:
            macd_list.append(stock)

    # 高点为两日最高
    top_point = []
    for stock in macd_list:
        x = attribute_history(stock, 2, '1d', ('high', 'close'))
        if x.high.iloc[-1] == max(x.high):
            top_point.append(stock)

    # 15分钟周期MACD绿柱变短
    buy_list = []
    for stock in top_point:
        df = get_bars(stock, 60*15, fields=['time', 'open', 'close', 'high', 'low'], count=10, include_now=True, end_dt=None, fq_ref_date=None)
        dif, dea, macd = ta.MACD(df['close'], fastperiod=12, slowperiod=26, signalperiod=9)
        if macd[-1] - macd[-2] > 0:
            buy_list.append(stock)

    result = buy_list[:10]

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

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

    模板如何使用?

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


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

评论