"""同步持仓 非净头寸发单(逻辑部分的代码)
"""for market_vt_symbol, bar in bars.items():# strategy positionstrategy_position = TQZSymbolOperator.tqz_get_strategy_position(market_vt_symbol=market_vt_symbol,strategy_data=self.strategy_position_dictionary)# real positionreal_position = self.tqz_get_real_position(market_vt_symbol=market_vt_symbol,direction=Direction.NET)if real_position is not strategy_position:self.real_pos[market_vt_symbol] = real_positionprint("vt_symbol:" + market_vt_symbol, end="  ")print("bar.datetime:" + str(bar.datetime), end="  ")if strategy_position == 0:if real_position > 0:lot = TQZPositionData.tqz_risk_control(lot=real_position)print("平多 " + str(lot) + " 手")# self.sell(vt_symbol=market_vt_symbol, price=bar.close_price, volume=lot)elif real_position < 0:lot = TQZPositionData.tqz_risk_control(lot=abs(real_position))print("平空 " + str(lot) + " 手")# self.cover(vt_symbol=market_vt_symbol, price=bar.close_price, volume=lot)elif real_position == 0:print("不做处理")passelif strategy_position > 0:if real_position > 0:if strategy_position > real_position:lot = TQZPositionData.tqz_risk_control(lot=(strategy_position - real_position))print("开多 " + str(lot) + " 手")# self.buy(vt_symbol=market_vt_symbol, price=bar.close_price, volume=lot)elif strategy_position < real_position:lot = TQZPositionData.tqz_risk_control(lot=(real_position - strategy_position))print("平多 " + str(lot) + " 手")# self.sell(vt_symbol=market_vt_symbol, price=bar.close_price, volume=lot)elif strategy_position == real_position:print("不做处理")passelif real_position < 0:lot_sell = TQZPositionData.tqz_risk_control(lot=abs(real_position))print("平空 " + str(lot_sell) + " 手 |", end=" ")# self.sell(vt_symbol=market_vt_symbol, price=bar.close_price, volume=lot_sell)lot_buy = TQZPositionData.tqz_risk_control(lot=strategy_position)print("开多 " + str(lot_buy) + " 手")# self.buy(vt_symbol=market_vt_symbol, price=bar.close_price, volume=lot_buy)elif real_position == 0:lot = TQZPositionData.tqz_risk_control(lot=strategy_position)print("开多 " + str(lot) + " 手")# self.buy(vt_symbol=market_vt_symbol, price=bar.close_price, volume=lot)elif strategy_position < 0:if real_position > 0:lot_buy = TQZPositionData.tqz_risk_control(lot=real_position)print("平多 " + str(lot_buy) + " 手 |", end=" ")# self.sell(vt_symbol=market_vt_symbol, price=bar.close_price, volume=lot_buy)lot_sell = TQZPositionData.tqz_risk_control(lot=abs(strategy_position))print("开空 " + str(lot_sell) + " 手")# self.short(vt_symbol=market_vt_symbol, price=bar.close_price, volume=lot_sell)elif real_position < 0:if abs(strategy_position) > abs(real_position):lot = TQZPositionData.tqz_risk_control(lot=abs(strategy_position) - abs(real_position))print("开空 " + str(lot) + " 手")# self.short(vt_symbol=market_vt_symbol, price=bar.close_price, volume=lot)elif abs(strategy_position) < abs(real_position):lot = TQZPositionData.tqz_risk_control(lot=abs(real_position) - abs(strategy_position))print("平空 " + str(lot) + " 手")# self.cover(vt_symbol=market_vt_symbol, price=bar.close_price, volume=lot)elif strategy_position == real_position:print("不做处理")passelif real_position == 0:lot = TQZPositionData.tqz_risk_control(lot=abs(strategy_position))print("开空 " + str(lot) + " 手")# self.short(vt_symbol=market_vt_symbol, price=bar.close_price, volume=lot)"""同步持仓 净头寸发单(逻辑部分的代码)
"""for market_vt_symbol, bar in bars.items():# strategy positionstrategy_position = TQZSymbolOperator.tqz_get_strategy_position(market_vt_symbol=market_vt_symbol,strategy_data=self.strategy_position_dictionary)# real positionreal_position_net = self.tqz_get_real_position(market_vt_symbol=market_vt_symbol,direction=Direction.NET)real_position_buy = self.tqz_get_real_position(market_vt_symbol=market_vt_symbol,direction=Direction.LONG)real_position_sell = self.tqz_get_real_position(market_vt_symbol=market_vt_symbol,direction=Direction.SHORT)if (real_position_net is not strategy_position) or (real_position_buy != 0 and real_position_sell != 0):self.real_pos[market_vt_symbol] = real_position_netself.write_log(str(market_vt_symbol) + "_strategy_position=" + str(strategy_position) + "|realposition=" + str(real_position_net))print("vt_symbol:" + market_vt_symbol, end="  ")if strategy_position == 0:  # 空仓状态if real_position_buy != 0:real_position_buy = TQZPositionData.tqz_risk_control(lot=abs(real_position_buy))print(f"平多 {str(real_position_buy)} 手")# self.sell(vt_symbol=market_vt_symbol, price=bar.close_price, volume=real_position_buy)passif real_position_sell != 0:real_position_sell = TQZPositionData.tqz_risk_control(lot=abs(real_position_sell))print(f"平空 {str(real_position_sell)} 手")# self.cover(vt_symbol=market_vt_symbol, price=bar.close_price, volume=real_position_sell)passelif strategy_position > 0:  # 多单if real_position_sell != 0:real_position_sell = TQZPositionData.tqz_risk_control(lot=abs(real_position_sell))print(f"平空 {str(real_position_sell)} 手")# self.cover(vt_symbol=market_vt_symbol, price=bar.close_price, volume=real_position_sell)passif abs(real_position_buy) > abs(strategy_position):real_position_buy = TQZPositionData.tqz_risk_control(lot=abs(real_position_buy) - abs(strategy_position))print(f"平多 {str(real_position_buy)} 手")# self.sell(vt_symbol=market_vt_symbol, price=bar.close_price, volume=real_position_buy)passelif abs(real_position_buy) < abs(strategy_position):real_position_buy = TQZPositionData.tqz_risk_control(lot=abs(strategy_position) - abs(real_position_buy))print(f"开多 {str(real_position_buy)} 手")# self.buy(vt_symbol=market_vt_symbol, price=bar.close_price, volume=real_position_buy)passelif abs(real_position_buy) == abs(strategy_position):print("正常 不处理")passelif strategy_position < 0:  # 空单if real_position_buy != 0:real_position_buy = TQZPositionData.tqz_risk_control(lot=abs(real_position_buy))print(f"平多 {str(real_position_buy)} 手")# self.sell(vt_symbol=market_vt_symbol, price=bar.close_price, volume=real_position_buy)passif abs(real_position_sell) > abs(strategy_position):real_position_sell = TQZPositionData.tqz_risk_control(lot=abs(real_position_sell) - abs(strategy_position))print(f"开空 {str(real_position_sell)} 手")# self.short(vt_symbol=market_vt_symbol, price=bar.close_price, volume=real_position_sell)passelif abs(real_position_sell) < abs(strategy_position):real_position_sell = TQZPositionData.tqz_risk_control(lot=abs(strategy_position) - abs(real_position_sell))print(f"开空 {str(real_position_sell)} 手")# self.short(vt_symbol=market_vt_symbol, price=bar.close_price, volume=real_position_sell)passelif abs(real_position_sell) == abs(strategy_position):print("正常 不处理")pass

量化交易之vn.py篇 - 同步持仓发单逻辑(非净头寸 净头寸)相关推荐

  1. 量化交易之回测篇 - 拉取合成历史沉淀资金数据(主连合约)

    """ 1. 期货品种的沉淀资金是未平仓的期货合约(持仓量)所占用的保证金. 期货品种的沉淀资金越大说明这个品种非常受资金喜欢. 相反,如果期货品种的沉淀资金越小,说明这 ...

  2. 量化交易之回测篇 - 海龟交易策略(初版)

    """ 写这个模型花了小半天, 还没来得及测试, 先开源出来; 等期货回测器的cta分支没问题后,再测试该模型; PS: 为了方便模型的回测, 价格设置上确实有不合理的地 ...

  3. 量化交易之回测篇 - 重写vnpy自带的双均线策略

    """双均线策略作为测试期货回测器的一个测试策略, 在测试品种ag时出现了一个问题:回测时ag净值曲线无最大回撤值,说明ag在双均线策略上无回撤,理论上这是不可能的; 排 ...

  4. 量化交易之python基础篇 - 常规异常处理、在函数中主动抛出异常

    # 常规异常处理 try:num = int(input("请输入一个整数:"))result = 100 / numprint(result) except ZeroDivisi ...

  5. 量化交易之回测篇 - 添加获取天勤合约数据api

    from tqsdk import TqApi, TqAuth from public_module.tqz_extern.tools.pandas_operator.pandas_operator ...

  6. 【vn.py学习笔记(六)】vn.py constant源码阅读、委托生命周期

    [vn.py学习笔记(六)]vn.py constant源码阅读.委托生命周期 写在前面 1 constant 1.1 Direction 1.2 Offset 1.3 Status 1.4 Prod ...

  7. Python实现股票量化交易学习进阶(二)之简单交易策略的定义实现

    Python实现股票量化交易学习进阶第二篇之简单交易策略的定义实现 1.backtrader回测框架知识 2.需求一自定义MACD指标 3.需求二自定义实现KDJ指标 4.需求三自定义CCI指标 1. ...

  8. QUANT[2]:量化交易策略基本框架搭建

    本文是量化交易教程的第二篇 (原文写的比较简单,编程的详解部分面向没有编程基础的人) QUANT[1]:从零开始量化交易 - プロノCodeSteel - CSDN博客 QUANT[2]:量化交易策略 ...

  9. 关于vn.py的环境配置和项目安装——各种错误一招解决

    vn.py是基于Python的开源量化交易程序开发框架,可以即时进行开发回测以及实盘交易,而且相对于国内的一些其他的所谓免费的量化平台,vn.py是开源的,而且更加的底层,更加的灵活,这对于真正想要从 ...

最新文章

  1. 如何使用Java Enum
  2. 【蓝桥杯Java_C组·从零开始卷】第四节(附)、字符串常用函数
  3. 我和我的广告前端代码(六):webpack工程合并、也许我不需要gulp
  4. 使用Junit参数在更短的时间内编写更好的单元测试
  5. spring aop示例_Spring Profile模式示例
  6. shape的简单用法
  7. Win11任务栏空白怎么办 Win11任务栏空白解决办法
  8. fetch jsonp连接mysql_fetch跨域浏览器请求头待研究
  9. 华为交换机一次性进入多个接口_华为交换机交换机常用配置(认证、批量操作)...
  10. 【java笔记】Object类
  11. mysql tee_MySQL 使用tee记录语句和输出日志
  12. 数学方面的能力该怎么培养
  13. Experimental Release #2: Multiple Device Support
  14. matlab r2014a 序列号,Matlab R2014a 免费版
  15. Win10怎么打开管理员命令提示符窗口
  16. Disunity_V0.5.0 提取Unity生成的APK资源的后续探索
  17. HDAO去中心化社区自治平台,助力明星项目启航
  18. 13年草根程序员转型之路
  19. 打印程序在计算机上的应用程序,修复无法在计算机上运行的后台打印程序服务的操作步骤...
  20. [android] 运行编译报错:Entry name ‘assets/Icoxx.png‘ collided

热门文章

  1. 二手苹果手机哪个性价比高?
  2. 基于java+springboot+mybatis+vue+elementui的古玩玉器交易系统
  3. 如何确定试管婴儿胚胎质量
  4. 智能家居系统的发展趋势
  5. HTML中来访时间,html记录用户的访问次数代码
  6. 强迫症患者之黑苹果优化(启动画面、CPU重命名、显示真实主板、开启12代CPU全核心)
  7. 计算机科学区别于数学和物理学,新编大学计算机基础
  8. 支付宝服务商第三方代发布小程序
  9. 九州云亮相中国国际工业博览会 展出最新边缘计算技术
  10. 华清远见上海中心22071班