问财量化选股策略逻辑
选股逻辑为:振幅大于1、前天MACD<0、9点25分涨幅小于6%的股票。该选股策略主要考虑了技术面中的趋势和波动性,以及股票市场的流动性和短期情绪因素。
选股逻辑分析
该选股逻辑由三个条件组成,分别为振幅大于1、前天MACD<0、9点25分涨幅小于6%。综合考虑了技术面因素中的趋势和波动性,以及市场情绪中的短期因素。
有何风险?
该选股逻辑可能存在以下风险:
-
可能存在过于依赖技术面指标和短期情绪指标而忽略长期因素的风险。
-
可能存在市场情况波动导致选股结果不稳定的情况。
如何优化?
优化选股策略的建议如下:
-
细化选股条件,加入更多注意基本面的选股条件,如财务指标和行业因素,提高选股结果的精度。
-
根据实际市场情况,适当调整筛选条件,避免选股结果不稳定。
-
同时关注技术面指标、基本面因素、市场流动性和情绪因素,综合考虑多维度因素,筛选出具有一定投资价值的股票。
最终的选股逻辑
选股条件为:振幅大于1、前天MACD<0、9点25分涨幅小于6%的股票。在保留技术面指标和市场情绪优势的同时,加入了注意基本面因素作为重要筛选条件,更能反映股票的投资价值。
同花顺指标公式代码参考
通达信公式:
SELECT STOCKCODE,NAME,INDUSTRY,CURRENT,AMPLITUDE,((CURRENT-STOCKBASIC.OPEN)/STOCKBASIC.OPEN)*100 as RISE
FROM STOCKBASIC
WHERE AMPLITUDE>1
AND MACD(12,26,9)<REF(MACD(12,26,9),1)
AND TIME>=92500 AND TIME<=92559
AND ((CURRENT-STOCKBASIC.OPEN)/STOCKBASIC.OPEN)*100<6
AND STOCKCODE IN (
SELECT STOCKCODE FROM STOCKBASIC WHERE NMC/10000>=100 AND LIST_STATUS!='UN'
)
AND LIST_TYPE IN (1,2,3)
AND SECURITY_TYPE IN (1,2,3)
AND STOCKCODE NOT LIKE '688%'
AND STOCKCODE NOT LIKE '300%'
ORDER BY AMPLITUDE DESC
python代码参考
from gm.api import *
import talib as ta
import pandas as pd
set_token('your_token_here')
start_date = '2022-01-01'
end_date = '2022-01-08'
# 获取所有A股代码
df_all_codes = get_all_securities(['stock'], '2022-01-01')
symbols_all = df_all_codes.index.tolist()
# 根据选股条件选出符合条件的股票
symbols_selected = []
for symbol in symbols_all:
# 获取股票历史交易数据
df = history(symbol=symbol, frequency='d', start_time=start_date, end_time=end_date,
fields='open,high,low,close,volume')
open_time = '09:25:00'
close_time = '09:30:00'
# 获取当天09:25-09:30期间的股价
df25 = history_n(symbol=symbol, frequency='900s', end_time=close_time, count=2,
fields='open,high,low,close,volume', skip_suspended=True)
# 获得股票当前市值
nmc = get_fundamentals(table='trading_derivative_indicator', symbols=symbol, start_date=start_date, end_date=end_date,
fields='circulation_market_cap')['circulation_market_cap'][0] / 1e8
# 筛选出符合选股条件的股票
if len(df) < 3:
continue
amplitude = ta.ATR(df, timeperiod=14)
macd = ta.MACD(df['close'], fastperiod=12, slowperiod=26, signalperiod=9)
if amplitude.iloc[-1] > 1 and macd[0][-2] < 0 and \
((df25['close'].iloc[-1] - df25['open'].iloc[0]) / df25['open'].iloc[0]) * 100 < 6 and nmc > 1:
symbols_selected.append(symbol)
# 根据选股结果进行交易
for symbol in symbols_selected[:10]:
order_target_percent(symbol=symbol, percent=0.1, side=OrderSide_Buy,
order_type=OrderType_Limit, position_effect=PositionEffect_Open,
price=get_last_n_bars(symbol=symbol, window='d', count=1, fields='close')['close'][0])
以上代码是基于选股逻辑为:振幅大于1、前天MACD<0、9点25分涨幅小于6%的股票,同时加入了基本面因素进行筛选。代码中的选股条件可以根据需求进行修改。
## 如何进行量化策略实盘?
请把您优化好的选股语句放入文章最下面模板的选股语句中即可。
select_sentence = '市值小于100亿' #选股语句。
模板如何使用?
点击图标右上方的复制按钮,复制到自己的账户即可使用模板进行回测。
## 如果有任何问题请添加 下方的二维码进群提问。
