private bool PlaceOrder(ThostFtdcInputOrderField order) { using (var helper = new OrderPlacer(this.frame)) { return(helper.PlaceOrder(order)); } }
public void SubmitOrder(OptionOrder order) { var input = new ThostFtdcInputOrderField { BrokerID = this._config.BrokerId, InvestorID = this._config.Account, InstrumentID = order.InstrumentID, OrderRef = this._session.NextOrderRef().ToString(), UserID = this._config.Account, OrderPriceType = EnumOrderPriceTypeType.LimitPrice, Direction = order.Side == OrderSide.Buy ? EnumDirectionType.Buy : EnumDirectionType.Sell, CombOffsetFlag_0 = order.OpenClose == OpenClose.Open ? EnumOffsetFlagType.Open : EnumOffsetFlagType.Close, CombHedgeFlag_0 = EnumHedgeFlagType.Speculation, LimitPrice = Math.Round(order.Price, 4), VolumeTotalOriginal = order.Qty, TimeCondition = EnumTimeConditionType.GFD, VolumeCondition = EnumVolumeConditionType.AV, ContingentCondition = EnumContingentConditionType.Immediately, ForceCloseReason = EnumForceCloseReasonType.NotForceClose, IsAutoSuspend = 0, }; var ret = this._trade.ReqOrderInsert(input, this._session.NextRequestID()); if (ret != 0) { this.OnLog(string.Format("下单失败,返回{0}", ret)); } }
private void CtpTrader_OnErrRtnOrderInsert(ThostFtdcInputOrderField pInputOrder, ThostFtdcRspInfoField pRspInfo) { if (pRspInfo != null) { Console.WriteLine(pRspInfo.ErrorMsg); } }
public void InsertOrder(InputOrder order) { LogCenter.Log("下单:" + order.ToString()); var field = new ThostFtdcInputOrderField { BrokerID = order.BrokerID, InvestorID = order.InvestorID, Direction = (EnumDirectionType)order.Direction, CombOffsetFlag_0 = (EnumOffsetFlagType)order.OffsetFlag, InstrumentID = order.InstrumentID, LimitPrice = order.Price, VolumeTotalOriginal = order.Volume, UserID = order.GroupID, CombHedgeFlag_0 = EnumHedgeFlagType.Speculation, ForceCloseReason = EnumForceCloseReasonType.NotForceClose, ContingentCondition = EnumContingentConditionType.Immediately, TimeCondition = EnumTimeConditionType.GFD, VolumeCondition = EnumVolumeConditionType.AV, OrderPriceType = EnumOrderPriceTypeType.LimitPrice, MinVolume = 1, IsAutoSuspend = 1, }; int i = this.ReqOrderInsert(field, 0); if (i != 0) { LogCenter.Error("输入报单错误:" + CTPErrorHelper.GetError(i)); } }
/// <summary> /// 报单错误回报 /// </summary> /// <param name="pInputOrder"></param> /// <param name="pRspInfo"></param> /// <param name="nRequestID"></param> /// <param name="bIsLast"></param> public void HandleErrRtnOrderInsert(ThostFtdcInputOrderField pInputOrder, ThostFtdcRspInfoField pRspInfo) { var order = new OrderData(); order.gatewayName = this.Gateway.gatewayName; order.symbol = pInputOrder.InstrumentID; order.vtSymbol = pInputOrder.InstrumentID; order.exchange = pInputOrder.ExchangeID; order.orderID = pInputOrder.OrderRef; order.vtOrderID = order.vtSymbol + '.' + order.orderID; order.direction = (string)TradeConstantDicSetting.DirectionTypeDic[pInputOrder.Direction]; order.offset = (string)TradeConstantDicSetting.OffsetTypeDic[pInputOrder.CombOffsetFlag_0]; order.status = TradeCanstant.statusReject; order.price = pInputOrder.LimitPrice; order.totalVolume = pInputOrder.VolumeTotalOriginal; ///推送委托信息 this.Gateway.MainController.MainEvent._OnOrder.Invoke(order); ///错误推送 var errorData = new ErrorData(); errorData.gatewayName = this.Gateway.gatewayName; errorData.errorID = Convert.ToString(pRspInfo.ErrorID); errorData.errorMsg = pRspInfo.ErrorMsg; this.Gateway.MainController.MainEvent._OnError.Invoke(errorData); }
void ReqOrderInsert() { ThostFtdcInputOrderField req = new ThostFtdcInputOrderField(); ///经纪公司代码 req.BrokerID = BROKER_ID; ///投资者代码 req.InvestorID = INVESTOR_ID; ///合约代码 req.InstrumentID = INSTRUMENT_ID; ///报单引用 req.OrderRef = ORDER_REF; ///用户代码 // TThostFtdcUserIDType UserID; ///报单价格条件: 限价 req.OrderPriceType = CTP.EnumOrderPriceTypeType.LimitPrice; ///买卖方向: req.Direction = DIRECTION; ///组合开平标志: 开仓 req.CombOffsetFlag_0 = CTP.EnumOffsetFlagType.Open; ///组合投机套保标志 req.CombHedgeFlag_0 = CTP.EnumHedgeFlagType.Speculation; ///价格 req.LimitPrice = LIMIT_PRICE; ///数量: 1 req.VolumeTotalOriginal = 1; ///有效期类型: 当日有效 req.TimeCondition = CTP.EnumTimeConditionType.GFD; ///GTD日期 // TThostFtdcDateType GTDDate; ///成交量类型: 任何数量 req.VolumeCondition = CTP.EnumVolumeConditionType.AV; ///最小成交量: 1 req.MinVolume = 1; ///触发条件: 立即 req.ContingentCondition = CTP.EnumContingentConditionType.Immediately; ///止损价 // TThostFtdcPriceType StopPrice; ///强平原因: 非强平 req.ForceCloseReason = CTP.EnumForceCloseReasonType.NotForceClose; ///自动挂起标志: 否 req.IsAutoSuspend = 0; ///业务单元 // TThostFtdcBusinessUnitType BusinessUnit; ///请求编号 // TThostFtdcRequestIDType RequestID; ///用户强评标志: 否 req.UserForceClose = 0; int iResult = api.ReqOrderInsert(req, ++iRequestID); Console.WriteLine("--->>> 报单录入请求: " + ((iResult == 0) ? "成功" : "失败")); }
private void CtpTrader_OnRspOrderInsert(ThostFtdcInputOrderField pInputOrder, ThostFtdcRspInfoField pRspInfo, int nRequestID, bool bIsLast) { if (pRspInfo != null) { Console.WriteLine(pRspInfo.ErrorMsg); } isSuccess = false; autoResetEventOrderCompleted.Set(); }
public static string ToString2(this ThostFtdcInputOrderField field) { return(string.Format("OrderRef:{0},{1},{2} {3} {4} {5} {6}", field.OrderRef, field.UserID, field.CombOffsetFlag_0, field.Direction, field.VolumeTotalOriginal, field.InstrumentID, field.LimitPrice )); }
/// <summary> /// 发单! /// </summary> /// <param name="order"></param> public void SendOrder(OrderReq order) { ThostFtdcInputOrderField req = new ThostFtdcInputOrderField(); ///经纪公司代码 req.BrokerID = this.BrokerID; ///投资者代码 req.InvestorID = this.UserID; ///合约代码 req.InstrumentID = order.symbol; ///报单本地委托号,待处理 //req.OrderRef = ORDER_REF; ///用户代码 // TThostFtdcUserIDType UserID; ///报单价格条件: 限价 req.OrderPriceType = CTP.EnumOrderPriceTypeType.LimitPrice; ///买卖方向: req.Direction = (EnumDirectionType)order.direction; ///组合开平标志: 开仓 req.CombOffsetFlag_0 = CTP.EnumOffsetFlagType.Open; ///组合投机套保标志 req.CombHedgeFlag_0 = CTP.EnumHedgeFlagType.Speculation; ///价格 req.LimitPrice = order.price; ///数量: 1 req.VolumeTotalOriginal = order.volume; ///有效期类型: 当日有效 req.TimeCondition = CTP.EnumTimeConditionType.GFD; ///GTD日期 // TThostFtdcDateType GTDDate; ///成交量类型: 任何数量 req.VolumeCondition = CTP.EnumVolumeConditionType.AV; ///最小成交量: 1 req.MinVolume = 1; ///触发条件: 立即 req.ContingentCondition = CTP.EnumContingentConditionType.Immediately; ///止损价 // TThostFtdcPriceType StopPrice; ///强平原因: 非强平 req.ForceCloseReason = CTP.EnumForceCloseReasonType.NotForceClose; ///自动挂起标志: 否 req.IsAutoSuspend = 0; ///业务单元 // TThostFtdcBusinessUnitType BusinessUnit; ///请求编号 // TThostFtdcRequestIDType RequestID; ///用户强评标志: 否 req.UserForceClose = 0; int iResult = this.ReqOrderInsert(req, ++this.reqID); Console.WriteLine("--->>> 报单请求: " + ((iResult == 0) ? "成功" : "失败")); }
private bool BuyToCover(double price, int timeout) { ThostFtdcInputOrderField order = frame.CreateOrder(); order.CombOffsetFlag_0 = EnumOffsetFlagType.CloseToday; order.Direction = EnumDirectionType.Buy; order.InstrumentID = instrumentID; order.VolumeTotalOriginal = Volume; order.LimitPrice = price; order.StopPrice = price; order.ContingentCondition = EnumContingentConditionType.Immediately; //order.VolumeCondition = EnumVolumeConditionType.CV; return(PlaceOrder(order, timeout)); }
private bool SellImmediately() { ThostFtdcInputOrderField order = frame.CreateOrder(); order.CombOffsetFlag_0 = EnumOffsetFlagType.CloseToday; order.Direction = EnumDirectionType.Sell; order.InstrumentID = instrumentID; order.VolumeTotalOriginal = Volume; order.LimitPrice = lastQuote.LowerLimitPrice; order.StopPrice = lastQuote.LowerLimitPrice; order.ContingentCondition = EnumContingentConditionType.Immediately; //order.VolumeCondition = EnumVolumeConditionType.CV; return(PlaceOrder(order)); }
public bool PlaceOrder(ThostFtdcInputOrderField order) { isSuccess = false; autoResetEventOrderCompleted = new AutoResetEvent(false); frame.CtpTrader.OnRtnOrder += CtpTrader_OnRtnOrder; Console.WriteLine("Send order.({0})", order.ToString2()); frame.CtpTrader.ReqOrderInsert(order); autoResetEventOrderCompleted.WaitOne(); frame.CtpTrader.OnRtnOrder -= CtpTrader_OnRtnOrder; return(isSuccess); }
private bool SellShort(double targetPrice) { ThostFtdcInputOrderField order = frame.CreateOrder(); order.CombOffsetFlag_0 = EnumOffsetFlagType.Open; order.Direction = EnumDirectionType.Sell; order.InstrumentID = instrumentID; order.VolumeTotalOriginal = Volume; order.LimitPrice = targetPrice; order.StopPrice = targetPrice; order.ContingentCondition = EnumContingentConditionType.Immediately; //order.VolumeCondition = EnumVolumeConditionType.CV; return(PlaceOrder(order)); }
/* * -------------------------------------------------------------- * 报单/撤单,委托回报/成交回报 * -------------------------------------------------------------- */ public bool OrderInsert(CustomOrder order, out string errMsg) { if (!CheckOrder(order, out errMsg)) { return(false); } // 构造下单参数 ThostFtdcInputOrderField inOrder = new ThostFtdcInputOrderField(); inOrder.BrokerID = BROKER_ID; inOrder.InvestorID = INVESTOR_ID; inOrder.OrderPriceType = EnumOrderPriceTypeType.LimitPrice; inOrder.InstrumentID = order.InstrumentID; inOrder.OrderRef = iOrderRef.ToString(); inOrder.LimitPrice = order.Price; inOrder.Direction = (order.Direction == BS_CODE.Buy) ? EnumDirectionType.Buy : EnumDirectionType.Sell; inOrder.CombOffsetFlag_0 = (order.OffsetFlag == OC_CODE.Open) ? EnumOffsetFlagType.Open : EnumOffsetFlagType.Close; inOrder.VolumeTotalOriginal = order.Volume; inOrder.VolumeCondition = EnumVolumeConditionType.AV; inOrder.MinVolume = 0; // ?? inOrder.ContingentCondition = EnumContingentConditionType.Immediately; inOrder.CombHedgeFlag_0 = HedgeFlagType; inOrder.TimeCondition = EnumTimeConditionType.GFD; inOrder.ForceCloseReason = EnumForceCloseReasonType.NotForceClose; inOrder.IsAutoSuspend = 0; inOrder.UserForceClose = 0; // 更新 order.OrderNo = iOrderRef; iOrderRef++; // 下单 var ret = trader.ReqOrderInsert(inOrder, iRequestID++); errMsg = (ret == 0) ? "-" : "CTP报单录入失败,返回值:" + ret; return(ret == 0); }
public ThostFtdcInputOrderField CreateOrder() { var orderField = new ThostFtdcInputOrderField() { BrokerID = AccountInfo.BrokerID, InvestorID = AccountInfo.InvestorID, CombHedgeFlag_0 = EnumHedgeFlagType.Speculation, OrderPriceType = EnumOrderPriceTypeType.LimitPrice, IsAutoSuspend = 0, IsSwapOrder = 0, MinVolume = 1, TimeCondition = EnumTimeConditionType.GFD, VolumeCondition = EnumVolumeConditionType.AV, UserForceClose = 0, OrderRef = (++orderRef).ToString(), ForceCloseReason = EnumForceCloseReasonType.NotForceClose, }; return(orderField); }
/// <summary> /// 下单、超时撤单 /// </summary> /// <param name="order"></param> /// <param name="timeout"></param> /// <returns></returns> public bool PlaceOrder(ThostFtdcInputOrderField order, int timeout) { isSuccess = true; autoResetEventOrderCompleted = new AutoResetEvent(false); frame.CtpTrader.OnRtnOrder += CtpTrader_OnRtnOrder; Console.WriteLine("Send order. ({0})", order.ToString2()); frame.CtpTrader.ReqOrderInsert(order); var isTimeout = !autoResetEventOrderCompleted.WaitOne(timeout); if (isTimeout) { isSuccess = false; frame.CtpTrader.OnRspOrderAction += CtpTrader_OnRspOrderAction; var cancelOrder = new ThostFtdcInputOrderActionField() { ActionFlag = EnumActionFlagType.Delete, BrokerID = orderOnWay.BrokerID, InvestorID = orderOnWay.InvestorID, InstrumentID = orderOnWay.InstrumentID, FrontID = orderOnWay.FrontID, SessionID = orderOnWay.SessionID, OrderSysID = orderOnWay.OrderSysID, OrderRef = orderOnWay.OrderRef, ExchangeID = orderOnWay.ExchangeID, }; Console.WriteLine("撤单。({0})", cancelOrder.ToString2()); frame.CtpTrader.ReqOrderAction(cancelOrder); autoResetEventOrderCompleted.WaitOne(); } frame.CtpTrader.OnRtnOrder -= CtpTrader_OnRtnOrder; return(isSuccess); }
/// <summary> /// 交易所发回的报单错误 /// </summary> /// <param name="pInputOrder"></param> /// <param name="pRspInfo"></param> private void TraderAdapter_OnErrRtnOrderInsert(ThostFtdcInputOrderField pInputOrder, ThostFtdcRspInfoField pRspInfo) { }
private void OnRspOrderInsert(ThostFtdcInputOrderField pInputOrder, ThostFtdcRspInfoField pRspInfo, int nRequestID, bool bIsLast) { __DEBUGPF__(); IsErrorRspInfo(pRspInfo); }
private void OnErrRtnOrderInsert(ThostFtdcInputOrderField pInputOrder, ThostFtdcRspInfoField pRspInfo) { __DEBUGPF__(); IsErrorRspInfo(pRspInfo); }
/// <summary> /// 保单录入请求 /// </summary> void ReqOrderInsert() { ThostFtdcInputOrderField req = new ThostFtdcInputOrderField(); //经纪公司代码 req.BrokerID = BROKER_ID; //投资者代码 req.InvestorID = INVESTOR_ID; //合约代码 req.InstrumentID = INSTRUMENT_ID; //报单引用 req.OrderRef = ORDER_REF; //报单价格条件: 限价 req.OrderPriceType = KSFT.EnumOrderPriceTypeType.LimitPrice; //买卖方向: req.Direction = DIRECTION; //组合开平标志: 开仓 req.CombOffsetFlag_0 = KSFT.EnumOffsetFlagType.Open; //组合投机套保标志 req.CombHedgeFlag_0 = KSFT.EnumHedgeFlagType.Speculation; //价格 req.LimitPrice = LIMIT_PRICE; //数量: 1 req.VolumeTotalOriginal = 1; //有效期类型: 当日有效 req.TimeCondition = KSFT.EnumTimeConditionType.GFD; //成交量类型: 任何数量 req.VolumeCondition = KSFT.EnumVolumeConditionType.AV; //最小成交量: 1 req.MinVolume = 1; //触发条件: 立即 req.ContingentCondition = KSFT.EnumContingentConditionType.Immediately; //强平原因: 非强平 req.ForceCloseReason = KSFT.EnumForceCloseReasonType.NotForceClose; //自动挂起标志: 否 req.IsAutoSuspend = 0; //请求编号 req.RequestID = iRequestID; //用户强评标志: 否 req.UserForceClose = 0; int iResult = api.ReqOrderInsert(req, ++iRequestID); Console.WriteLine("--->>> 报单录入请求: " + ((iResult == 0) ? "成功" : "失败")); }
/// <summary> /// 下单 /// </summary> /// <param name="sender">单子来源 Quote/Arbitrage</param> /// <param name="instrumentID">合约ID</param> /// <param name="directionType">买卖方向 Buy/Sell</param> /// <param name="offsetFlagType">开平标记 Open/CloseToday</param> /// <param name="lots">数量</param> /// <param name="price">价格</param> /// <returns>报单引用OrderRef</returns> public string PlaceOrder(object sender, string instrumentID, EnumDirectionType directionType, EnumOffsetFlagType offsetFlagType, int lots, double price) { ThostFtdcInputOrderField req = new ThostFtdcInputOrderField(); ///经纪公司代码 req.BrokerID = trader.BrokerID; ///投资者代码 req.InvestorID = trader.InvestorID; ///合约代码 req.InstrumentID = instrumentID; ///报单价格条件: 限价 req.OrderPriceType = CTP.EnumOrderPriceTypeType.LimitPrice; ///买卖方向: req.Direction = directionType; ///组合开平标志: 开仓 req.CombOffsetFlag_0 = offsetFlagType; ///组合投机套保标志 req.CombHedgeFlag_0 = CTP.EnumHedgeFlagType.Speculation; ///价格 req.LimitPrice = price; ///数量: 1 req.VolumeTotalOriginal = lots; ///有效期类型: 当日有效 req.TimeCondition = CTP.EnumTimeConditionType.GFD; ///成交量类型: 任何数量 req.VolumeCondition = CTP.EnumVolumeConditionType.AV; ///最小成交量: 1 req.MinVolume = 1; ///触发条件: 立即 req.ContingentCondition = CTP.EnumContingentConditionType.Immediately; ///强平原因: 非强平 req.ForceCloseReason = CTP.EnumForceCloseReasonType.NotForceClose; ///自动挂起标志: 否 req.IsAutoSuspend = 0; ///用户强评标志: 否 req.UserForceClose = 0; OrderRef++; req.OrderRef = OrderRef.ToString(); int iResult = trader.ReqOrderInsert(req, ++RequestID); //OrderRef2ArbitrageStategyMap.Add(req.OrderRef, (Arbitrage)sender); return req.OrderRef; }
/// <summary> /// 保单录入应答 /// </summary> /// <param name="pInputOrder"></param> /// <param name="pRspInfo"></param> /// <param name="nRequestID"></param> /// <param name="bIsLast"></param> void OnRspOrderInsert(ThostFtdcInputOrderField pInputOrder, ThostFtdcRspInfoField pRspInfo, int nRequestID, bool bIsLast) { DebugPrintFunc(new StackTrace()); if (bIsLast && !IsErrorRspInfo(pRspInfo)) { //合约保证金率查询请求 ReqQryInstrumentMarginRate(); } }
/// <summary> /// 保单录入错误回报 /// </summary> /// <param name="pInputOrder"></param> /// <param name="pRspInfo"></param> void OnErrRtnOrderInsert(ThostFtdcInputOrderField pInputOrder, ThostFtdcRspInfoField pRspInfo) { DebugPrintFunc(new StackTrace()); IsErrorRspInfo(pRspInfo); }
/// <summary> /// 报单录入请求响应 /// </summary> /// <param name="pInputOrder"></param> /// <param name="pRspInfo"></param> /// <param name="nRequestID"></param> /// <param name="bIsLast"></param> private void OnRspOrderInsert(ThostFtdcInputOrderField pInputOrder, ThostFtdcRspInfoField pRspInfo, int nRequestID, bool bIsLast) { //交易系统已接收报单 IsErrorRspInfo(pRspInfo); { } }
/// <summary> /// 交易接口->发单操作 /// </summary> /// <param name="pInputOrder"></param> /// <param name="bShow"></param> public void TDReqOrderInsert(ThostFtdcInputOrderField pInputOrder, bool bShow = false) { pInputOrder.BrokerID = this.sBrokerID; pInputOrder.InvestorID = this.sUserID; pInputOrder.BusinessUnit = null; if (pInputOrder.OrderRef == null) { pInputOrder.OrderRef = (iOrderRefID++).ToString(); } if (pInputOrder.MinVolume < 1) pInputOrder.MinVolume = 1; int k = CtpTDApi.ReqOrderInsert(pInputOrder, ++nRequestID); if ((k == -3 || k == -2) && bShow) { MessageBox.Show("大佬,你点的我好疼啊,小女子不堪重负啊,你等等在玩我吧~"); } else if (k != 0 && bShow) { MessageBox.Show("大佬,我脑袋秀逗了,你帮我看看是否我已经登录?"); } }
void OnRspOrderInsert(ThostFtdcInputOrderField pInputOrder, ThostFtdcRspInfoField pRspInfo, int nRequestID, bool bIsLast) { DebugPrintFunc(new StackTrace()); IsErrorRspInfo(pRspInfo); }
public override void OnRspOrderInsert(ThostFtdcInputOrderField pInputOrder, ThostFtdcRspInfoField pRspInfo, int nRequestID, bool bIsLast) { LogCenter.Error("报单录入请求响应:{0} {1}", pRspInfo.ErrorMsg, pRspInfo.ErrorID); }
/// <summary> /// 发单按钮点击事件 /// </summary> /// <param name="sender"></param> /// <param name="e"></param> private void Button_OrderInput_Click(object sender, EventArgs e) { if (TextBox_Trader_InstrumentName.Text == "") { MessageBox.Show("请输入合约名称!", "错误!"); return; } ThostFtdcInputOrderField sInputOrder = new ThostFtdcInputOrderField(); sInputOrder.InstrumentID = TextBox_Trader_InstrumentName.Text; iOrderRefID = iOrderRefID + 1; sInputOrder.BrokerID = sBrokerID; sInputOrder.InvestorID = sUserID; sInputOrder.OrderRef = (iOrderRefID).ToString(); sInputOrder.BusinessUnit = null; sInputOrder.RequestID = nRequestID++; sInputOrder.UserForceClose = 0; sInputOrder.ForceCloseReason = EnumForceCloseReasonType.NotForceClose; sInputOrder.IsAutoSuspend = 0; #region 报单价格及价格条件 if (radioButton_AnyPrice.Checked) { sInputOrder.OrderPriceType = EnumOrderPriceTypeType.AnyPrice; sInputOrder.LimitPrice = 0; } else if (radioButton_LimitePrice.Checked || this.textBox_OrderPrice.Text.ToString() != "") { sInputOrder.OrderPriceType = EnumOrderPriceTypeType.LimitPrice; try { sInputOrder.LimitPrice = double.Parse(this.textBox_OrderPrice.Text.ToString()); } catch (Exception ec) { MessageBox.Show("限价单价格输入错误!\n\n错误信息:\n" + ec.Message, "错误!"); return; } } #endregion #region 开平按钮 if (radioButton_Open.Checked) { sInputOrder.CombOffsetFlag = EnumOffsetFlagType.Open; } else if (radioButton_CloseALL.Checked) { sInputOrder.CombOffsetFlag = EnumOffsetFlagType.Close; } else if (radioButton_CloseToday.Checked) { sInputOrder.CombOffsetFlag = EnumOffsetFlagType.CloseToday; } else if (radioButton_CloseYestoday.Checked) { sInputOrder.CombOffsetFlag = EnumOffsetFlagType.CloseYesterday; } #endregion 开平按钮 #region 买卖按钮 if (radioButton_Buy.Checked) { sInputOrder.Direction = EnumDirectionType.Buy; } else if (radioButton_Sell.Checked) { sInputOrder.Direction = EnumDirectionType.Sell; } #endregion #region 投机套保按钮 if (this.radioButton_HedgeFlagSpeculation.Checked) { sInputOrder.CombHedgeFlag = EnumHedgeFlagType.Speculation; } else if (this.radioButton_HedgeFlagArbitrage.Checked) { sInputOrder.CombHedgeFlag = EnumHedgeFlagType.Arbitrage; } else if (this.radioButton_HedgeFlagArbitrage.Checked) { sInputOrder.CombHedgeFlag = EnumHedgeFlagType.Hedge; } #endregion 投机套保按钮 #region 成交量类型 switch (this.comboBox_VolumeCondition.Text) { case "任意数量": sInputOrder.VolumeCondition = EnumVolumeConditionType.AV; break; case "最小数量": sInputOrder.VolumeCondition = EnumVolumeConditionType.MV; break; case "全部数量": sInputOrder.VolumeCondition = EnumVolumeConditionType.CV; break; default: sInputOrder.VolumeCondition = EnumVolumeConditionType.AV; break; } #endregion #region 触发条件 switch (this.comboBox_ContingentCondition.Text) { case "立即": sInputOrder.ContingentCondition = EnumContingentConditionType.Immediately; break; case "止损": sInputOrder.ContingentCondition = EnumContingentConditionType.Touch; break; case "止赢": sInputOrder.ContingentCondition = EnumContingentConditionType.TouchProfit; break; case "预埋单": sInputOrder.ContingentCondition = EnumContingentConditionType.ParkedOrder; break; case "最新价大于条件价": sInputOrder.ContingentCondition = EnumContingentConditionType.LastPriceGreaterThanStopPrice; break; case "最新价大于等于条件价": sInputOrder.ContingentCondition = EnumContingentConditionType.LastPriceGreaterEqualStopPrice; break; case "最新价小于条件价": sInputOrder.ContingentCondition = EnumContingentConditionType.LastPriceLesserThanStopPrice; break; case "最新价小于等于条件价": sInputOrder.ContingentCondition = EnumContingentConditionType.LastPriceLesserEqualStopPrice; break; case "卖一价大于条件价": sInputOrder.ContingentCondition = EnumContingentConditionType.AskPriceGreaterThanStopPrice; break; case "卖一价大于等于条件价": sInputOrder.ContingentCondition = EnumContingentConditionType.AskPriceGreaterEqualStopPrice; break; case "卖一价小于条件价": sInputOrder.ContingentCondition = EnumContingentConditionType.AskPriceLesserThanStopPrice; break; case "卖一价小于等于条件价": sInputOrder.ContingentCondition = EnumContingentConditionType.AskPriceLesserEqualStopPrice; break; case "买一价大于条件价": sInputOrder.ContingentCondition = EnumContingentConditionType.BidPriceGreaterThanStopPrice; break; case "买一价大于等于条件价": sInputOrder.ContingentCondition = EnumContingentConditionType.BidPriceGreaterEqualStopPrice; break; case "买一价小于条件价": sInputOrder.ContingentCondition = EnumContingentConditionType.BidPriceLesserThanStopPrice; break; case "买一价小于等于条件价": sInputOrder.ContingentCondition = EnumContingentConditionType.BidPriceLesserEqualStopPrice; break; default: sInputOrder.ContingentCondition = EnumContingentConditionType.Immediately; break; } #endregion #region 有效期限 switch (this.comboBox_TimeCondition.Text) { case "立即完成": sInputOrder.TimeCondition = EnumTimeConditionType.IOC; break; case "本节有效": sInputOrder.TimeCondition = EnumTimeConditionType.GFS; break; case "当日有效": sInputOrder.TimeCondition = EnumTimeConditionType.GFD; break; case "指定日期前有效": sInputOrder.TimeCondition = EnumTimeConditionType.GTD; break; case "撤销前有效": sInputOrder.TimeCondition = EnumTimeConditionType.GTC; break; case "集合竞价有效": sInputOrder.TimeCondition = EnumTimeConditionType.GFA; break; default: sInputOrder.TimeCondition = EnumTimeConditionType.IOC; break; } #endregion #region 报单数量 sInputOrder.VolumeTotalOriginal = (int)numericUpDown_OrderNumber.Value; sInputOrder.MinVolume = (int)numericUpDown_MinVolume.Value; #endregion 报单数量 this.TDReqOrderInsert(sInputOrder, true); if (checkBox_ResetAfterSend.Checked) this.RestSendOrderFiled(); }
private void PolicySampleRUN(object s) { MainForm cMainForm = (MainForm)s; ThostFtdcInputOrderField sInputOrder = new ThostFtdcInputOrderField(); ThostFtdcDepthMarketDataField pDepthMarketData = new ThostFtdcDepthMarketDataField(); QueueSendData Data = new QueueSendData(); while (Queue_PolicySample.bUse) { if (Queue_PolicySample.DataQ.Count == 0) { Queue_PolicySample.Are.WaitOne(); Queue_PolicySample.Are.Reset(); } else { Data = Queue_PolicySample.DataQ.Dequeue(); #region 这里写策略 switch (Data.QueueType) { case EnumQueueType.DepthMarketData: Queue_PolicySample.m_lReceiveNum++; pDepthMarketData = (ThostFtdcDepthMarketDataField)Data.QueueData; if (pDepthMarketData.InstrumentID == "IF1309") { Queue_PolicySample.m_lRunNum++; Queue_PolicySample.add_log("插入报单!触发单:" + pDepthMarketData.InstrumentID + " \n时间:" + pDepthMarketData.UpdateTime); // cMainForm.TDReqOrderInsert(sInputOrder); } else { Queue_PolicySample.m_lDropNum++; } break; case EnumQueueType.OnRtnOrder: break; case EnumQueueType.StopSign0: Queue_PolicySample.bUse = false; return; default: break; } #endregion } } Queue_PolicySample.bUse = false; }
public override void OnRspOrderInsert(ThostFtdcInputOrderField pInputOrder, ThostFtdcRspInfoField pRspInfo, int nRequestID, bool bIsLast) { throw new NotImplementedException(); }
private void TraderAdapter_OnRspOrderInsert(ThostFtdcInputOrderField pInputOrder, ThostFtdcRspInfoField pRspInfo, int nRequestId, bool bIsLast) { }
///报单录入请求响应 public void OnRspOrderInsert(ThostFtdcInputOrderField pInputOrder, ThostFtdcRspInfoField pRspInfo, int nRequestID, bool bIsLast) { if (!IsErrorRspInfo(pRspInfo)) { } }
/// <summary> /// 报单录入错误回报 /// </summary> /// <param name="pInputOrder"></param> /// <param name="pRspInfo"></param> void OnErrRtnOrderInsert(ThostFtdcInputOrderField pInputOrder, ThostFtdcRspInfoField pRspInfo) { }
///报单录入错误回报 public void OnErrRtnOrderInsert(ThostFtdcInputOrderField pInputOrder, ThostFtdcRspInfoField pRspInfo) { if (!IsErrorRspInfo(pRspInfo)) { } }
public static extern int TdReqOrderInsert(IntPtr pApi, ThostFtdcInputOrderField pInputOrder, int nRequestID);
/// <summary> /// ""发单错误(柜台)""" /// </summary> /// <param name="pInputOrder"></param> /// <param name="pRspInfo"></param> /// <param name="nRequestID"></param> /// <param name="bIsLast"></param> public void HandleOnRspOrderInsert(ThostFtdcInputOrderField pInputOrder, ThostFtdcRspInfoField pRspInfo, int nRequestID, bool bIsLast) { Console.WriteLine("发单错误(柜台)"); }
/// <summary> ///报单录入请求 /// </summary> public int ReqOrderInsert(ThostFtdcInputOrderField pInputOrder, int nRequestID) { return(Interop.TdReqOrderInsert(Handle, pInputOrder, nRequestID)); }