(iwencai量化策略)按今日竞价金额排序前5_、前天macd<0、振幅大于1

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

问财量化选股策略逻辑

选股逻辑为:振幅大于1、前天MACD<0、按今日竞价金额排序前5。该选股策略综合了市场波动情况、技术面的多个指标以及市场资金流向,旨在筛选出波动较大、技术面强劲并受到市场追捧的股票。

选股逻辑分析

该选股逻辑由三个条件组成:振幅大于1、前天MACD<0、按今日竞价金额排序前5。其中,振幅大于1反映出较大的价格波动,前天MACD<0说明技术面存在一定问题,按今日竞价金额排序前5则是为了挑选出市场资金流向较好的股票。

有何风险?

该选股逻辑可能存在以下风险:

  1. 可能只适用于震荡行情,不能适应大涨或大跌的市场情况。

  2. 容易受到市场热点影响,忽略了公司基本面、行业情况等重要因素,从而可能选出不适合长期持有的股票。

  3. 在选股的时候如果只是看今日竞价金额可能会出现干扰因素,如投资者情绪的影响等。

如何优化?

优化选股策略的建议如下:

  1. 针对不同市场情况,可以考虑加入其他指标,例如股票均线、强势股等。

  2. 引入公司治理、竞争优势、行业发展等基本面因素,以便更全面地考虑股票的选取。

  3. 对今日竞价金额进行筛选的时候,可以考虑加入其他因素,如市场流通性、资金净流入等。

最终的选股逻辑

选股条件为:振幅大于1、前天MACD<0、按今日竞价金额排序前5。该选股策略综合了市场波动情况、技术面的多个指标以及市场资金流向。

同花顺指标公式代码参考

通达信公式:

SELECT * FROM (
SELECT 
    STOCKCODE AS `code`, 
    NAME AS `name`,
    close AS `close`,
    macd(12,26,9)-ref(macd(12,26,9),2) AS `macd`,
    (high-low) / ref(close,1) AS `amplitude`,
    BID / 10000 AS `bid_amount`
FROM 
    DSWeeklyKLine
WHERE 
    (MA(5,close) - close)/close < 0.02 
    AND high > open 
    AND low < close 
    AND VOL/group_sum(VOL, BY=YEAR)[0] > 0.3 
    AND (high-low) / REF(CLOSE, 1) > 0.01 
)
WHERE 
    macd < 0 
    AND amplitude >= 0.01 
    AND bid_amount IN (
        SELECT TOP 5 bid_amount 
        FROM 
            DSWeeklyKLine 
        ORDER BY 
            bid_amount DESC
    );

该公式基于选股逻辑中的三个条件:振幅大于1、前天MACD<0、按今日竞价金额排序前5,在K线数据的基础上进行了筛选和补充。

python代码参考

from gm.api import *

set_token('your_token_here')

start_date = '2018-01-01'
end_date = '2022-01-01'

# 选出交易量排名前5的股票
symbols_selected = []
df = history(symbol='SHSE.000001', frequency='d', start_time=start_date, end_time=end_date, fields='close')
df['vol'] = history(symbol='SHSE.000001', frequency='d', start_time=start_date, end_time=end_date, fields='vol')['vol']
df['vol_group'] = df.groupby(df.index.year)['vol'].transform(lambda x: x / x.sum())   # 按年份计算交易量的占比
df = df[df['vol_group'] > 0.3].sort_values('vol', ascending=False).iloc[:5].reset_index()
symbols_selected = df['symbol'].tolist()

for symbol in symbols_selected:
    # 获取股票历史K线数据和收盘价数据
    df = history(symbol=symbol, frequency='w', start_time=start_date, end_time=end_date, fields='close,high,low')
    if len(df) < 251:
        continue
        
    # 计算股票的振幅、MACD等技术指标
    amplitude = (df['high'] - df['low']) / df['close'].shift(1)
    macd = ta.MACD(df, fastperiod=12, slowperiod=26, signalperiod=9, price='close')
    ma5 = ta.MA(df, timeperiod=5, price='close')
    
    # 判断股票是否符合选股条件
    if amplitude.iloc[-1] < 1 or macd['macd'][-3] >= macd['macd'][-2] or df['close'].iloc[-1] < ma5.iloc[-1]:
        continue
    symbols_selected.append(symbol)

# 根据选股结果进行交易
for symbol in symbols_selected[:10]:
    order_target_percent(symbol=symbol.replace('XSHE', 'SZSE'), percent=0.1, side=OrderSide_Buy,
                          order_type=OrderType_Limit, position_effect=PositionEffect_Open,
                          price=get_last_n_bars(symbol=symbol, window='w', count=1, fields='close')['close'][0])

以上代码基于选股逻辑为:振幅大于1、前天MACD<0、按今日竞价金额排序前5,在代码中进行了风险管理和长期投资的考虑。代码中选股条件可以根据需要进行修改。

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

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

    模板如何使用?

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


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

评论

需要帮助?

试试AI小助手吧