关于订单有效期

buy/sell/close 方法有个参数 valid 控制订单的有效期,也就是到哪一天(含)之前订单都有效
但是,有效期对市价单和收盘价单是不起作用的,这两种订单肯定会在下一个实际bar上成交,对其他类型的订单。比如限价单,有效期起作用。

valid参数的值

1、买单有效期截止到valid 这一天的 23时59分59秒 (秒)

from datetime import timedeltadef next(self):#当前日期时间之后三个自然日内有效valid = self.data.datetime.datetime(0) + timedelta(days=3)self.buy(size=100,valid=valid,exectype=bt.Order.Limit,price=10
)

2、根据实际bar数量(非自然日)来确定有效期

from datetime import timedeltadef next(self):# 当前bar后面10根bar的结束时间到期valid = self.data.datetime.datetime(10)self.buy(size=100,valid=valid,exectype=bt.Order.Limit,price=10
)

关于涨停、跌停

是指开盘即涨停一直持续到收盘为止的K线形态。因为这种K线形态类似于汉字的一,因此称为一字涨停。
一字涨停的股票因为开盘就有大量买单封住涨停,而卖单数量远远小于买单。
代表人们对这只股票强烈看好,所以在一字涨停期间,几乎不可能买到这支股票

涨停:无法执行买单;跌停,无法执行卖单

import datetime
import backtrader as bt
from feed import feed
from logger import lg
import backtrader.indicators as btindclass SmaCross(bt.Strategy):params = dict(period=5)def __init__(self):self.order = Noneself.move_average = bt.ind.MovingAverageSimple(self.data.close,period=self.p.period)def log(self, txt, dt=None):dt = dt or self.data.datetime.date(0)if isinstance(dt, float):dt = bt.num2date(dt)lg.info('%s, %s' % (dt.isoformat(), txt))def notify_order(self, order):typ = lambda: "Buy" if order.isbuy() else "Sell"self.log(f'订单状态 {order.getstatusname()} 订单类型 {typ()}')if order.status in [order.Submitted, order.Accepted]:self.order = orderreturnif order.status in [order.Completed]:self.log(f' {typ()} 订单执行价格 {order.executed.price}')self.order = Nonedef notify_trade(self, trade):if trade.isclosed:self.log(f'毛收益 {trade.pnl}, 扣佣后收益 {trade.pnlcomm}, 佣金 {trade.commission}')def next(self):if self.order:returnif not self.position:if self.data.close[-1] < self.move_average[-1] \and self.data.close[0] > self.move_average[0]:validday = self.data.datetime.datetime(1)# 次日涨停价判断条件upperprice = self.data.close[0] * 1.1 - 0.02# 必然触发涨停逻辑# upperprice = self.data.close[0] * 1.1 - 5self.order = self.buy(size=100,valid=validday,exectype=bt.Order.Limit,price=upperprice)elif self.data.close[-1] > self.move_average[-1] \and self.data.close[0] < self.move_average[0]:validday = self.data.datetime.datetime(1)# 次日一字跌停判断条件# lowerprice = self.data.close[0] * 0.9 + 0.02# 必然触发一字跌停lowerprice = self.data.close[0] * 0.9 + 5self.log(f'卖单跌停价格 {lowerprice}')self.order = self.sell(size=100,valid=validday,exectype=bt.Order.Limit,plimit=lowerprice)if __name__ == '__main__':cerebro = bt.Cerebro()cerebro.adddata(feed)cerebro.addstrategy(SmaCross)cerebro.broker.setcash(10000.0)cerebro.broker.setcommission(0.001)cerebro.broker.set_slippage_fixed(0.05)lg.warning(f'初始市值 {cerebro.broker.get_value()}')cerebro.run(stdstats=False)lg.warning(f'最终市值 {cerebro.broker.get_value()}')cerebro.plot()

Backtrader(十四)- Order订单 - 订单有效期与涨停跌停相关推荐

  1. Internal Order内部订单

    Internal Order内部订单 (2016-11-15 21:48:08) 标签: ko22 可用性检查 ko88 ko02 kka1 分类: CO控制[原创] 获取更多sap资料(教程,项目资 ...

  2. (二十二)查询订单的详情

    (二十二)查询订单的详情 案例2-查询订单的详情 需求:只有未付款的订单,点击"付款",跳转到订单的详情页面 步骤分析:1.在订单列表,点击付款,/store/order?meth ...

  3. OTM order management(订单管理)--ORDER BASE

    Order base 1: This page is accessed via Order Management > Purchase Order > Order Base 订单管理是用来 ...

  4. 品优购项目笔记(十四):微信支付

    品优购项目笔记(十四) 订单 订单三张表关系 提交订单 二维码 介绍 优势 容错级别 qrious二维码生成插件 微信支付 微信支付流程 项目支付流程 生成支付链接 查询是否支付成功 订单 订单三张表 ...

  5. WCF技术剖析之十四:泛型数据契约和集合数据契约(上篇)

    在.NET Framework 2.0中,泛型第一次被引入.我们可以定义泛型接口.泛型类型.泛型委托和泛型方法.序列化依赖于真实具体的类型,而泛型则刻意模糊了具体类型概念.而集合代表一组对象的组合,集 ...

  6. MySQL第十四次作业

    数据库第十四次作业 --电子商城项目 安装并配置MySQL 打开控制台 登录MySQL 数据库.表的基本操作 创建电子商城数据库"mall_姓名全拼" 使用电子商城数据库 创建用户 ...

  7. MYSQL第十四次作业---电子商城数据库搭建

    安装并配置MySQL 1.打开控制台 Win+r键 2.登录MYSQL 数据库.表的基本操作 创建电子商城数据库"mall_姓名全拼" create database mall_t ...

  8. 淘宝从几百到千万级并发的十四次架构演进之路!

    点击上方 好好学java ,选择 星标 公众号 重磅资讯.干货,第一时间送达 今日推荐:用好Java中的枚举,真的没有那么简单!个人原创+1博客:点击前往,查看更多 链接:https://segmen ...

  9. 淘宝服务端高并发分布式架构的十四次演进之路

    1.概述 本文以淘宝作为例子,介绍从一百个并发到千万级并发情况下服务端的架构的演进过程,同时列举出每个演进阶段会遇到的相关技术,让大家对架构的演进有一个整体的认知,文章最后汇总了一些架构设计的原则. ...

最新文章

  1. linux怎么运行exam,《 rh124-exam》linux练习
  2. 【学习笔记】ABAP OOD设计模式 - 桥接模式
  3. python如何区分文件类型_python通过文件头判断文件类型
  4. 智能安全实验室-杀马(Defendio) 2.5.0.426 :解决因日期超过28日(29/30/31)出现的“无效属性”导致杀马无法启动的问题;...
  5. 中兴服务器raid配置_HP服务器RAID配置
  6. Javascript特效:瀑布流
  7. 创建.ignore文件
  8. VS解决方案目录和工程目录
  9. Logistic回归公式推导和代码实现和Python中的sklearn.linear_model.LogisticRegression 的参数
  10. pdf图片怎么转换成word文档?
  11. [新闻]华为发布最高端核心路由器NE5000E集群系统
  12. Django之restframework中路由Routers
  13. Visual Studio Codec#
  14. 模拟cmos集成电路(7)
  15. python提前查成绩_利用Python来查询自己的成绩!想改成绩吗?我教你啊!
  16. KCNA考试 第五章:kubernetes学习实践
  17. time(),date(),microtime()…
  18. [翻译] LaTeX Error: Environment XXX undefined
  19. 由VC2010与VC2017数据结构差异造成的程序错误
  20. mysql数据库如何分组查询_数据库MySQL--分组查询

热门文章

  1. 酷雷曼一站式图片直播,助力品牌高效传播
  2. DAT的算法原理及实现
  3. UI自动化+python元素识别
  4. EPI——部分笔记 + 资源无偿分享(百度网盘)~
  5. 研究生中山大学计算机学院分数线,中山大学2017年硕士研究生复试分数线
  6. 3种高效的Tags标签系统数据库设计方案分享
  7. matlab中输入参数数目不足怎么回事,matlab输入参数数目不足
  8. 『HTMLCSS』第一个网页
  9. 牛客网Java编程题总结
  10. Futuremark 3DMark 2.17.7137,3DMark兼容性强大