(supermind量化-)振幅大于1、昨日主力控盘、周线macd在零轴之上_

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

问财量化选股策略逻辑

本选股策略选取以下股票:振幅大于1、昨日主力控盘、周线MACD在零轴之上。该选股策略基于股票的技术面因素,以期能在短期内获得一定的收益。

选股逻辑分析

该选股策略首先筛选了振幅大于1、昨日主力控盘。然后在这些股票中再筛选周线MACD在零轴之上的股票进行选取。这些筛选条件能够过滤掉部分短期内表现不佳的股票,选出较为具有上涨潜力的股票。

有何风险?

该选股策略存在以下风险:1、过度依赖技术指标,忽略了更多的基本面因素;2、MACD等指标可能会出现滞后性,导致选到的股票涨势不如预期;3、短期内股票市场表现不一定完全符合技术面预期,具有风险。

如何优化?

可以加入更多的基本面指标和行业趋势等因素,以更全面地了解股票的市场走势和具体情况。同时也可以结合其他技术指标,如RSI、DMI等指标,对股票市场进行更全面和深入的分析。在实际操作中,需要根据市场行情和股票表现进行灵活调整,同时也要注意控制风险。

最终的选股逻辑

选取振幅大于1、昨日主力控盘、周线MACD在零轴之上的股票进行选取。

同花顺指标公式代码参考

  • MACD指标公式:
EMA12 :=EMA(C,12);
EMA26:=EMA(C,26);
MI := EMA12 - EMA26;
TMACD := EMA(MI,9);

python代码参考

import tushare as ts
import datetime

def select_stock():
    stock_list = ts.get_today_all()
    selected_stocks = stock_list[stock_list["volume"] > 0]
    selected_stocks = selected_stocks[selected_stocks["amplitude"] >= 0.01]
    selected_stocks = selected_stocks[selected_stocks["turnoverratio"] >= 5]
    selected_stocks = selected_stocks[selected_stocks["per"] >= 0]
    selected_stocks = selected_stocks[selected_stocks["pb"] >= 0]
    selected_stocks = selected_stocks[selected_stocks["circulating_market_cap"] > selected_stocks["total_market_cap"] / 2]
    selected_stocks = selected_stocks[selected_stocks["holders"] > 0]
    selected_stocks = selected_stocks[selected_stocks["is_st"] == "否"]
    
    macd_data = ts.get_hist_data(selected_stocks.iloc[0]['code'], ktype="W", retry_count=5, pause=0.01)
    if macd_data is None:
        return None
    ema_short = macd_data["close"].ewm(span=12).mean()
    ema_long = macd_data["close"].ewm(span=26).mean()
    dif = ema_short - ema_long
    dea = dif.ewm(span=9).mean()
    macd = (dif - dea) * 2
    
    today_date = ts.get_hist_data(selected_stocks.iloc[0]['code'], start=str(datetime.date.today()), end=str(datetime.date.today()), ktype="D", retry_count=5, pause=0.01)
    today_day_macd = (today_date['close'][0] - ema_short.iloc[-1]) / (ema_short.iloc[-1] - ema_long.iloc[-1])
    
    if today_day_macd <= 0:
        return None
    
    yesterday_tick = ts.get_tick_data(selected_stocks['code'][0], date=str(datetime.datetime.now().date() - datetime.timedelta(days=1)), src='tt')
    if yesterday_tick is None:
        return None
    
    yesterday_flow = yesterday_tick[0]['amount'] - yesterday_tick[0]['pre_amount']
    if yesterday_flow <= 0:
        return None
    
    morning_tick = yesterday_tick[yesterday_tick['time'] <= '11:30:00']
    afternoon_tick = yesterday_tick[yesterday_tick['time'] >= '13:00:00']
    morning_flow = morning_tick['amount'].sum() - morning_tick['pre_amount'].sum()
    afternoon_flow = afternoon_tick['amount'].sum() - afternoon_tick['pre_amount'].sum()
    if afternoon_flow <= 0 or morning_flow <= 0:
        return None
    
    yesterday_date = datetime.datetime.now() - datetime.timedelta(days=1)
    yesterday_ma = ts.get_hist_data(selected_stocks.iloc[0]['code'], start=str(yesterday_date.date()), end=str(yesterday_date.date()), ktype="D", retry_count=5, pause=0.01)
    ratio = today_date['volume'][0] / ts.get_tick_data(selected_stocks['code'][0], date=str(yesterday_date.date()), src='tt')[0]['volume']
    hld_ratio = selected_stocks["turnoverratio"] * ratio
    
    if yesterday_ma.iloc[0]['p_change'] > 9.8 or hld_ratio < 0.5:
        return None
    
    return selected_stocks

print(select_stock())

以上代码仅供参考,具体实现方法可以根据投资者需要和市场情况进行调整。

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

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

    模板如何使用?

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


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

评论