(同花顺量化)30日平均线向上_、开盘价在十日线左右、至少5根均线重合的股票

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

问财量化选股策略逻辑

根据以上描述的选股逻辑,我们可以使用以下代码进行筛选:

import talib

def check_cooperation(ma1, ma2, ma3, ma4, ma5):
    # 计算五根均线的交叉点
    cross = talib.CROSS(ma1, ma2) + talib.CROSS(ma2, ma3) + talib.CROSS(ma3, ma4) + talib.CROSS(ma4, ma5) + talib.CROSS(ma5, ma1)
    # 判断交叉点的数量是否为5
    if len(cross) == 5:
        return True
    else:
        return False

def check_price_position(price, ma10):
    # 计算股票的开盘价是否在十日线附近
    if price >= ma10 and price <= ma10 + (ma10 * 0.1):
        return True
    else:
        return False

def check_average_direction(average):
    # 判断三十日平均线是否向上
    if average > average.shift(-30):
        return True
    else:
        return False

def check_cooperation_and_price_position(price, ma10, ma30):
    # 判断股票是否符合以上三个条件
    if check_cooperation(price, ma10, ma30, ma40, ma50) and check_price_position(price, ma10):
        return True
    else:
        return False

def get_cooperation_and_price_position股票池:
    # 获取符合条件的股票池
    cooperation_and_price_position = stock池[stock池['ma1'] <= stock池['ma10'] and stock池['ma30'] > stock池['ma10']]
    return cooperation_and_price_position

def get_stock_list(stock_pool):
    # 获取股票列表
    stock_list = stock_pool.index.tolist()
    return stock_list

def get_filtered_stock_list(stock_list):
    # 获取符合条件的股票列表
    filtered_stock_list = []
    for stock in stock_list:
        if check_cooperation_and_price_position(stock, stock池['ma10'], stock池['ma30']):
            filtered_stock_list.append(stock)
    return filtered_stock_list

def get_stock_data(stock_list):
    # 获取股票数据
    stock_data = stock池.loc[stock_list]
    return stock_data

def get_stock_data_with_average_direction(stock_list):
    # 获取股票数据并计算三十日平均线
    stock_data = stock池.loc[stock_list]
    average = stock_data['close'].rolling(window=30).mean()
    return stock_data, average

def get_stock_data_with_average_direction_and_cooperation(stock_list):
    # 获取股票数据并计算三十日平均线和五根均线的交叉点
    stock_data = stock池.loc[stock_list]
    average = stock_data['close'].rolling(window=30).mean()
    cross = talib.CROSS(stock_data['close'], average)
    return stock_data, average, cross

def get_stock_data_with_average_direction_and_price_position(stock_list):
    # 获取股票数据并计算三十日平均线、五根均线的交叉点和股票的开盘价是否在十日线附近
    stock_data = stock池.loc[stock_list]
    average = stock_data['close'].rolling(window=30).mean()
    cross = talib.CROSS(stock_data['close'], average)
    price = stock_data['open']
    return stock_data, average, cross, price

def get_stock_data_with_average_direction_and_price_position_and_cooperation(stock_list):
    # 获取股票数据并计算三十日平均线、五根均线的交叉点、股票的开盘价是否在十日线附近和股票是否符合以上三个条件
    stock_data = stock池.loc[stock_list]
    average = stock_data['close'].rolling(window=30).mean()
    cross = talib.CROSS(stock_data['close'], average)
    price = stock_data['open']
    return stock_data, average, cross, price

def get_stock_data_with_average_direction_and_price_position_and_cooperation_and_filter(stock_list):
    # 获取股票数据并计算三十日平均线、五根均线的交叉点、股票的开盘价是否在十日线附近、股票是否符合以上三个条件和股票是否在股票池中
    stock_data = stock池.loc[stock_list]
    average = stock_data['close'].rolling(window=30).mean()
    cross = talib.CROSS(stock_data['close'], average)
    price = stock_data['open']
    return stock_data, average, cross, price

def get_filtered_stock_data(stock_data, average, cross, price):
    # 获取符合条件的股票数据
    filtered_stock_data = []
    for stock in stock_data

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

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

模板如何使用?

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


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

评论