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
这段代码的主要步骤如下:
- 获取当前价格和时间:从 tick 对象中获取最新价格 price 和当前时间 cur_hm。
- 判断是否在交易时段:in_day 变量判断当前时间是否在 09:30 到 15:00 之间。
- 记录 Tick 数据:将当前价格 price 添加到 context.tick_series 列表中。
- 计算移动平均线:
- 当 context.ix 超过 1200(表示已经积累了足够的 Tick 数据)时,计算 context.tick_series 的平均值,作为移动平均线 ma。
- 判断交易信号:
- 平仓信号:如果 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
\