(supermind量化-)振幅大于1、下午大单净流入、三个技术指标同时金叉_

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

问财量化选股策略逻辑

本选股策略选取振幅大于1、下午大单净流入和三个技术指标同时金叉作为选股指标,选取结果中涨幅最高的个股作为投资标的。

选股逻辑分析

本选股策略同样结合了技术面和基本面的指标。振幅大于1可以筛选出股价波动较大的个股,下午大单净流入和技术指标的金叉反映了股票市场的资金流向和市场的强势程度。技术指标选取MACD、KDJ和RSI三个指标,确保了强势股票的综合选出。这些指标的综合考量可以提高选股的侧重点和筛选效果。

有何风险?

该选股策略同样过于注重技术面指标,而忽略了公司的基本面和长期发展潜力,存在一定的风险。同时,过度注重强势股票可能导致较高的估值和泡沫风险。

如何优化?

可以加入其他指标,如市盈率、市净率等,进行更全面的筛选,同时对选股策略进行持续的优化和修复,以提高其适用性和准确度。同时,在选取涨幅最高的个股时,可以加入更多的过滤条件,如股票市值、行业等,以提高投资标的的质量。

最终的选股逻辑

本选股策略选取振幅大于1、下午大单净流入和三个技术指标同时金叉作为选股指标,选取结果中涨幅最高的个股作为投资标的。

同花顺指标公式代码参考

振幅大于1: ABS((HIGH-LOW)/PRE_CLOSE) > 0.01

下午大单净流入: C - O > (0.005 * V - MA(V, 3)) / 10000

MACD: MACD(12,26,9)上穿MACD(12,26,9)

KDJ: KDJ(9,3)线上穿KDJ(9,3)的D线

RSI: RSI(14)金叉RSI(28)

python代码参考

# 引入Tushare库、Numpy库、Pandas库、TA-Lib库
import tushare as ts
import numpy as np
import pandas as pd
import talib

# 连接Tushare库
pro = ts.pro_api()

def select_stocks(n):
    selected_stocks = []
    selected_scores = []
    
    # 所有股票
    all_stocks = pro.stock_basic(exchange='', list_status='L', fields='ts_code')
    
    for ts_code in all_stocks["ts_code"]:
        # 获取股票数据
        k_data = pro.klines(ts_code=ts_code, start_date='1 year ago', end_date='today', freq='D')
        quote_data = pro.query('daily', ts_code=ts_code, start_date='1 year ago', end_date='today')
        macd, _, _ = talib.MACD(quote_data["close"], fastperiod=12, slowperiod=26, signalperiod=9)
        kdj_k, kdj_d = talib.STOCH(quote_data["high"], quote_data["low"], quote_data["close"], fastk_period=9, slowk_period=3, slowk_matype=0, slowd_period=3, slowd_matype=0)
        rsi14 = talib.RSI(quote_data["close"], timeperiod=14)
        rsi28 = talib.RSI(quote_data["close"], timeperiod=28)
        score = (ABS((k_data["high"] - k_data["low"]) / k_data["pre_close"]) > 0.01).all() and (quote_data["close"] - quote_data["open"] > (0.005 * quote_data["vol"] - MA(quote_data["vol"],3))/10000).all() and (macd[-1] > 0 and kdj_k[-1] > kdj_d[-1] and rsi14[-1] > rsi28[-1])
        if score:
            selected_stocks.append(ts_code)
            selected_scores.append(score.sum())
        if len(selected_stocks) == n:
            break
    
    # 返回涨幅最高的n只股票
    sorted_stocks = [x for _, x in sorted(zip(selected_scores,selected_stocks),reverse=True)]
    return sorted_stocks
    ## 如何进行量化策略实盘?
    请把您优化好的选股语句放入文章最下面模板的选股语句中即可。

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

    模板如何使用?

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


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

评论