BigQuant使用文档

153-tick级高频均线策略

由qxiao创建,最终由qxiao 被浏览 24 用户

策略概述

本策略是一个简单的趋势跟踪策略,主要思想是:

  • 判断趋势:通过计算一段时间内的 Tick 价格的移动平均线(MA),来判断当前价格是高于还是低于平均水平。
  • 跟随趋势:当价格高于移动平均线时,我们认为处于上涨趋势,就买入股票;当价格低于移动平均线时,我们认为处于下跌趋势,就卖出股票。

简单来说,就像冲浪一样,判断浪的方向,然后跟随浪的方向前进。

策略介绍

核心逻辑

策略的核心逻辑在 m1_handle_tick_bigquant_run 函数中,这个函数会在每一个 Tick 数据到来时被调用。请看代码:

def m1_handle_tick_bigquant_run(context, tick):

    price = tick.last_price # 最新价 
    cur_hm = tick.datetime.strftime('%H:%M') # 当前时间 
    in_day = cur_hm >= '09:30' and cur_hm <= '15:00' # 是否是白天交易时间段 
    stock_hold_now = context.portfolio.positions

    if not in_day:
        return 

    context.ix += 1
    context.tick_series.append(price)
    if context.ix < 1200:
        return 
    ma = np.nanmean(context.tick_series)
    # 平仓函数
    if price < ma and in_day  and  context.is_close_status == 0 :
        if len(stock_hold_now):
            context.order_target_percent(context.instruments[0], 0) 
            context.is_close_status = 1

    # 开仓函数
    if price >= ma and in_day and context.is_close_status == 1 :
        #做多
        context.order(context.instruments[0], 100)  
        context.pos_flag = 1 
        context.is_close_status = 0

这段代码的主要步骤如下:

  1. 获取当前价格和时间:从 tick 对象中获取最新价格 price 和当前时间 cur_hm。
  2. 判断是否在交易时段:in_day 变量判断当前时间是否在 09:30 到 15:00 之间。
  3. 记录 Tick 数据:将当前价格 price 添加到 context.tick_series 列表中。
  4. 计算移动平均线
    • 当 context.ix 超过 1200(表示已经积累了足够的 Tick 数据)时,计算 context.tick_series 的平均值,作为移动平均线 ma。
  5. 判断交易信号
    • 平仓信号:如果 price < ma 且当前持有股票,则卖出股票(context.order_target_percent(context.instruments[0], 0))。
    • 开仓信号:如果 price >= ma 且当前没有持有股票,则买入 100 股股票(context.order(context.instruments[0], 100))。

其他关键函数

  • m1_initialize_bigquant_run
    • 设置交易手续费。
    • 设置要交易的股票代码。
    • 关闭 T+1 交易(当天买入的股票可以当天卖出)。
  • m1_before_trading_start_bigquant_run
    • 设置每日需要订阅的股票,设置好初始状态。
    • 初始化一些变量,例如 context.tick_series(用于存储 Tick 价格),昨收价(用于计算收益率)
  • handle_order
    • 订单状态回调函数。
  • handle_trade
    • 成交状态回调函数。

涉及的知识点

Tick 数据

  • Tick 数据是最细粒度的市场数据,记录了每一笔成交和报价的变化。
  • 在本策略中,我们使用 Tick 数据来实时跟踪价格,并计算移动平均线。

移动平均线(MA)

  • 移动平均线是一种常用的技术指标,用于平滑价格波动,识别趋势方向。
  • 计算方法:将一段时间内的价格加总求平均。
  • 在本策略中,我们使用移动平均线作为判断趋势方向的依据。

交易信号

  • 交易信号是策略发出买入或卖出指令的依据。
  • 在本策略中,交易信号基于当前价格和移动平均线的关系:
    • 价格高于移动平均线,发出买入信号
    • 价格低于移动平均线,发出卖出信号

T+0 交易

  • T+0 交易是股票交易的一种规则,指当天买入的股票,也可以当天卖出。
  • 在本策略中,我们通过 context.set_stock_t1(0) 关闭了 T+1 交易,允许当天买入的股票当天卖出

风险提示

  • 本策略是一个简单的趋势跟踪策略,不保证盈利
  • 实盘交易有风险,请谨慎操作。
  • 请根据自身风险承受能力,合理配置资金。
  • 请充分了解交易规则和市场风险。

附录

https://bigquant.com/codesharev3/046943f4-deef-4816-b779-6dfd0541d3e1

\

{link}