问财量化选股策略逻辑
本选股策略选取振幅大于1、昨日非涨停板、DEA上涨的股票。
选股逻辑分析
该选股逻辑主要考虑了股票的价格走势,通过还原振幅、判断涨停板以及DEA指标的上涨趋势来筛选价格走势良好的股票,DEA是MACD指标的一部分,表示长期平滑移动平均线,其上涨趋势意味着股票近期价格具有一定的上涨动力。
有何风险?
该选股逻辑主要依赖于技术指标的判断,未考虑公司的基本面因素,如营收、利润、负债等情况,同时技术指标也存在一定的盲目性,其判断存在一定的主观性,容易受到市场波动性的影响,因此存在一定的风险。
如何优化?
可以加入其他基本面因素的筛选条件,并对不同的基本面因素赋予不同的权重,以综合判断股票的投资价值。同时,可以结合其他技术指标的判断,并利用机器学习等方法,对选股模型进行深度学习和筛选。
最终的选股逻辑
本选股策略选取振幅大于1、昨日非涨停板、DEA上涨的股票。
同花顺指标公式代码参考
本选股策略主要依赖于股票的涨幅、DEA指标等技术指标,DEA指标为MACD指标的一部分。同花顺指标代码如下:
MACD:EMA(CLOSE,12)-EMA(CLOSE,26),DIFF:EMA(CLOSE,12)-EMA(CLOSE,26),DEA:EMA(DIFF,9);
上涨:REF(DEA,1)<DEA
python代码参考
# 引入Tushare库
import tushare as ts
# 连接Tushare库
pro = ts.pro_api()
def select_stocks(n):
selected_stocks = []
today = pro.trade_cal(exchange='', is_open='1')["cal_date"].values[-1]
yesterday = pro.trade_cal(exchange='', is_open='1', end_date=today, count=2)["cal_date"].values[0]
# 筛选出振幅大于1、昨日非涨停板、DEA上涨的股票
quote = pro.limit_list(trade_date=yesterday, limit_type='U')
quote = quote.append(pro.limit_list(trade_date=yesterday, limit_type='D'))
quote = quote[~quote["ts_code"].str.startswith("300")]
quote = quote.drop_duplicates(subset="ts_code", keep=False)
quote = quote.merge(pro.daily(trade_date=yesterday, fields='ts_code, pct_chg, high, low, close'), on="ts_code")
quote_macd = pro.index_daily(ts_code="000001.SH", start_date="20180101", end_date=today,
fields="trade_date, close")
quote_macd["EMA12"] = quote_macd["close"].ewm(span=12).mean()
quote_macd["EMA26"] = quote_macd["close"].ewm(span=26).mean()
quote_macd["MACD"] = quote_macd["EMA12"] - quote_macd["EMA26"]
quote_macd["DIFF"] = quote_macd["MACD"].ewm(span=9).mean()
quote_macd = quote_macd.merge(quote_macd.shift(1)[["DIFF", "trade_date"]], on="trade_date", suffixes=("", "_1"))
quote_macd = quote_macd[quote_macd["DIFF"] > quote_macd["DIFF_1"]]
quote_finance = pro.fina_indicator(ts_code=quote["ts_code"].tolist(), start_date="20180101", end_date=today,
fields="ts_code, end_date, revenue")
quote_finance = quote_finance[quote_finance["end_date"].str.endswith("1231")]
quote_finance = quote_finance.merge(quote_finance[quote_finance["end_date"].str.startswith("2018")],
on="ts_code", suffixes=("_2021", "_2018"))
quote_finance["revenue_rate"] = quote_finance["revenue_2021"]/quote_finance["revenue_2018"]
quote = quote.merge(quote_finance[["ts_code", "revenue_rate"]], on="ts_code")
quote = quote[quote["revenue_rate"] > 1.1]
quote = quote[quote["high"] == quote["high"].rolling(2).max()]
quote = quote.merge(quote_macd[["trade_date"]], on="trade_date")
selected_stocks.extend(quote["ts_code"].tolist()[:n])
selected_stocks = list(set(selected_stocks))
return selected_stocks
## 如何进行量化策略实盘?
请把您优化好的选股语句放入文章最下面模板的选股语句中即可。
select_sentence = '市值小于100亿' #选股语句。
模板如何使用?
点击图标右上方的复制按钮,复制到自己的账户即可使用模板进行回测。
## 如果有任何问题请添加 下方的二维码进群提问。
