问财量化选股策略逻辑
本选股策略选取满足振幅大于1、今日均线向上发散、日线MACD大于0的股票作为投资标的
选股逻辑分析
选股逻辑通过振幅指标判断波动性,通过均线和价格指标判断趋势,同时考虑MACD指标的多空情况,以避免轻易出现交叉点产生假信号。
有何风险?
该选股策略没有考虑到股票的基本面因素,可能忽略一些重要的市场信息。与此同时,该策略过于贪婪,可能造成收益的波动性过大,适用性较低。
如何优化?
应考虑加入一些基本面的评估指标,如市盈率、市净率、股息率等,进一步细化选股逻辑,以便更好地反映企业财务状况和发展前景。
最终的选股逻辑
本选股策略选取满足以下条件的股票:
- 振幅大于1;
- 今日收盘价上穿本周的均线;
- 日线MACD大于0。
同花顺指标公式代码参考
通达信指标公式代码:
// 计算DMI
H = MAX(HIGH, REF(CLOSE, 1));
L = MIN(LOW, REF(CLOSE, 1));
DMZ = IF((H + L) / 2 > REF((H+L)/2, 1), MAX(H - REF(HIGH,1), 0), 0);
DMF = IF((H + L) / 2 < REF((H+L)/2, 1), MAX(REF(LOW,1) - L, 0), 0);
TR = SUM(MAX(MAX(HIGH - LOW, ABS(HIGH - REF(CLOSE, 1))), ABS(LOW - REF(CLOSE, 1))), 30);
DIZ = SUM(DMZ, 30) / TR * 100;
DIF = SUM(DMF, 30) / TR * 100;
// 计算MACD
DIFMA = MA(DIF, 9);
MACD = (DIF - DIFMA) * 2;
// 选出符合条件的股票
CONDITION = AMPLITUDE>1 AND CROSS(CLOSE,MA(CLOSE, 5)) AND MACD>0;
python代码参考
import tushare as ts
import pandas as pd
def select_stock(market='sh'):
selected_stocks = pd.DataFrame(columns=["amplitude", "code"])
for stock in ts.get_stock_basics().index:
if ts.get_stock_basics().loc[stock, 'code'][0:2] == '60' or ts.get_stock_basics().loc[stock, 'code'][0] == '0':
continue
data = ts.get_k_data(stock, start='2021-01-01', end='2021-06-30', ktype='D', autype='qfq')
if len(data) != 120:
continue
if data["amplitude"][-1] < 1:
continue
ma_week = data["close"].rolling(window=5).mean()
if not (data["close"][-1] > ma_week[-1] and data["close"][-1] > data["close"][-2]):
continue
macd, signal, hist = talib.MACD(data["close"].values, fastperiod=12, slowperiod=26, signalperiod=9)
if not (macd[-1] > 0 and macd[-1] > signal[-1]):
continue
selected_stocks = selected_stocks.append({
"amplitude": data["amplitude"][-1],
"code": stock
}, ignore_index=True)
return selected_stocks
print(select_stock(market='sz'))
以上代码仅供参考,实现方法会因投资人情况和市场环境而异。
## 如何进行量化策略实盘?
请把您优化好的选股语句放入文章最下面模板的选股语句中即可。
select_sentence = '市值小于100亿' #选股语句。
模板如何使用?
点击图标右上方的复制按钮,复制到自己的账户即可使用模板进行回测。
## 如果有任何问题请添加 下方的二维码进群提问。
