private void kryptonButtonLogin_Click(object sender, EventArgs e) { ShowMsg("登录中..."); string front = (string)_dt.Rows.Find(this.kryptonComboBoxServer.Text)[1]; string[] fs = front.Split('|'); if (!string.IsNullOrEmpty(fs[3])) { quote = new Quote(string.Format("{0}_Quote_proxy.dll", fs[0])) { Broker = fs[1], Server = fs[3], Investor = this.kryptonTextBoxInvestor.Text, Password = this.kryptonTextBoxPassword.Text, }; quote.OnFrontConnected += quote_OnFrontConnected; quote.OnRspUserLogin += quote_OnRspUserLogin; } trade = new Trade(string.Format("{0}_Trade_proxy.dll", fs[0])) { Server = fs[2], Investor = this.kryptonTextBoxInvestor.Text, Password = this.kryptonTextBoxPassword.Text, Broker = fs[1], }; trade.OnFrontConnected += trade_OnFrontConnected; trade.OnRspUserLogin += trade_OnRspUserLogin; trade.OnRtnExchangeStatus += trade_OnRtnExchangeStatus; trade.ReqConnect(); }
//输入:q1ctp /t1ctp /q2xspeed /t2speed private static void Main(string[] args) { Trade t; Quote q; R: Console.WriteLine("选择接口:\t1-CTP 2-xSpeed 3-Femas 4-股指仿真 5-外汇仿真 6-郑商商品期权仿真"); char c = Console.ReadKey(true).KeyChar; switch (c) { case '1': //CTP t = new Trade("ctp_trade_proxy.dll") { Server = "tcp://101.95.8.178:51205", Broker = "4040", }; q = new Quote("ctp_quote_proxy.dll") { Server = "tcp://101.95.8.178:51213", Broker = "4040", }; //t = new Trade("ctp_trade_proxy.dll") //{ // Server = "tcp://211.95.40.130:51205", // Broker = "1017", //}; //q = new Quote("ctp_quote_proxy.dll") //{ // Server = "tcp://211.95.40.130:51213", // Broker = "1017", //}; break; case '2': //xSpeed t = new Trade("xSpeed_trade_proxy.dll") { Server = "tcp://203.187.171.250:10910", Broker = "0001", }; q = new Quote("xSpeed_quote_proxy.dll") { Server = "tcp://203.187.171.250:10915", Broker = "0001", }; break; case '3': //femas t = new Trade("femas_trade_proxy.dll") { Server = "tcp://116.228.53.149:6666", Broker = "0001", }; q = new Quote("femas_quote_proxy.dll") { Server = "tcp://116.228.53.149:6888", Broker = "0001", }; break; case '4': //CTP t = new Trade("ctp_trade_proxy.dll") { Server = "tcp://124.207.185.88:41205", Broker = "1010", }; q = new Quote("ctp_quote_proxy.dll") { Server = "tcp://124.207.185.88:41213", Broker = "1010", }; break; case '5': //CTP t = new Trade("femas_trade_proxy.dll") { Server = "tcp://117.184.207.111:7036", Broker = "2713", }; q = new Quote("femas_quote_proxy.dll") { Server = "tcp://117.184.207.111:7230", Broker = "2713", }; break; case '6': //CTP t = new Trade("ctp_trade_proxy.dll") { Server = "tcp://106.39.36.72:51205", Broker = "1010", }; q = new Quote("ctp_quote_proxy.dll") { Server = "tcp://106.39.36.72:51213", Broker = "1010", }; break; default: Console.WriteLine("请重新选择"); goto R; } Console.WriteLine("请输入帐号:"); t.Investor = q.Investor = Console.ReadLine(); Console.WriteLine("请输入密码:"); t.Password = q.Password = Console.ReadLine(); q.OnFrontConnected += (sender, e) => { Console.WriteLine("OnFrontConnected"); q.ReqUserLogin(); }; q.OnRspUserLogin += (sender, e) => Console.WriteLine("OnRspUserLogin:{0}", e.Value); q.OnRspUserLogout += (sender, e) => Console.WriteLine("OnRspUserLogout:{0}", e.Value); q.OnRtnError += (sender, e) => Console.WriteLine("OnRtnError:{0}=>{1}", e.ErrorID, e.ErrorMsg); //q.OnRtnTick += (sender, e) => Console.WriteLine("OnRtnTick:{0}", e.Tick); t.OnFrontConnected += (sender, e) => t.ReqUserLogin(); t.OnRspUserLogin += (sender, e) => { Console.WriteLine("OnRspUserLogin:{0}", e.Value); if (e.Value == 0) q.ReqConnect(); }; t.OnRspUserLogout += (sender, e) => Console.WriteLine("OnRspUserLogout:{0}", e.Value); t.OnRtnCancel += (sender, e) => Console.WriteLine("OnRtnCancel:{0}", e.Value.OrderID); t.OnRtnError += (sender, e) => Console.WriteLine("OnRtnError:{0}=>{1}", e.ErrorID, e.ErrorMsg); t.OnRtnExchangeStatus += (sender, e) => Console.WriteLine("OnRtnExchangeStatus:{0}=>{1}", e.Exchange, e.Status); t.OnRtnNotice += (sender, e) => Console.WriteLine("OnRtnNotice:{0}", e.Value); t.OnRtnOrder += (sender, e) => { Console.WriteLine("OnRtnOrder:{0}", e.Value); _orderId = e.Value.OrderID; }; t.OnRtnTrade += (sender, e) => Console.WriteLine("OnRtnTrade:{0}", e.Value.TradeID); t.ReqConnect(); Thread.Sleep(3000); if (!t.IsLogin) goto R; Console.WriteLine(t.DicInstrumentField.Aggregate("\r\n合约", (cur, n) => cur + "\t" + n.Value.InstrumentID)); string inst = string.Empty; Console.WriteLine("请输入合约:"); inst = Console.ReadLine(); q.ReqSubscribeMarketData(inst); Inst: Console.WriteLine("q:退出 1-BK 2-SP 3-SK 4-BP 5-撤单"); Console.WriteLine("a-交易所状态 b-委托 c-成交 d-持仓 e-合约 f-权益 g-换合约"); DirectionType dire = DirectionType.Buy; OffsetType offset = OffsetType.Open; c = Console.ReadKey().KeyChar; switch (c) { case '1': dire = DirectionType.Buy; offset = OffsetType.Open; break; case '2': dire = DirectionType.Sell; offset = OffsetType.Close; break; case '3': dire = DirectionType.Sell; offset = OffsetType.Open; break; case '4': dire = DirectionType.Buy; offset = OffsetType.Close; break; case '5': t.ReqOrderAction(253); break; case 'a': Console.WriteLine(t.DicExcStatus.Aggregate("\r\n交易所状态", (cur, n) => cur + "\r\n" + n.Key + "=>" + n.Value)); break; case 'b': Console.ForegroundColor = ConsoleColor.Cyan; Console.WriteLine(t.DicOrderField.Aggregate("\r\n委托", (cur, n) => cur + "\r\n" + n.Value.GetType().GetFields().Aggregate(string.Empty, (f, v) => f + string.Format("{0,12}", v.GetValue(n.Value))))); break; case 'c': Console.ForegroundColor = ConsoleColor.DarkCyan; Console.WriteLine(t.DicTradeField.Aggregate("\r\n成交", (cur, n) => cur + "\r\n" + n.Value.GetType().GetFields().Aggregate(string.Empty, (f, v) => f + string.Format("{0,12}", v.GetValue(n.Value))))); break; case 'd': //持仓 Console.ForegroundColor = ConsoleColor.DarkGreen; Console.WriteLine(t.DicPositionField.Aggregate("\r\n持仓", (cur, n) => cur + "\r\n" + n.Value.GetType().GetFields().Aggregate(string.Empty, (f, v) => f + string.Format("{0,12}", v.GetValue(n.Value))))); break; case 'e': Console.WriteLine(t.DicInstrumentField.Aggregate("\r\n合约", (cur, n) => cur + "\r\n" + n.Value.GetType().GetFields().Aggregate(string.Empty, (f, v) => f + string.Format("{0,12}", v.GetValue(n.Value))))); break; case 'f': Console.WriteLine(t.TradingAccount.GetType().GetFields().Aggregate("\r\n权益\t", (cur, n) => cur + "," + n.GetValue(t.TradingAccount).ToString())); break; case 'g': Console.WriteLine("请输入合约:"); inst = Console.ReadLine(); q.ReqSubscribeMarketData(inst); break; case 'q': q.ReqUserLogout(); t.ReqUserLogout(); Thread.Sleep(2000); //待接口处理后续操作 Environment.Exit(0); break; } if (c >= '1' && c <= '4') { Console.WriteLine("请选择委托类型: 1-限价 2-市价 3-FAK 4-FOK"); OrderType ot = OrderType.Limit; switch (Console.ReadKey().KeyChar) { case '2': ot = OrderType.Market; break; case '3': ot = OrderType.FAK; break; case '4': ot = OrderType.FOK; break; } MarketData tick; if (q.DicTick.TryGetValue(inst, out tick)) { double price = dire == DirectionType.Buy ? tick.AskPrice : tick.BidPrice; _orderId = -1; Console.WriteLine(t.ReqOrderInsert(inst, dire, offset, price, 1, pType: ot)); for (int i = 0; i < 3; ++i) { Thread.Sleep(200); if (-1 != _orderId) { Console.WriteLine("委托标识:" + _orderId); break; } } } } goto Inst; }