以文本方式查看主题

-  金字塔客服中心 - 专业程序化交易软件提供商  (http://weistock.com/bbs/index.asp)
--  交易策略发布专区  (http://weistock.com/bbs/list.asp?boardid=10)
----  【zzc_python】之追撤单模板  (http://weistock.com/bbs/dispbbs.asp?boardid=10&id=166505)

--  作者:yukizzc
--  发布时间:2018/11/15 13:42:56
--  【zzc_python】之追撤单模板

这个程序是为设计给python使用的追撤单模板,并且做到只针对本策略所下的单子进行追撤操作,其他程序或手工的挂单不受影响

 

 

 

# 本Python代码主要用于策略交易
# 可以自己import我们平台支持的第三方python模块,比如pandas、numpy等。
from PythonApi import *

#  在这个方法中编写任何的初始化逻辑。context对象将会在你的算法策略的任何方法之间做传递。--(必须实现)
def init(context):
    # 在context中保存全局变量
    #标的合约
    context.s1 = "IF00"  
    #控制只交易一次
    context.num=0
    #存放订单id
    context.buy_list = []

   

# before_trading此函数会在每天基准合约的策略交易开始前被调用,当天只会被调用一次。--(选择实现)
def before_trading(context):
    pass


# 你选择的品种的数据更新将会触发此段逻辑,例如日或分钟历史数据切片或者是实时数据切片更新。--(必须实现)
def handle_bar(context):
    #跌停价开一手多单
    if context.num==0:
        buy_id = buy_open(context.s1, "Limit",get_dynainf(context.s1,55),1)
        context.buy_list.append(buy_id)
        buy_id = buy_open(context.s1, "Limit",get_dynainf(context.s1,55),3)
        context.buy_list.append(buy_id)
        context.num = 1
    #获取所有未成交单
    order_list = get_orders(context.s1, 0)
    if order_list is not(None):
        #循环所有订单
        for i in order_list:
            if i.order_id in context.buy_list:
                cancel_order (i.order_id)
   
def order_status(context,order):
    #判断柜台回报信息,如果是撤单成功,并且是当前程序的下单id。
    if order.status==\'cancelled\' and order.order_id in context.buy_list :
        print(\'单子已撤,继续追单\')
        buy_open(context.s1, "Market",0,order.unfilled_quantity)
       
   
# after_trading函数会在每天交易结束后被调用,当天只会被调用一次。 --(选择实现)
def after_trading(context):
    pass