Warning: file_exists(): open_basedir restriction in effect. File(/www/wwwroot/com.xiximiao.oa/com.cmstop/public/www/wp-content/db.php) is not within the allowed path(s): (/www/wwwroot/com.xiximiao.oa/com.cmstop/public/www/:/tmp/:/proc/:/var/log/nginx/:/www/wwwroot/com.xiximiao.oa/com.cmstop/public/:/www/wwwroot/com.xiximiao.oa/com.cmstop/vendor/:/www/wwwroot/com.xiximiao.oa/com.cmstop/ppk/) in /www/wwwroot/com.xiximiao.oa/com.cmstop/public/www/wp-includes/load.php on line 707
2098 强势首板追涨大师(超额142).py 超短线风格量化交易打板策略源码分享 » 轻知量化 QMT、PTrade、聚宽策略分享交流平台

2098 强势首板追涨大师(超额142).py 超短线风格量化交易打板策略源码分享

超短线打板共振策略

1. 策略概述

该策略结合了超短线打板交易的核心逻辑,旨在捕捉市场中首次涨停且具备共振效应的股票,旨在捕捉短期内首次涨停且具备上升趋势的股票。通过快速买入并持有,策略试图在短期内实现超额收益。策略的核心逻辑是:筛选出首次涨停、具备技术面与资金面共振的股票,并在达到特定盈利或持有时间后卖出。

2. 策略逻辑

  • 基准设定:策略以沪深300指数(000300.XSHG)作为基准,用于衡量策略的表现。
  • 选股逻辑: 

  • 交易逻辑

3. 风险控制

  • 手续费设定:买入时佣金为万分之三,卖出时佣金为万分之三加千分之一印花税,每笔交易佣金最低为5元。
  • 持仓限制:策略最多持有1只股票,集中投资。
  • 动态止损:通过设定盈利目标和持有时间,有效控制风险。

4. 适用场景

该策略适用于市场波动较大、短期内有明显涨停趋势的股票。策略的优势在于能够快速捕捉涨停股的短期趋势,适合短线投机。

策略代码

# 策略标题:追涨大师(超额142)

# 导入函数库
from jqdata import *
import math
## 初始化函数,设定要操作的股票、基准等等
def initialize(context):
    # 设定沪深300作为基准
    set_benchmark('000300.XSHG')
    # True为开启动态复权模式,使用真实价格交易
    set_option('use_real_price', True) 
    # 设定成交量比例
    set_option('order_volume_ratio', 1)
    # 股票类交易手续费是:买入时佣金万分之三,卖出时佣金万分之三加千分之一印花税, 每笔交易佣金最低扣5块钱
    set_order_cost(OrderCost(open_tax=0, close_tax=0.001, \
                             open_commission=0.0003, close_commission=0.0003,\
                             close_today_commission=0, min_commission=5), type='stock')
    # 持仓数量
    g.stocknum = 1
    # 购买时的价格
    g.buy_price = 0
    # 记录持股时间
    g.day ={}
  
    # run_daily(check_stocks, time='7:00', reference_security='000300.XSHG')
    run_daily(trade, time='9:50', reference_security='000300.XSHG')
# 用于拟合线性回归
def fit_linear(context,count,security1):
    '''
    count:拟合天数
    '''
    from sklearn.linear_model import LinearRegression
    security = security1
    df = history(count=count, unit='1d', field='close', security_list=security, df=True, skip_paused=False, fq='pre')
   
    df.drop(index=[context.previous_date])
    model = LinearRegression()
    x_train = np.arange(0,len(df[security])).reshape(-1,1)
    y_train = df[security].values.reshape(-1,1)
    
    
    model.fit(x_train,y_train)
    
    # # 计算出拟合的最小二乘法方程
    # # y = mx + c 
    c = model.intercept_
    m = model.coef_
    c1 = round(float(c),2)
    m1 = round(float(m),2)
    # print("最小二乘法方程 : y = {} + {}x".format(c1,m1))
    return m1    

# 筛选出主板良性股
def filter_paused_stock(context,stock_list):
    curr_data = get_current_data()
    stock_list = [stock for stock in stock_list if not curr_data[stock].is_st]
    stock_list = [stock for stock in stock_list if not curr_data[stock].paused] 
    stock_list = [stock for stock in stock_list if '退' not in curr_data[stock].name]
    stock_list = [stock for stock in stock_list if  (context.current_dt.date()-get_security_info(stock).start_date).days>360]
    stock_list=[stock for stock in stock_list if stock[0:2] != '68'] 
    stock_list=[stock for stock in stock_list if stock[0:3] != '300']
    return stock_list

# 开盘时的交易函数
def trade(context):
    # 获取购买列表
    stock_list = check_stocks(context)
    # 获取持仓列表
    sell_list = list(context.portfolio.positions.keys())
    count = len(sell_list)
    # 准备卖出
    if count > 0 :
        for stock in sell_list:
            g.day[stock] +=1
            stock_name = str(stock)
            open_price = get_current_data()[stock_name].day_open
            now_price = get_current_data()[stock_name].last_price
            # 如果从购买到现在涨了5%,卖出
            if now_price > 1.05*g.buy_price:
                order_target_value(stock,0)
                continue
            # 如果股票持有19日,卖出
            if g.day[stock] == 19:
                order_target_value(stock,0)
                continue
            rate = (open_price-now_price)/now_price
            # 如果股票今日到现在涨了4%。卖出
            if rate>0.04:
                order_target_value(stock,0)
    # 分配资金
    if len(context.portfolio.positions) < g.stocknum :
        Num = g.stocknum - len(context.portfolio.positions)
        Cash = context.portfolio.cash/Num
    else: 
        Cash = 0

    # 到点买来
    if not context.portfolio.positions.keys():
        if len(stock_list)!=0:
    # 买入股票
            for stock in stock_list:
                stock_name = str(stock)
                g.buy_price = get_current_data()[stock_name].last_price
                order_value(stock, Cash)
                g.day[stock] = 0

关键函数check_stocks的实现:

def check_stocks(context): 

 

 

超短线打板共振策略优化总结

5. 策略优化建议

  • 参数优化:可以调整涨停幅度、涨幅限制、持有时间等参数,以适应不同的市场环境。
  • 多因子结合:可以在涨停的基础上加入其他技术指标或基本面因子,进一步提升策略的稳定性。

策略关键词:

  • 涨停股、上升趋势、满仓持有、择时卖出、短线投机

策略特点:

  • 简单易行:策略逻辑清晰,易于理解和实现。
  • 集中投资:通过集中持有1只股票,最大化收益。
  • 风险可控:通过设定明确的买入和卖出信号,有效控制风险。

策略风险:

  • 市场风险:策略依赖于市场短期波动,若市场整体表现不佳,策略可能无法实现预期收益。
  • 流动性风险:涨停股可能存在流动性不足的风险,导致无法及时买入或卖出。
  • 回撤风险:集中投资可能导致较大的回撤,投资者需具备较高的风险承受能力。

策略总结:

追涨大师策略通过捕捉首次涨停且具备上升趋势的股票,满仓持有并在特定条件下卖出,旨在实现超额收益。策略适合短线投机者,但需注意流动性风险。通过参数优化和多因子结合,可以进一步提升策略的稳定性和收益。

2025-02-21
⚠️
本站资源大多来自网络,仅供网友学习交流,未经作者或上传书面授权,请勿作他用。
站长 vx: xiangyin615 或者 留言反馈 ,我们将尽快处理。
Notice: When you of the legal rights be violate, please stir to vx: xiangyin615
个人中心
购物车
优惠劵
搜索