void DataApi_OnRtnEvent(object sender, OnRtnEventArgs e) { Console.WriteLine("DataApi_OnRtnEvent " + e.EventType.ToString()); var fld = Conv.P2S <ThostFtdcDepthMarketDataField>(e.Param); Console.WriteLine("{0}.{1:D3} {2} {3}", fld.UpdateTime, fld.UpdateMillisec, fld.InstrumentID, fld.LastPrice); }
private void MdApi_OnRtnEvent(object sender, OnRtnEventArgs e) { switch (e.EventType) { case EnumOnRtnType.OnRtnDepthMarketData: { var fld = Conv.P2S <ThostFtdcDepthMarketDataField>(e.Param); OnRtnDepthMarketData(fld); } break; default: HandleStatusInternal("CPT行情Md未知事件返回MdApi_OnRtnEvent:" + e.EventType.ToString()); break; } }
private void TraderApi_OnRtnEvent(object sender, OnRtnEventArgs e) { if (e.Param == IntPtr.Zero) { HandleStatusInternal("TraderApi_OnRtnEvent返回参数e.Param为空!"); return; } switch (e.EventType) { case EnumOnRtnType.OnRtnOrder: { var order = Conv.P2S <ThostFtdcOrderField>(e.Param); OnRtnOrder(order); } break; case EnumOnRtnType.OnRtnTrade: { var trade = Conv.P2S <ThostFtdcTradeField>(e.Param); OnRtnTrade(trade); } break; case EnumOnRtnType.OnRtnForQuoteRsp: { var forQuote = Conv.P2S <ThostFtdcForQuoteRspField>(e.Param); OnRtnForQuoteRsp(forQuote); } break; case EnumOnRtnType.OnRtnQuote: { var quote = Conv.P2S <ThostFtdcQuoteField>(e.Param); OnRtnQuote(quote); } break; } }
void DataApi_OnRtnEvent(object sender, OnRtnEventArgs e) { //Console.WriteLine("DataApi_OnRtnEvent " + e.EventType.ToString()); var fld = Conv.P2S <ThostFtdcDepthMarketDataField>(e.Param); //string sData = "当前交易日:{0} 当前时间:{1} 最后修改时间:{2} 成交量:{3} 卖1价格:{4} 卖1数量:{5} 买1价格:{6} 买1数量:{7} 本次结算价:{8} 成交数量:{9} "; //sData = string.Format(sData, fld.TradingDay, fld.UpdateTime, fld.UpdateMillisec, vol, fld.AskPrice1, fld.AskVolume1, fld.BidPrice1, fld.BidVolume1, fld.SettlementPrice, fld.Volume); int vol = fld.Volume - lastData.Volume; string sLose = ""; if (lastData.ActionDay == null) { lastData = fld; return; } //Console.WriteLine("{0}.{1:D3} {2} {3}", fld.UpdateTime, fld.UpdateMillisec, fld.InstrumentID, fld.LastPrice); //if (vol > 0) //{ //双开 空换 多换 空平 多平 string sData2 = "当前交易日:{0} 当前时间:{1} 当前价格:{2} 成交:{3} {4}"; //多开 double douLose; ConsoleColor tColor = ConsoleColor.White; int intDirect = 0; if (fld.LastPrice > lastData.AskPrice1 || fld.LastPrice > lastData.BidPrice1) { intDirect = 1; tColor = ConsoleColor.Red; } else if (fld.LastPrice < lastData.AskPrice1 || fld.LastPrice < lastData.BidPrice1) { intDirect = -1; tColor = ConsoleColor.Green; } else { tColor = ConsoleColor.White; } if (vol > 0) { Console.ForegroundColor = tColor; //Console.WriteLine(vol); } //else { // if (fld.LastPrice > fld.AskPrice1) // { // intDirect = 1; // } // else if (fld.LastPrice < fld.BidPrice1) // { // intDirect = -1; // } // else { // intDirect = 0; //middle // } //} double xx = 0; double yy = 0; if (intDirect == 1) { //仓位变化 /* * * 16 16 双开 - 成交:16 空平:16 多开:0 多平:16 空开:0 * 14 -10 空平 - 成交:14 空平:-12 多开:2 多平:-12 空开:2 * 8 0 多换 成交:8 空平:-4 多开:4 多平:-4 空开:4 * * */ douLose = fld.OpenInterest - lastData.OpenInterest; #region 涨 //1.多开 多平 空开 空平 if (douLose != 0) { calCtp(vol, douLose, ref xx, ref yy); } else { xx = vol; yy = vol; } sLose += " 空平:" + xx; sLose += " 多开:" + yy; #endregion } if (intDirect == -1) { /* * 46 -14 多平 * 10 0 空换 * 2 -2 双平 */ #region 跌 douLose = fld.OpenInterest - lastData.OpenInterest; if (douLose != 0) { calCtp(vol, douLose, ref xx, ref yy); } else { xx = vol; yy = vol; } sLose += " 多平:" + xx; sLose += " 空开:" + yy; #endregion } if (vol > 0) { Console.WriteLine(string.Format(sData2, fld.TradingDay, fld.UpdateTime, fld.LastPrice, vol, sLose) ); } //if (fld.OpenInterest < lastData.OpenInterest) //{ // sLose = " 平仓: " + (fld.OpenInterest - lastData.OpenInterest ); //} //else if (fld.OpenInterest == lastData.OpenInterest) //{ // sLose = " 换手: " + (lastData.Volume - fld.Volume); //} //else //{ // sLose = " 增仓: " + (lastData.Volume - fld.Volume); //} //if ( vol > 0 ) //Console.WriteLine(string.Format(sData2, // fld.TradingDay, fld.UpdateTime, fld.LastPrice, // vol, sLose) // ); //} lastData = fld; douLastPrice = fld.LastPrice; }
void TraderApi_OnRtnEvent(object sender, OnRtnEventArgs e) { Console.WriteLine("=====> " + e.EventType); }