易盛极星量化:A_SendOrder下单与平仓,防止频繁进场

        极星的极智量化是一个很不错的量化工具,基于python,又有比较全面的API可以直接调用。今天分享一个实现用A_SendOrder 来实现开仓和平仓,并分享一个可以避免重复开单的小技巧。

        

g_params['ContractId']  = 'ZCE|F|SR|201'

def initialize(context): 
    # 订阅信息
    SetBarInterval(g_params['ContractId'], Enum_Period_Min(), g_params['mint'] , g_params['numb'])

def handle_data(context):
    global 开仓时间
    buy_lots_0 = A_BuyPosition(g_params['ContractId'])
    if   buy_lots_0 == 0 and (time.time()-开仓时间 > 50) :        
        A_SendOrder(Enum_Buy(),Enum_Entry(),g_params['acc_lots'],Q_BidPrice(g_params['ContractId']),g_params['ContractId'],g_params['acc_nub'],'1')
        开仓时间 = time.time()

    pf_b_0     = A_BuyProfitLoss(g_params['ContractId'])
    if pf_buy_sum > g_params['pfclose']:
        A_SendOrder(Enum_Sell(),Enum_Exit(),A_BuyPosition(g_params['ContractId']),Q_AskPrice(g_params['ContractId']),g_params['ContractId'],g_params['acc_nub'],'1')

这段代码 是从整个逻辑里 复制出来的,可能复制的过程中有一些格式上的错误,大家自己校正。

  • 利用A_SendOrder  函数来做买单入场单,成交之后 在平仓的时候,用“卖平” 的形式来出场。而不是常识意义上的 “平买”;往往是使用平仓模式不正确,导致的不能顺利平仓。提醒的就是,没有对应仓量
  • 用“开仓时间”这个全局变量进行限定交易的时间。
    • 在成交的时候,给这个变量赋值
    • 再次判断是否要进单子的时候,一定要判断当前的时间和这个上次入场的时间是否有足够的时间间隔。

        入场的时候之所以会频繁入场,多半是因为一秒内 其实已经发送了订单,但是订单处于委托状态并没有成交,返回的数据就是持仓是0,同样符合入场条件,导致了频繁发送订单。

        如果能 在发送的时候就记录了这个时间,给订单的成交一个时间缓冲,就能有效的规避这个问题。

        当然,还有其他的办法:等K线稳定后再次成交;但是用对冲思路,这个办法就不好了,价格瞬间变化太快,等稳定了K线,黄花菜都凉了。还可以获取委托单的成交状态,如果订单处于排队的状态,就停止继续发送订单。这样也是可以的。后面再进行补充

  • 2
    点赞
  • 17
    收藏
    觉得还不错? 一键收藏
  • 0
    评论

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值