期魔方风控模型之委托失败补单程序

你知道吗?只需简单设置,期魔方风控模型就能自动处理风控委托失败的订单,进行补单操作。

那么,这种功能适用于哪些场景呢?让我们一起来探讨一下!

在实际交易中,我们有时会遇到在任意交易终端(如文华博弈、随身行等)下单后,委托被挂起未成交,或者由于流动性不足导致部分订单未能完全成交。此时,期魔方的自动补单功能就能发挥关键作用。系统会自动撤销未成交的订单,并重新提交补单,确保不会错失交易机会,避免漏单风险。

这一自动补单功能不仅可以应用于全局账户风控,也可以针对特定合约进行精确控制。用户还可以自定义补单方式,选择市价、现价或对价等不同类型的报单方式,以适应不同的市场需求和风险管理策略。

这是这款风控模型的Python源码,适用于期魔方软件

#——————————————#

#文件类型:量化策略

#帮助文档:https://qmfquant.com/static/doc/code/strategyEdit.html

#期魔方,为您提供专业的量化服务

#——————————————#

from pydantic import BaseModel, Field

import time

import datetime

class Params(BaseModel, validate_assignment=True):

    “””参数映射模型”””

    set_symbol_mode:dict   = Field(default={“options”:[“全局”,”指定”],\

                                           “value”:”全局”},title =”跟踪对象”)

    symbols:str            = Field(default=”ag2510,rb2510″,title =”指定的合约”)

    over_time_second:int   = Field(default=10,title = “超时N秒撤单”)

    #run_dis:int            = Field(default=10,title  = “触发间隔”)

    #run_times:int          = Field(default=3,title  = “执行次数”)

    set_price_mode:dict   = Field(default={“options”:[“市价”,”现价”,”对价”],\

                                           “value”:”市价”},title =”报单方式”)

position                   = {}

def on_init(context):

    print(“[on_init] => 初始化…”)    

    context.orders =  {}

    context.wait_open_orders  = []

    print(“[on_init] => 初始化完成.”)

def on_tick(context):

    try:

        #判断订单是否超时 超时发起撤单  并重新开单

        for order_sys_id,order in context.orders.items():

            if order.get(“OrderStatus”) == “3”:

                #未成交

                insert_date = order.get(“InsertDate”)

                insert_time = order.get(“InsertTime”)

                order_time = datetime.datetime.strptime(

                    f”{insert_date} {insert_time}”,”%Y%m%d %H:%M:%S”).timestamp()

                current_time = datetime.datetime.now().timestamp()

                #print(f”订单时间戳=>{order_time}  当前时间戳=>{current_time}”)

                if current_time – order_time > int(context.over_time_second):

                    #撤单

                    print(f”订单时间:{insert_date} {insert_time}  当前的时间 {datetime.datetime.now()}”)

                    print(f”执行超时撤单 [{order_sys_id}]”)

                    action_order(order)

    except Exception as e:

        print(f”撤单判断过程有错误  {e}”)

    try:

        #把需要重开的订单依次执行开启

        while len(context.wait_open_orders) >0:

            order = context.wait_open_orders.pop(0)

            #执行开仓

            result = open_order(context,order)

            if result <=0:

                print(“重开失败”)

                context.wait_open_orders.append(order)

                break

            else:

                print(“报单成功”)        

        …

    except Exception as e:

        print(f”重开过程报错=>{e}”)

    …

def cook_order_key(order):

    return f”{

        order.get(‘InstrumentID’)}_{order.get(‘Direction’)}_{order.get(‘CombOffsetFlag’)}_{order.get(‘VolumeTotalOriginal’)}”

def open_order(context,order):

    try:

        symbol = order.get(“InstrumentID”)

        exchangid = order.get(“ExchangeID”)

        direction = order.get(“Direction”)

        volume    = order.get(“VolumeTotalOriginal”)

        comboffsetflag = order.get(“CombOffsetFlag”)

        tick = get_tick(symbol)

        if not tick.get(“ActionDay”):

            #tick获取失败 返回等待下一次运行

            return -1

        upper_price = float(tick.get(“UpperLimitPrice”))

        lower_price = float(tick.get(“LowerLimitPrice”))

        if context.set_price_mode.get(“value”) == “对价”:

            upper_price = float(tick.get(“BidPrice1”))

            lower_price = float(tick.get(“AskPrice1”))

        if context.set_price_mode.get(“value”) == “现价”:

            upper_price = float(tick.get(“LastPrice”))

            lower_price = float(tick.get(“LastPrice”))

        price  =upper_price if direction==”0″ else lower_price

        order  = {

            “symbol”:symbol,

            “exchangeid”:exchangid,

            “limitprice”:price,

            “direction”:direction,

            “orderpricetype”:”2″,

            “comboffsetflag”:comboffsetflag,

            “volumn”:volume

            }

        print(f”报单信息 => {order}”)

        send_order(order)

    except Exception as e:

        print(f”开单出现错误=>请查看GridTrade.close_order[{e}]”)

        print(e)

        return 0

    return 1

def on_allorder(context,data):

    “””按要求记录全局报单”””

    order_sys_id  = data.get(“OrderSysID”)

    instrument_id = data.get(“InstrumentID”)

    if context.set_symbol_mode.get(“value”) == “指定”:

        if instrument_id not in context.symbols: return

    order_status  = data.get(“OrderStatus”)

    offset         = data.get(“CombOffsetFlag”)

    if  order_status in “3”:

        context.orders[order_sys_id] = data

        print(“收到未成交报单信息”)

    elif order_status == “0”:

        if order_sys_id in context.orders:

            context.orders.pop(order_sys_id)

    elif order_status == “5”:

        if order_sys_id in context.orders:

            context.orders.pop(order_sys_id)

            #首单撤单信息 则按信息重新开启订单

            context.wait_open_orders.append(data)

            #执行开仓

            …

def on_order(context,data):

    “””报单回调函数”””

    #print(f”用来收集本地成交的记录  {data = }”)

    order_sys_id  = data.get(“OrderSysID”)

    instrument_id = data.get(“InstrumentID”)

    if context.set_symbol_mode.get(“value”) == “指定”:

        if instrument_id not in context.symbols: return

    order_status  = data.get(“OrderStatus”)

如何导入和启动风控策略,详见期魔方帮助文档:策略编写文档

图片[2]|期魔方风控模型之委托失败补单程序|魔方商学院

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

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

相关文章

php.ini 文件上传/执行时间/部分配置新手教程

1、上传文件大小配置 一般需要同时配置“upload_max_filesize”、“post_max_size”&#xff0c;配置格式如下&#xff1a; file_uploads On ;是否允许HTTP文件上传 upload_max_filesize 2M ;设置单个文件上传的最大尺寸 post_max_size 8M ;设置 POST 请求体的最大尺寸&am…

ubuntu系统的docker安装(2)

查看系统版本 lsb_release -asudo systemctl status docker查看docker是否安装成功 docker pull拉取镜像不成功/docker run不成功 可能有多种原因&#xff1a;网络链接不稳定&#xff0c;没有重启docker&#xff0c;可以先将docker源设置为国内镜像源 sudo systemctl rest…

Source Insight的使用经验汇总

01-Add All"和“Add Tree”有何区别&#xff1f; 在 Source Insight 中&#xff0c;“Add All”和“Add Tree”是两种向项目&#xff08;Project&#xff09;中添加文件的操作选项&#xff0c;它们的区别在于处理文件和目录的方式不同&#xff1a; 1. Add All 范围&am…

数据库表的CRUD

SQL语句&#xff08;Structured Query Language&#xff09;是用于与关系型数据库进行交互的语言。下面是几个常用的SQL语句&#xff1a; 创建表&#xff1a; CREATE TABLE table_name ( column1 datatype, column2 datatype, column3 datatype, ... ); 插入数据&#xff1a; …

解析博客项目基础需求(一)

个人技术博客项目需求分析 1. 功能需求 1.1 基础功能 博客文章展示文章分类管理文章标签系统文章归档功能文章搜索功能评论系统响应式设计 1.2 扩展功能 文章阅读量统计文章点赞功能个人介绍页面项目展示页面友情链接暗黑模式切换 2. 技术栈选择 2.1 前端技术 Vue 3 (框…

图片增加模糊

为了实现一个既能等比放大缩小图片又能按照不同数值模糊图片的算法&#xff0c;我们可以利用Python结合OpenCV库来完成。下面将详细描述如何构建这样一个算法&#xff0c;并提供完整的代码示例。 算法步骤 导入必要的库&#xff1a;首先需要导入cv2&#xff08;OpenCV&#x…

【速览】设计模式(更新中)

目录 模式的历史设计模式是什么设计原则 SOLID1. 单一职责原则&#xff08;Single Responsibility Principle, SRP&#xff09;2. 开闭原则&#xff08;Open/Closed Principle, OCP&#xff09;3. 里氏替换原则&#xff08;Liskov Substitution Principle, LSP&#xff09;4. 接…

MVC基础——市场管理系统(四)

文章目录 项目地址六、EF CORE6.1 配置ef core环境6.2 code first6.2.1 创建Database context1. 添加navigation property2. 添加MarketContext上下文七、Authentication7.1 添加Identity7.2 Run DB migration for Identity7.3 使用Identity7.3.1 设置认证中间件7.3.2 设置权限…

前端编辑器JSON HTML等,vue2-ace-editor,vue3-ace-editor

与框架无关 vue2-ace-editor有问题&#xff0c;ace拿不到&#xff08;brace&#xff09; 一些组件都是基于ace-builds或者brace包装的 不如直接用下面的&#xff0c;不如直接使用下面的 <template><div ref"editor" class"json-editor"><…

算法训练营day1 | 704二分查找,27移除元素, 34, 35

已经找到工作&#xff0c;但希望再试试春招&#xff0c;距离春招还剩两个月&#xff0c;加油。 这两道题都刷过很多遍了&#xff0c;没什么好说的直接过。 704 本以为刷了很多次没想到还是做错了&#xff0c;有些小细节要注意。 这里是迭代式的&#xff0c;函数式的也不难。 …

vue常用命令汇总

nvm 一个nodejs版本管理工具&#xff0c;解决node.js各种版本存在不兼容现象可以通过它可以安装和切换不同版本的node.js。 npm 可以管理 nodejs 的第三方插件。 vue-cli 是Vue提供的一个官方cli,专门为单页面应用快速搭建繁杂的脚手架。 nginx 是一个高性能的HTTP和反向代理we…

XSS(跨站攻击)

XSS漏洞&#xff08;跨站脚本&#xff09; 1.XSS 漏洞简介 ​ XSS又叫CSS&#xff08;Cross Site Script&#xff09;跨站脚本攻击是指恶意攻击者往Web页面里插入恶意Script代码&#xff0c;当用户浏览该页之时&#xff0c;嵌入其中Web里面的Script代码会被执行&#xff0c;从…

UniApp配置使用原子化tailwindcss

参考视频 创建项目 新建项目选择uniapp - vue版本这里我选择3 - 点击创建即可 创建完成后&#xff0c;如果是要编译到小程序的项目则可以先将项目运行到小程序打开了 初始化package.json 执行 npm init -y安装和配置 安装 npm i -D tailwindcss postcss autoprefixer # 安…

Oracle 与 达梦 数据库 对比

当尝试安装了达梦数据库后&#xff0c;发现达梦真的和Oracle数据库太像了&#xff0c;甚至很多语法都相同。 比如&#xff1a;Oracle登录数据库采用sqlplus&#xff0c;达梦采用disql。 比如查看数据视图&#xff1a;达梦和Oracle都有 v$instance、v$database、dba_users等&a…

【docker】12. Docker Volume(存储卷)

什么是存储卷? 存储卷就是将宿主机的本地文件系统中存在的某个目录直接与容器内部的文件系统上的某一目录建立绑定关系。这就意味着&#xff0c;当我们在容器中的这个目录下写入数据时&#xff0c;容器会将其内容直接写入到宿主机上与此容器建立了绑定关系的目录。 在宿主机上…

汽车总线协议分析-CAN总线

随着汽车工业的发展&#xff0c;汽车各系统的控制逐步向自动化和智能化转变&#xff0c;汽车电气系统变得日益复杂。许多车辆设计使用CAN、CAN-FD、LIN、FlexRay或SENT在电子控制单元(ECU)之间以及ECU与传感器&#xff0c;执行器和显示器之间进行通信。这些ECU之间的通信允许车…

前端性能优化(理念篇)

前端性能优化&#xff08;理念篇&#xff09; 前言 其实前端性能优化&#xff0c;按照我的理解&#xff0c;首先你公司的硬件条件跟其它资源跟的上&#xff0c;比如服务器资源&#xff0c;宽带怎么样&#xff0c;还有后端接口响应如何&#xff0c;这些资源都具备后&#xff0…

IIS部署程序https是访问出现403或ERR_HTTP2_PROTOCOL_ERROR

一、说明 在windows server 2016中的IIS程序池里部署一套系统&#xff0c;通过https访问站点&#xff0c;同时考虑到安全问题以及防攻击等行为&#xff0c;就用上了WAF云盾功能&#xff0c;能有效的抵挡部分攻击&#xff0c;加强网站的安全性和健壮性。 应用系统一直能够正常…

【深度学习】热力图绘制

热力图&#xff08;Heatmap&#xff09;是一种数据可视化方法&#xff0c;通过颜色来表示数据矩阵中的数值大小&#xff0c;以便更直观地展示数据的分布和模式。热力图在许多领域中都有应用&#xff0c;尤其在统计分析、机器学习、数据挖掘等领域&#xff0c;能够帮助我们快速识…

3.6 IP 数据报的发送与转发

欢迎大家订阅【计算机网络】学习专栏&#xff0c;开启你的计算机网络学习之旅&#xff01; 文章目录 前言1 主机发送 IP 数据报2 直接交付与间接交付3 路由器转发 IP 数据报4 习题分析 前言 在计算机网络中&#xff0c;数据传输的核心工作之一是通过 IP 协议将数据从源主机传递…