void CancelOrderf() { int hour = DateTime.Now.Hour; int cal = 5; if (hour <= 7) { cal = 3; } else if (hour > 12 && hour < 21) { cal = 4; } #region 撤除开仓单 for (int i = 0; i < listOpens.Count; i++) { if (i % cal == 0) { Orderf of = listOpens[i]; Cancel_Order co = new Cancel_Order(); co.trade_mode = "F"; co.order_no = of.order_no; co.order_id = of.order_id; co.contract_id = of.contract_no; if (ForJHTradeCancelOrder(co, CANCEL_ORDER_OPEN)) { PrintLine("995@请求撤除开仓单!合同ID:" + co.contract_id + ",流水号:" + CANCEL_ORDER_OPEN); } listOpens.RemoveAt(i); } } #endregion #region 撤除平仓单 for (int i = 0; i < listCloses.Count; i++) { if (i % cal == 0) { Orderf of = listCloses[i]; Cancel_Order co = new Cancel_Order(); co.trade_mode = "F"; co.order_no = of.order_no; co.order_id = of.order_id; co.contract_id = of.contract_no; if (ForJHTradeCancelOrder(co, CANCEL_ORDER_CLOSE)) { PrintLine("995@请求撤除开仓单!合同ID:" + co.contract_id + ",流水号:" + CANCEL_ORDER_CLOSE); } listCloses.RemoveAt(i); } } #endregion }
//报单应答 public override void OnJHTradeOrder(Trade_Head msgHead, Orderf pOrder) { if (msgHead != null && pOrder != null && msgHead.ReturnCode == "201") { string strt = DateTime.Now.ToString(); string tradeno = msgHead.TradeNo; listSponce.Add("回报时间:" + strt + " 流水号:" + tradeno + " ,价格:" + pOrder.order_price + " ,数量:" + pOrder.order_qtt); } }
// 报单字段说明 // order_local_id;//前端报单号,由API调用ForOderfRequest()后生成, 20位(时间+6位顺序号 yyyyMMddHHmmss######) // contract_id;// // buyorsell;// // offset_flag;// // trade_type;// // is_deposit;// // stop_price;//止损价格 // order_price;// // order_qtt;// // order_ip;// // detail_seq;//指定仓平仓仓位明细号 // remark;//点差 备注 /// <summary> /// 下单 /// </summary> /// <param name="pOrder">报单结构体</param> /// <param name="strTradeNo">交易流水号</param> /// <returns></returns> public bool ForJHTradeOrderfRequest(Orderf pOrder, string strTradeNo) { try { return(ForOderfRequest(pOrder, strTradeNo)); } catch (Exception ex) { strategy.OnExceptionMessage(EnumStateFlag.交易请求, ex.ToString()); return(false); } }
// 报单字段说明 // order_local_id;//前端报单号,由API调用ForOderfRequest()后生成, 20位(时间+6位顺序号 yyyyMMddHHmmss######) // contract_id;// // buyorsell;// // offset_flag;// // trade_type;// // is_deposit;// // stop_price;//止损价格 // order_price;// // order_qtt;// // order_ip;// // detail_seq;//指定仓平仓仓位明细号 // remark;//点差 备注 /// <summary> /// 下单 /// </summary> /// <param name="pOrder">报单结构体</param> /// <param name="strTradeNo">交易流水号</param> /// <returns></returns> public bool ForJHTradeOrderfRequest(Orderf pOrder, string strTradeNo) { try { if (manageTrade != null && trade_login_ok) { return(manageTrade.ForJHTradeOrderfRequest(pOrder, strTradeNo)); } return(false); }catch { return(false); } }
public override void OnOrder(Trade_Head msgHead, Orderf pOrder) { if (strategy == null) { return; } try { strategy.OnJHTradeHead(msgHead); strategy.OnJHTradeOrder(msgHead, pOrder); }catch (Exception ex) { strategy.OnExceptionMessage(EnumStateFlag.交易回报, ex.ToString()); } }
/// <summary> /// 下单 /// </summary> /// <param name="_contract_id">(*下单必填)合同ID</param> /// <param name="_buyorsell">(*下单必填)买卖方向(1 - 买入,2 - 卖出)</param> /// <param name="_offset_flag">(*下单必填)开平仓标记:1、开仓(新订);2、平今;3、平昨;4、平仓(先订先转);5、平仓(转今优先);6、指定仓平仓;</param> /// <param name="_trade_type">(*下单必填)申报类型 1、限价;2、市价;3、止损限价;4、止损市价;5、均价</param> /// <param name="_is_deposit">(*下单必填)担保方式 1定金;6仓单</param> /// <param name="_order_price">(*下单必填)申报价格</param> /// <param name="_order_qtt">(*下单必填)申报数量</param> /// <param name="_order_ip">(*下单必填)申报IP地址</param> /// <param name="_strTradeNo">交易流水号</param> /// <returns></returns> public bool ForJHTradeOrderfRequest(string _contract_id, string _buyorsell, string _offset_flag, string _trade_type, string _is_deposit, string _order_price, string _order_qtt, string _strTradeNo) { Orderf orf = new Orderf(); orf.contract_id = _contract_id; orf.buyorsell = _buyorsell; orf.offset_flag = _offset_flag; orf.trade_type = _trade_type; orf.is_deposit = _is_deposit; orf.order_price = _order_price; orf.order_qtt = _order_qtt; orf.order_ip = JHUtil.GetNaviteIP(); try { return(ForOderfRequest(orf, _strTradeNo)); } catch (Exception ex) { strategy.OnExceptionMessage(EnumStateFlag.交易请求, ex.ToString()); return(false); } }
//报单应答 public override void OnJHTradeOrder(Trade_Head msgHead, Orderf pOrder) { if (msgHead != null && pOrder != null && msgHead.ReturnCode == "201") { //如果是大单报单 添加到大单队列。 if (BIG_ORDER_F == msgHead.TradeNo) { BigOrder big = new BigOrder(); big.tradeNo = BIG_ORDER_F; big.limitTime = DateTime.Now; big.order_no = pOrder.order_no; big.order_id = pOrder.order_id; big.bigOrder = pOrder; listOrderNos.Add(big); return; } //如果是必须成交的单子不处理 if (MUST_TRADE_ON == msgHead.TradeNo) { return; } //挂单 if (int.Parse(msgHead.TradeNo) % 2 == 1) { listOpens.Add(pOrder); } else { listCloses.Add(pOrder); } } }
/// <summary> /// 报单函数 /// </summary> /// <param name="_buysell">(*下单必填)买卖方向(1 - 买入,2 - 卖出)</param> /// <param name="_openclose">(*下单必填)开平仓标记:1、开仓(新订);2、平今;3、平昨;4、平仓(先订先转); /// 5、平仓(转今优先);6、指定仓平仓;</param> /// <param name="_price">委托价格</param> /// <param name="_volume">委托数量</param> /// <param name="_tradeno">交易流水</param> /// <returns></returns> public bool ForLimitOrder(EnumBuySell _buysell, EnumOpenClose _openclose, int _price, int _volume, string _contractId, string _tradeno) { Orderf orf = new Orderf(); orf.contract_no = contractID; orf.contract_id = _contractId; orf.is_deposit = "1"; orf.trade_type = "1"; //买卖方向 if (_buysell == EnumBuySell.买入) { orf.buyorsell = "1"; } else { orf.buyorsell = "2"; } //开平标志 if (_openclose == EnumOpenClose.开仓_新订) { orf.offset_flag = "1"; } else if (_openclose == EnumOpenClose.平今) { orf.offset_flag = "2"; } else if (_openclose == EnumOpenClose.平昨) { orf.offset_flag = "3"; } else if (_openclose == EnumOpenClose.平仓_先订先转) { orf.offset_flag = "4"; } else if (_openclose == EnumOpenClose.平仓_转今优先) { orf.offset_flag = "5"; } else { orf.offset_flag = "6"; } orf.order_price = _price + ""; orf.order_qtt = _volume + ""; try { if (manageTrade != null) { return(manageTrade.ForJHTradeOrderfRequest(orf, _tradeno)); } else { return(false); } } catch { return(false); } }
/// <summary> /// 下单应答 /// </summary> /// <param name="msgHead"></param> /// <param name="pOrder"></param> virtual public void OnJHTradeOrder(Trade_Head msgHead, Orderf pOrder) { }