专享策略06 | 盘口策略CTP实盘版

news2024/11/25 7:10:13

 量化策略开发,高质量社群,交易思路分享等相关内容

『正文』

ˇ

大家好,我们在6月29日发布了盘口策略| 回测版,今天我们做好了CTP的实盘版本供俱乐部会员使用和玩耍,今天主要说明一下如何使用CTP实盘版本。

先回顾一下策略逻辑和模块:

策略逻辑

1.开仓条件:多头堆积次数大于X做多,空头堆积次数大于X做空.互为正反手。

2.固定止损:以开仓价格的百分比计算止损价。

3.跟踪止盈:以吊灯方法跟踪价格计算出场线。

策略逻辑非常简单,没有那么多弯弯绕。这也是我非常喜欢它的地方,不用动脑子。订单流策略不同于传统技术指标策略,它无法预测信号。如果是MACD或者KDJ,你甚至可以预判到是否会交叉,但是订单流不行。它是基于最小颗粒度计算的主动买卖力量,只能等到它出现你才知道。

策略模块

  1. 通过tick(或逐笔)数据计算of数据

  2. 基于of数据计算堆积信号或其他指标

  3. 合成堆积信号为bar数据进行回测

  4. 基于CTP实时生成OF数据及信号(实盘版)

回测报告

条件设置是:堆积大于5次,正反手,固定止损0.005,固定止盈0.01

回测已经调整好了手续费和滑点,具体品种要针对设置,这也是BackTrader麻烦的地方。为了避免偷价,我们用上一个Bar固定的信号判断,用本根bar的开盘价进行交易。这个回测是沪镍1分钟,回测的时间是2023年1月-6月。

可以点击《盘口策略 | 交易中最重要的是什么?》了解详情

实盘版

实盘版本与回测版的区别在于实时数据传过来时针对数据录入,周期聚合,指标计算,保存读取等模块进行了修改,同时也做了部分优化。交易模块的条件,参数与回测版一致。

模块介绍

该程序的主要目的是处理Tick数据并生成交易信号。代码中定义了一个tickcome函数,它接收到Tick数据后会进行一系列的处理,包括构建Tick字典、更新上一个Tick的成交量、保存Tick数据、生成K线数据等。其中涉及到的一些函数有:

1.on_tick(tick): 处理单个Tick数据,根据Tick数据生成K线数据。

2.tickdata(df, symbol): 处理Tick数据,生成K线数据。

3.orderflow_df_new(df_tick, df_min, symbol): 处理Tick和K线数据,生成订单流数据。

4.GetOrderFlow_dj(kData): 计算订单流的信号指标。

除此之外,代码中还定义了一个MyTrader类,继承自TraderApiBase,用于实现交易相关的功能。

交易函数解释

#下单函数 |  insert_order(self, exchange_id, instrument_id, order_price, order_vol, direction, offset_flag) |      录入报单请求。将订单结构体参数传递给父类方法ReqOrderInsert执行。 |      :param exchange_id:交易所ID。 |      :param instrument_id:合约ID。 |      :param order_price:报单价格。 |      :param order_vol:报单手数。 |      :param direction:买卖方向。 |      (‘买 : 0’,) |      (‘卖 : 1’,) |      :param offset_flag:开平标志,只有SHFE和INE区分平今、平昨。 |      (‘开仓 : 0’,) |      (‘平仓 : 1’,) |      (‘强平 : 2’,) |      (‘平今 : 3’,) |      (‘平昨 : 4’,) |      (‘强减 : 5’,) |      (‘本地强平 : 6’,) |      :return:  开多 |self.insert_order(data['ExchangeID'], data['InstrumentID'], data['AskPrice1'],1,b'0',b'0')  开空  self.insert_order(data['ExchangeID'], data['InstrumentID'], data['BidPrice1'],1,b'1',b'0')  卖平-平多  self.insert_order(data['ExchangeID'], data['InstrumentID'], data['BidPrice1'],1,b'1',b'3')  买平-平空  self.insert_order(data['ExchangeID'], data['InstrumentID'], data['AskPrice1'],1,b'0',b'3')

运行步骤

1.在future_account填写你的模拟账号:

   
 future_account = get_simulate_account(
        investor_id='',  # 账户
        password='',  # 密码
        server_name='电信1',  # 电信1、电信2、移动、TEST、N视界
        subscribe_list=[b'ni2308'],  # 合约列表
    )

如果是穿透好的实盘账号,用下面这个完整的future_account :

 future_account = FutureAccount(
         broker_id='',  # 期货公司BrokerID
         server_dict={'TDServer': "ip:port", 'MDServer': 'ip:port'},  # TDServer为交易服务器,MDServer为行情服务器。服务器地址格式为"ip:port。"
         reserve_server_dict={},  # 备用服务器地址
         investor_id='',  # 账户
         password='',  # 密码
         app_id='simnow_client_test',  # 认证使用AppID
         auth_code='0000000000000000',  # 认证使用授权码
         subscribe_list=[],  # 订阅合约列表
         md_flow_path='./log',  # MdApi流文件存储地址,默认MD_LOCATION
         td_flow_path='./log',  # TraderApi流文件存储地址,默认TD_LOCATION
     )

默认的品种是'ni2308'

2.class MyTrader是交易策略,可以修改相关的交易设定。默认的跟踪出场参数0.01,固定出场参数是0.005,开仓堆积默认是5(具体品种具体调整)。

3.调整交易周期是在def tickdata函数里的bardata变量的rule参数,默认是1T(1分钟),可以自行调整交易周期,代码里已经做了聚合处理。

4.运行程序,交易开始:

注:SIMNOW的模拟数据并不适合跑tick数据策略,它的价格没什么我问他,但是成交量有问题。比对之后发现,模拟的量数据比较稀薄。因此不建议用SIMNOW测试,可以尝试接真实的行情,交易用SIMNOW模拟双进程做,但是模拟的交易结果可能存在延迟,所以我打算小资金实盘测试了。

松鼠Quant日内图表

盘口策略是按照Bar线走完交易,很多人误解为是逐tick的高频策略,其实不是。专享06主要是用盘口数据计算出主动强弱的分歧指标,然后去抓一个波段的小周期趋势。它也不是传统意义上的CTA策略,其信号的出现并没有固定规律和特点。订单流策略不同于传统技术指标策略,它无法预测信号。如果是MACD或者KDJ,你甚至可以预判到是否会交叉,但是订单流不行。它是基于最小颗粒度计算的主动买卖力量,只能等到它出现你才知道。

专享06是2023年俱乐部最重要的一个策略,这个月我的小账户做好穿透后会在群内实盘测试,把最新的测试结果分享给大家,共同迭代。

本策略仅作学习交流使用,实盘交易盈亏投资者个人负责。

本文来自互联网用户投稿,该文观点仅代表作者本人,不代表本站立场。本站仅提供信息存储空间服务,不拥有所有权,不承担相关法律责任。如若转载,请注明出处:http://www.coloradmin.cn/o/740754.html

如若内容造成侵权/违法违规/事实不符,请联系多彩编程网进行投诉反馈,一经查实,立即删除!

相关文章

线上展厅设计方案,个性化自主打造720漫游展厅

导语: 随着科技的不断进步,线上展厅作为一种新型的展示方式,在现代社会得到了广泛的应用。线上展厅通过虚拟技术和创新设计,突破了时间和地域的限制,为企业和观众带来了全新的展览体验。本文将重点探讨线上展厅的优势和…

【工具使用】STM32CubeMX-单ADC模式规则通道配置

一、概述 无论是新手还是大佬,基于STM32单片机的开发,使用STM32CubeMX都是可以极大提升开发效率的,并且其界面化的开发,也大大降低了新手对STM32单片机的开发门槛。     本文主要讲述STM32芯片的ADC的配置及其相关知识。 二、…

6. Springboot快速回顾(集成Dubbo)

Dubbo是实现远程调用的一个框架,阿里巴巴开源的。远程调用就是B服务器可以调用A服务器的方法。大型项目会被拆分成多个模块,部署在不同的服务器上。若将公共模块集中部署在一台服务器上,可以方便其他服务器调用。因此,需要Dubbo。…

java代码实现自动录入数据

之前工作中遇到粘贴复制大量数据&#xff0c;研究一下java代码解放双手 模拟鼠标录入数据 引入依赖 <dependency><groupId>org.springframework.boot</groupId><artifactId>spring-boot-starter-web</artifactId><version>2.3.0.RELEASE&…

本地私有化部署大模型RWKV-懒人包一键安装享受专属免费大模型-RWKV Runner

仓库地址&#xff1a;https://github.com/josStorer/RWKV-Runner 预设配置已经开启自定义CUDA算子加速&#xff0c;速度更快&#xff0c;且显存消耗更少。如果你遇到可能的兼容性问题&#xff0c;前往配置页面&#xff0c;关闭使用自定义CUDA算子加速 如果Windows Defender说这…

Flutter:架构概览

概览 Flutter本质上是一个跨平台的UI工具集&#xff0c;允许在各自操作系统上复用同样的代码。 尽可能提供原生体验的高性能和复用代码。 开发中&#xff0c;Flutter应用在一个VM上运行&#xff0c;使得可在保留状态且无需重新编译情况下&#xff0c;进行热加载。 发行时&…

【教程】Unity 联动 MSMQ 消息通讯

开发平台&#xff1a;Unity 2021.3.7 通讯平台&#xff1a;Windows 10 依赖DLL&#xff1a;System.Messaging.dll   一、本文目标 了解与操作 Windows 平台上建立 Unity 与 MSMQ 通讯机制。实现基础的通讯功能。   二、准备&#xff1a;启用 MSMQ 服务项 注意&#xff1a;默…

操作符——区别C++前置++和后置++

这里写目录标题 1.问题引出Q:重载或者--的时候如何区分前置和后置&#xff1f; 2.C规范3.前后置实现4.为什么i;可以 i&#xff1b;不行 1.问题引出 Q:重载或者–的时候如何区分前置和后置&#xff1f; 以前C对前置和后置没有很好的办法可以区分&#xff0c;为了解决这个问题&…

面试之SpringAOP的理解:

AOP(面向切面编程)指的是那些业务本身无关&#xff0c;但是被业务模块所共同调用的业务逻辑或责任&#xff08;日志管理&#xff0c;权限管理等&#xff09;封装起来&#xff0c;便于减少系统的重复代码&#xff0c;降低系统见的耦合性&#xff0c;有利于未来系统的扩展性。 S…

IOS开发工程师的发展前景怎么样

本文目录一览 1&#xff0c;iOS开发工程师就业前景怎么样2&#xff0c;北大青鸟java培训IOS开发前景怎么样3&#xff0c;iOS开发工程师就业前景怎么样4&#xff0c;作为一个iOS开发程序员我的未来何去何从5&#xff0c;IOS开发工程师的发展前景怎么样6&#xff0c;ios开发工程…

Ubuntu 20.04 L2TP VPN 自动重连脚本,cron定时任务设置

1、连接VNP脚本 reconnect_l2tp_vpn.sh #!/bin/sh ppp0_flagifconfig | grep ppp0 echo $ppp0_flag if [ -z "$ppp0_flag" ];thenecho "connet to vpn ..."# connet vpn# echo PASSWORD &#xff5c; sudo -S 这样可以不用手动输入密码!echo abc123| su…

我爱学QT-QT信号和槽

1.给控件改名字 为了分析代码方便&#xff0c;我们要给控件改名字。要通俗易懂。 2.信号和槽 信号&#xff1a;信号就是指控件发出的特定的信号。 比如按钮的信号 槽&#xff1a;槽就是槽函数的意思&#xff0c;我们可以把槽函数绑定在某一个控件的信号上。 3.怎么关联信号…

IntelliJ IDEA中生成jar包并运行

1. 过程 依次选择菜单&#xff1a;File->Project Structure…&#xff0c;打开“Project Structure”界面。 在打开界面的左侧列表中选择&#xff1a;Artifacts&#xff0c;点击右侧出现的号。 在出现的菜单中依次选择&#xff1a;JAR->From modules with dependencies…

家政行业丨制作便捷高效的家政小程序

随着现代生活节奏的加快和家庭需求的多样化&#xff0c;越来越多的人开始寻找一种更方便、更高效的方式来获取家政服务。而家政小程序的兴起为这一需求提供了理想的解决方案。本文将简要介绍家政小程序是什么&#xff0c;探讨家政小程序的好处&#xff0c;并提供一些制作搭建家…

element上传文件对格式限制的处理

需求&#xff1a;上传的文件格式必须是pdf格式&#xff0c;方便查看 规定多种格式用逗号隔开 使用这个属性可以规定上传文件格式&#xff0c;但是有bug 可以手动改变显示的文件类型&#xff0c;还是可以传其他文件类型 所以需要在上传的时候限制上传的文件格式 上传组件 <…

X2000 Linux 调试VL53L4CD

由于VL53L4CD具有更高的精度&#xff0c;更低的功耗&#xff0c;所以尝试将VL53L4CD移植到X2000上进行测试。 一、下载驱动 en.VL53L4CD_LinuxDriver 二、SDK中加入驱动 1、加入源码 在\module_driver\devices下创建VL53L4CD文件夹&#xff0c;再将\en.VL53L4CD_LinuxDriver…

网络爬虫-jd滑块验证码

仅供研究学习使用。 目标站点 --> 京东网页登录 当我们输入账号密码后&#xff0c;点击登录&#xff0c;首先映入眼帘的是一个滑块&#xff0c;那我们先分析一下滑块吧。 上图是滑块的有关信息&#xff0c;左边的横线是请求的url&#xff0c;右边是参数&#xff0c;很显然&…

敏捷测试自动化

目录 前言&#xff1a; 敏捷宣言 敏捷软件开发VS传统方法 敏捷云服务 对什么进行自动化&#xff1f; 测试自动化的技巧 关于敏捷测试和自动化测试的关键信息 前言&#xff1a; 敏捷测试自动化是在敏捷开发环境中使用自动化工具和技术来支持测试活动的一种方法。它旨在提…

SQL使用(一):如何使用SQL语句去查询第二高的值

今天刷MYSQL题的时候刷到这样一个题&#xff1a; 编写一个 SQL 查询&#xff0c;获取 Employee 表中第二高的薪水&#xff08;Salary&#xff09; 。------------| Id | Salary |------------| 1 | 100 || 2 | 200 || 3 | 300 |------------例如上述 Employee 表&a…

时间序列预测 | Matlab自回归差分移动平均模型ARIMA时间序列预测,可实现多步预测,对未来的数据实现预测

文章目录 效果一览文章概述部分源码参考资料效果一览 文章概述 时间序列预测 | Matlab自回归差分移动平均模型ARIMA时间序列预测,可实现多步预测,对未来的数据实现预测 评价指标包括:MAE、RMSE和R2等,代码质量极高,方便学习和替换数据。要求2018版本及以上。 部分源码 %% …