量化交易之vn.py篇 - 同步持仓发单逻辑(非净头寸 净头寸)
"""同步持仓 非净头寸发单(逻辑部分的代码)
"""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. 期货品种的沉淀资金是未平仓的期货合约(持仓量)所占用的保证金. 期货品种的沉淀资金越大说明这个品种非常受资金喜欢. 相反,如果期货品种的沉淀资金越小,说明这 ...
- 量化交易之回测篇 - 海龟交易策略(初版)
""" 写这个模型花了小半天, 还没来得及测试, 先开源出来; 等期货回测器的cta分支没问题后,再测试该模型; PS: 为了方便模型的回测, 价格设置上确实有不合理的地 ...
- 量化交易之回测篇 - 重写vnpy自带的双均线策略
"""双均线策略作为测试期货回测器的一个测试策略, 在测试品种ag时出现了一个问题:回测时ag净值曲线无最大回撤值,说明ag在双均线策略上无回撤,理论上这是不可能的; 排 ...
- 量化交易之python基础篇 - 常规异常处理、在函数中主动抛出异常
# 常规异常处理 try:num = int(input("请输入一个整数:"))result = 100 / numprint(result) except ZeroDivisi ...
- 量化交易之回测篇 - 添加获取天勤合约数据api
from tqsdk import TqApi, TqAuth from public_module.tqz_extern.tools.pandas_operator.pandas_operator ...
- 【vn.py学习笔记(六)】vn.py constant源码阅读、委托生命周期
[vn.py学习笔记(六)]vn.py constant源码阅读.委托生命周期 写在前面 1 constant 1.1 Direction 1.2 Offset 1.3 Status 1.4 Prod ...
- Python实现股票量化交易学习进阶(二)之简单交易策略的定义实现
Python实现股票量化交易学习进阶第二篇之简单交易策略的定义实现 1.backtrader回测框架知识 2.需求一自定义MACD指标 3.需求二自定义实现KDJ指标 4.需求三自定义CCI指标 1. ...
- QUANT[2]:量化交易策略基本框架搭建
本文是量化交易教程的第二篇 (原文写的比较简单,编程的详解部分面向没有编程基础的人) QUANT[1]:从零开始量化交易 - プロノCodeSteel - CSDN博客 QUANT[2]:量化交易策略 ...
- 关于vn.py的环境配置和项目安装——各种错误一招解决
vn.py是基于Python的开源量化交易程序开发框架,可以即时进行开发回测以及实盘交易,而且相对于国内的一些其他的所谓免费的量化平台,vn.py是开源的,而且更加的底层,更加的灵活,这对于真正想要从 ...
最新文章
- 如何使用Java Enum
- 【蓝桥杯Java_C组·从零开始卷】第四节(附)、字符串常用函数
- 我和我的广告前端代码(六):webpack工程合并、也许我不需要gulp
- 使用Junit参数在更短的时间内编写更好的单元测试
- spring aop示例_Spring Profile模式示例
- shape的简单用法
- Win11任务栏空白怎么办 Win11任务栏空白解决办法
- fetch jsonp连接mysql_fetch跨域浏览器请求头待研究
- 华为交换机一次性进入多个接口_华为交换机交换机常用配置(认证、批量操作)...
- 【java笔记】Object类
- mysql tee_MySQL 使用tee记录语句和输出日志
- 数学方面的能力该怎么培养
- Experimental Release #2: Multiple Device Support
- matlab r2014a 序列号,Matlab R2014a 免费版
- Win10怎么打开管理员命令提示符窗口
- Disunity_V0.5.0 提取Unity生成的APK资源的后续探索
- HDAO去中心化社区自治平台,助力明星项目启航
- 13年草根程序员转型之路
- 打印程序在计算机上的应用程序,修复无法在计算机上运行的后台打印程序服务的操作步骤...
- [android] 运行编译报错:Entry name ‘assets/Icoxx.png‘ collided