/// <summary> /// 收到任意回报时调用 /// </summary> /// <param name="msgHead"></param> public void OnJHTradeHead(Trade_Head msgHead) { lastTradeHeartTime = GetTimestamp() + time_trade_dif; trade_Is_Error = false; // DateTime servTime; // servTime = Convert.ToDateTime(msgHead.OperTime); // lastTradeHeartTime = GetTimestamp(servTime); }
//报单应答 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); } }
/// <summary> /// 交易接口心跳应答 /// </summary> /// <param name="msgHead"></param> /// <param name="strTime"></param> public void OnJHTradeHeartMsg(Trade_Head msgHead, string strTime) { if (strTime == "") { return; } trade_Is_Error = false; lastTradeHeartTime = int.Parse(strTime); }
//撤单应答 public override void OnJHTradeCancelOrder(Trade_Head msgHead, Cancel_Order pCancel) { if (pCancel.ret_cancel_status == "0") { PrintLine("995@撤单成功!合同ID:" + pCancel.contract_id + ",流水号:" + msgHead.TradeNo); } else { PrintLine("995@撤单失败!合同ID:" + pCancel.contract_id + ",流水号:" + msgHead.TradeNo); } }
/// <summary> /// 会话异常 /// </summary> /// <param name="msgHead">msgHead.return_code: /// 8172 由于长时间没有操作,自动中断连接,请重新登录。 /// 8173 连接超时,请重新登录。 /// 8174 该帐号重复登录被踢出。 /// 8175 后台管理强制踢出。 /// 8176 客户端帐户出现异常。 /// </param> public void OnJHTradeSessionFail(Trade_Head msgHead) { session_Is_Error = true; IsTradeNo = false; if (printMsg != null) { printMsg.Print("交易接口会话异常! Code:" + msgHead.ReturnCode + ", Message:" + msgHead.ReturnDesc); } if (stateNotify != null) { stateNotify.OnNotify(this, NotifyCode.TRADE_SESSION_EXCEPTION); } }
public override void OnLogout(Trade_Head msgHead) { if (strategy == null) { return; } try { strategy.OnJHTradeHead(msgHead); }catch (Exception ex) { strategy.OnExceptionMessage(EnumStateFlag.交易回报, ex.ToString()); } }
public override void OnSubsfList(Trade_Head msgHead, List <Subsf_List> pSubsf_List) { if (strategy == null) { return; } try { strategy.OnJHTradeHead(msgHead); strategy.OnJHTradeSubsfList(msgHead, pSubsf_List); }catch (Exception ex) { strategy.OnExceptionMessage(EnumStateFlag.交易回报, ex.ToString()); } }
public override void OnCancelOrder(Trade_Head msgHead, Cancel_Order pCancel) { if (strategy == null) { return; } try { strategy.OnJHTradeHead(msgHead); strategy.OnJHTradeCancelOrder(msgHead, pCancel); }catch (Exception ex) { strategy.OnExceptionMessage(EnumStateFlag.交易回报, ex.ToString()); } }
public override void OnHeartMsg(Trade_Head msgHead, string strClientTime) { if (strategy == null) { return; } try { strategy.OnJHTradeHead(msgHead); strategy.OnJHTradeHeartMsg(msgHead, strClientTime); }catch (Exception ex) { strategy.OnExceptionMessage(EnumStateFlag.交易回报, ex.ToString()); } }
public override void OnTradeReturn(Trade_Head msgHead, List <Trade_Return> pTrade_Return_List) { if (strategy == null) { return; } try { strategy.OnJHTradeHead(msgHead); strategy.OnJHTradeTradeReturn(msgHead, pTrade_Return_List); }catch (Exception ex) { strategy.OnExceptionMessage(EnumStateFlag.交易回报, ex.ToString()); } }
public void OnJHTradeForValSign(Trade_Head msgHead) { if (printMsg != null) { printMsg.Print("验证特征码成功!正在进行登陆验证. . ."); } //特征码验证成功后进行登陆 bool rlogin = manageTrade.ForJHTradeLogin(username, password, JHUtil.GetMacAddress(), JHUtil.GetNaviteIP(), "login"); if (rlogin == false) { manageTrade.ForFreeClient(); manageTrade = null; } }
public override void OnCurrRate(Trade_Head msgHead, List <Curr_Rate> pCurr_Rate_List) { if (strategy == null) { return; } try { strategy.OnJHTradeHead(msgHead); strategy.OnJHTradeCurrRate(msgHead, pCurr_Rate_List); }catch (Exception ex) { strategy.OnExceptionMessage(EnumStateFlag.交易回报, ex.ToString()); } }
public override void OnFundInOutList(Trade_Head msgHead, List <Fund_Inout> pFund_Inout_List) { if (strategy == null) { return; } try { strategy.OnJHTradeHead(msgHead); strategy.OnJHTradeFundInOutList(msgHead, pFund_Inout_List); }catch (Exception ex) { strategy.OnExceptionMessage(EnumStateFlag.交易回报, ex.ToString()); } }
public override void OnMarketStatus(Trade_Head msgHead, Market_Status pMarketStatus) { if (strategy == null) { return; } try { strategy.OnJHTradeHead(msgHead); strategy.OnJHTradeMarketStatus(msgHead, pMarketStatus); }catch (Exception ex) { strategy.OnExceptionMessage(EnumStateFlag.交易回报, ex.ToString()); } }
/*******************错误信息应答*****************/ public override void OnForAssoInfo(Trade_Head msgHead, Asso_Info pAssoInfo) { if (strategy == null) { return; } try { strategy.OnJHTradeHead(msgHead); strategy.OnJHTradeForAssoInfo(msgHead, pAssoInfo); }catch (Exception ex) { strategy.OnExceptionMessage(EnumStateFlag.交易回报, ex.ToString()); } }
//合同 public override void OnJHTradeContractList(Trade_Head msgHead, List <Contract_List> pContract_List) { if (pContract_List != null && msgHead.ListNum != 0) { foreach (Contract_List pcl in pContract_List) { if (pcl.contract_no == GetContractID()) { Cont_L = pcl; m_minPrice = int.Parse(pcl.min_diff_price); contract_id = pcl.contract_id; } } } }
//持仓信息应答 public override void OnJHTradeSubsfList(Trade_Head msgHead, List <Subsf_List> pSubsf_List) { if (msgHead.ListNum == 0) { return; } foreach (Subsf_List sl in pSubsf_List) { if (sl.contract_no == GetContractID()) { Position = int.Parse(sl.cnyable_qtt); break; } } }
public void OnJHTradeForLogin(Trade_Head msgHead) { if (msgHead.OperTime == "") { if (stateNotify != null) { stateNotify.OnNotify(this, NotifyCode.TRADE_TIME_ERROR); } return; } string msg = ""; bool brt = false; if (int.Parse(msgHead.ReturnCode) == 0) { msg = "登陆交易服务器成功! code:" + msgHead.ReturnCode + ",desc:" + msgHead.ReturnDesc; } else { brt = true; msg = "登陆交易服务器异常! code:" + msgHead.ReturnCode + ",desc:" + msgHead.ReturnDesc; JHLog.forTradeLog(msg); } PrintLine(msg); if (brt) { return; } DateTime servTime; //计算时间差 servTime = Convert.ToDateTime(msgHead.OperTime); //保存服务器推送时间 lastTradeHeartTime = GetTimestamp(servTime); //保持本地与服务器时间差 time_trade_dif = lastTradeHeartTime - GetTimestamp(); //通知准备工作已经完成 OnInitInstance(); }
//报单应答 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); } } }
public void PrintHead(Trade_Head msgHead, string _msg = "") { string msg = "code:" + msgHead.ReturnCode + ",desc:" + msgHead.ReturnDesc; PrintLine(_msg + ", " + msg); }
/// <summary> /// 持仓汇总 /// </summary> /// <param name="msgHead"></param> /// <param name="pSubsf_List"></param> virtual public void OnJHTradeSubsfList(Trade_Head msgHead, List <Subsf_List> pSubsf_List) { }
/// <summary> /// 仓单查询(教汇没有仓单所以此函数无效) /// </summary> /// <param name="msgHead"></param> /// <param name="pReceipts_List"></param> virtual public void OnJHTradeReceiptsList(Trade_Head msgHead, List <Receipts_List> pReceipts_List) { }
/// <summary> /// 委托查询 /// </summary> /// <param name="msgHead"></param> /// <param name="pOrderf_List"></param> virtual public void OnJHTradeOrderfList(Trade_Head msgHead, List <Orderf> pOrderf_List) { }
/// <summary> /// 下单应答 /// </summary> /// <param name="msgHead"></param> /// <param name="pOrder"></param> virtual public void OnJHTradeOrder(Trade_Head msgHead, Orderf pOrder) { }
/// <summary> /// 撤单应答 /// </summary> /// <param name="msgHead"></param> /// <param name="pCancel"></param> virtual public void OnJHTradeCancelOrder(Trade_Head msgHead, Cancel_Order pCancel) { }
/*************************/ /// <summary> /// 资金查询 /// </summary> /// <param name="msgHead"></param> /// <param name="pFund"></param> virtual public void OnJHTradeFund(Trade_Head msgHead, Fund pFund) { }
/// <summary> /// 出入金查询应答 /// </summary> /// <param name="msgHead"></param> /// <param name="pFund_Inout_List"></param> virtual public void OnJHTradeFundInOutList(Trade_Head msgHead, List <Fund_Inout> pFund_Inout_List) { }
/// <summary> /// 成交查询 /// </summary> /// <param name="msgHead"></param> /// <param name="pDealf_List"></param> virtual public void OnJHTradeDealfList(Trade_Head msgHead, List <Dealf_List> pDealf_List) { }
/// <summary> /// 交易公告 /// </summary> /// <param name="msgHead"></param> /// <param name="pBulletin"></param> virtual public void OnJHTradeBulletin(Trade_Head msgHead, Bulletin pBulletin) { }
/// <summary> /// 出入金申请应答 /// </summary> /// <param name="msgHead"></param> /// <param name="pStruct"></param> virtual public void OnJHTradeFundInOutApply(Trade_Head msgHead, Fund_Inout pStruct) { }