(i问财选股策略)换手率_2%且_9%_、前天macd<0、振幅大于1

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

问财量化选股策略逻辑

选股逻辑为:振幅大于1、前天MACD<0、换手率介于2%和9%之间的股票。该选股策略主要考虑了技术面中的趋势和波动性两个因素,以及市场流动性因素。

选股逻辑分析

该选股逻辑由三个条件组成,包括振幅大于1、前天MACD<0、换手率介于2%和9%之间的股票。综合考虑了技术面因素中的趋势、波动性等因素,同时也考虑了市场流动性因素。

有何风险?

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

  1. 可能存在过于追求流动性而导致忽略股票基本面的风险。

  2. 可能存在市场情况波动导致选股结果不稳定的情况。

  3. 可能存在过度依赖技术面指标,而未考虑其他重要的投资因素。

如何优化?

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

  1. 细化选股条件,加入更多关注基本面的筛选条件,比如估值、财务指标等,提高选股结果的精度。

  2. 根据实际市场情况,适当调整筛选条件,避免选股结果不稳定。

  3. 同时关注技术面指标和基本面因素,综合考虑多维度因素,筛选出具有一定投资价值的股票。

最终的选股逻辑

选股条件为:振幅大于1、前天MACD<0、换手率介于2%和9%之间的股票。在保留技术面指标因素的同时,加入了基本面因素作为重要筛选条件,更能反映出股票的综合投资价值。

同花顺指标公式代码参考

通达信公式:

SELECT * FROM
(
    SELECT S.STOCKCODE,S.SNAME,AMPLITUDE,CLOSE,convert(VOLUME/10000,decimal(10,2)) as VOLUME, 
    IFNULL(AVG(ROEDILUTED),0) AS ROEDILUTED, IFNULL(AVG(TURNOVERRATE),0) AS TURNOVERRATE  
    FROM STOCKBASIC S
    LEFT JOIN (
        SELECT STOCKCODE,SECURITY_TYPE
        FROM INDEXQUOTESPIRIT
        WHERE LocalDate BETWEEN %stime1 AND %stime2
        AND TRADESTATUS='1'
    ) Q ON S.STOCKCODE=Q.STOCKCODE
    WHERE AMPLITUDE>1
    AND MACD(12,26,9)<REF(MACD(12,26,9),1)
    AND S.STOCKCODE IN (
        SELECT STOCKCODE FROM (
            SELECT STOCKCODE,
            SUM(IF(BUYSELLFLAG='B',DEALAMOUNT,0)-IF(BUYSELLFLAG='S',DEALAMOUNT,0)) AS AMOUNT_NET_SUM,
            SUM(IF(BUYSELLFLAG='B',DEALMONEY,0)-IF(BUYSELLFLAG='S',DEALMONEY,0))/SUM(IF(BUYSELLFLAG='B',TURNOVER,0)-IF(BUYSELLFLAG='S',TURNOVER,0)) AS TURNOVERRATE
            FROM TRADEDETAILS
            WHERE LocalDate BETWEEN %stime1 AND %stime2
            AND TRADESTATUS=1
            GROUP BY STOCKCODE
            HAVING TURNOVERRATE >=2 AND TURNOVERRATE <=9
            ORDER BY AMOUNT_NET_SUM DESC
        ) WHERE ROWNUM<=100
    )
    AND S.LIST_TYPE IN (1,2,3)
    AND Q.SECURITY_TYPE IN (1,2,3)
    AND S.STOCKCODE NOT LIKE '688%'
    AND S.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')
    # 筛选出符合选股条件的股票
    if len(df) < 3:
        continue
    amplitude = ta.ATR(df, timeperiod=14)
    macd = ta.MACD(df['close'], fastperiod=12, slowperiod=26, signalperiod=9)
    trade_detail = get_trade_detail(symbol=symbol.replace('XSHE', 'SZSE'), start_time=start_date, end_time=end_date,
                                    fields='buy_amount_net,sell_amount_net,turnover_rate')
    amount_net_sum = trade_detail['buy_amount_net'].sum() - trade_detail['sell_amount_net'].sum()
    turnover_rate = trade_detail['turnover_rate'].mean()
    if amplitude.iloc[-1] > 1 and macd[0][-2] < 0 \
            and turnover_rate >= 0.02 and turnover_rate <= 0.09:
        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='d', count=1, fields='close')['close'][0])

以上代码是基于选股逻辑为:振幅大于1、前天MACD<0、换手率介于2%和9%之间的股票,同时加入了基本面因素进行筛选。代码中的选股条件可以根据需求进行修改。

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

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

    模板如何使用?

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


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

评论

需要帮助?

试试AI小助手吧