VNPY中 Tick级别准高频交易简单策略

本文介绍了如何在VNPY框架下实现一个基于Tick数据的准高频交易策略。策略仅在开盘时间运行,根据最近10个Tick的买卖量对比决定开多或空单,并设置相应的止损和离场条件。由于Tick回测可能导致内存不足,因此限制回测为一天。此外,更新了止损单类型为限价单,并添加了订单状态锁定机制,防止并发下单问题。
摘要由CSDN通过智能技术生成

VNPY中,大多策略都是基于bar分钟级别;国内tick是一秒两笔,频率不算太高。这里尝试做了一个Tick基本准高频交易策略,只是为了实现思路。可以回测,不要直接用。。


回测时候记得把回测模式改为TICK_MODE, 数据库改为TICK_DB_NAME,还有setStartDate时候initdays设为0,不需要回读历史天数,只需要当天数据; 另外TICK回测超过一天系统就报错内存不够, 所以最好一天就够。 还有,把 currentTime改为开盘时间, 因为策略只在开盘时间运行,收盘前会自动平仓。


入场: 每次读 Tick ,分析过去 10 tick 的的总计,如果买量大于卖量,开多单 ;反之空单

          下单价格是当前tick市价;

止损:下单同时开反向2个价位的阻止单;

离场:下次TICK读取时候,如果已经是买入价格正向3个点,再次判断买卖量比,如果已经不符合,市价卖出;如果还是符合原来量比就极小持有,清掉之前阻止单,改挂当前价位反向2个点阻止单。


7 -24 更新,具体代码更新等验证后更新:

  1. 更改 stoporder 止损单为

好的,下面是一个使用vnpy写的双均线交易策略的示例代码: ```python from vnpy.app.cta_strategy import ( CtaTemplate, TickData, BarData, TradeData, OrderData, BarGenerator, ArrayManager ) class DoubleMaStrategy(CtaTemplate): """""" author = "vnpy" # 策略参数 fast_window = 10 slow_window = 20 fixed_size = 1 # 策略变量 pos = 0 fast_ma = 0.0 slow_ma = 0.0 ma_trend = 0 # 参数列表,保存了参数的名称 parameters = ["fast_window", "slow_window", "fixed_size"] # 变量列表,保存了变量的名称 variables = ["pos", "fast_ma", "slow_ma", "ma_trend"] def __init__(self, cta_engine, strategy_name, vt_symbol, setting): """""" super().__init__(cta_engine, strategy_name, vt_symbol, setting) self.bg = BarGenerator(self.on_bar) self.am = ArrayManager() def on_init(self): """""" self.write_log("策略初始化") self.load_bar(10) def on_start(self): """""" self.write_log("策略启动") def on_stop(self): """""" self.write_log("策略停止") def on_tick(self, tick: TickData): """""" self.bg.update_tick(tick) def on_bar(self, bar: BarData): """""" self.cancel_all() am = self.am am.update_bar(bar) if not am.inited: return # 计算快慢均线 self.fast_ma = am.sma(self.fast_window) self.slow_ma = am.sma(self.slow_window) # 判断交叉 if self.fast_ma > self.slow_ma and self.ma_trend <= 0: self.buy(bar.close_price+5, self.fixed_size) self.ma_trend = 1 elif self.fast_ma < self.slow_ma and self.ma_trend >= 0: self.sell(bar.close_price-5, self.fixed_size) self.ma_trend = -1 self.put_event() def on_trade(self, trade: TradeData): """""" self.put_event() def on_order(self, order: OrderData): """""" self.put_event() def on_stop_order(self, stop_order: StopOrder): """""" self.put_event() ``` 以上代码实现了一个简单的双均线交易策略,当快均线(10日均线)上穿慢均线(20日均线)时,做多开仓;当快均线下穿慢均线时,平掉全部仓位。
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值