网站开发 书籍,无广告自助建站,wordpress 301设置,前端用什么软件写代码你知道吗#xff1f;只需简单设置#xff0c;期魔方风控模型就能自动处理风控委托失败的订单#xff0c;进行补单操作。
那么#xff0c;这种功能适用于哪些场景呢#xff1f;让我们一起来探讨一下#xff01;
在实际交易中#xff0c;我们有时会遇到在任意交易终端只需简单设置期魔方风控模型就能自动处理风控委托失败的订单进行补单操作。
那么这种功能适用于哪些场景呢让我们一起来探讨一下
在实际交易中我们有时会遇到在任意交易终端如文华博弈、随身行等下单后委托被挂起未成交或者由于流动性不足导致部分订单未能完全成交。此时期魔方的自动补单功能就能发挥关键作用。系统会自动撤销未成交的订单并重新提交补单确保不会错失交易机会避免漏单风险。
这一自动补单功能不仅可以应用于全局账户风控也可以针对特定合约进行精确控制。用户还可以自定义补单方式选择市价、现价或对价等不同类型的报单方式以适应不同的市场需求和风险管理策略。
这是这款风控模型的Python源码适用于期魔方软件
#——————————————#
#文件类型:量化策略
#帮助文档:https://qmfquant.com/static/doc/code/strategyEdit.html
#期魔方为您提供专业的量化服务
#——————————————#
from pydantic import BaseModel, Field
import time
import datetime
class Params(BaseModel, validate_assignmentTrue): “””参数映射模型””” set_symbol_mode:dict Field(default{“options”:[“全局”,”指定”],\ “value”:”全局”},title ”跟踪对象”) symbols:str Field(default”ag2510,rb2510″,title ”指定的合约”) over_time_second:int Field(default10,title “超时N秒撤单”) #run_dis:int Field(default10,title “触发间隔”) #run_times:int Field(default3,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”)
如何导入和启动风控策略详见期魔方帮助文档策略编写文档