public OnrichOrderMaker(string ip, string sid, string password) : base(ip, sid, password) { _tradeAPI = new TradeAPI(HOST, PORT, SOURCE) { AutoRetrieveProductInfo = true, AutoSubReport = true, AutoRecoverReport = true }; _tradeAPI.SetProductFileBaseURL(PRODUCT_URL); _tradeAPI.OnTradeAPIRcvData += OnTAPIRcvData; _tradeAPI.OnTradeAPIStatus += OnTAPIStatus; }
private void LoadHistoryBars() { int resolution = parameter.BarInteval; string nowTime = DateTime.Now.ToString("yyyy-MM-ddTHH:mm:ssZ"); JArray history = TradeAPI.GetKLine(SecInfo, resolution.ToString(), "", nowTime); for (int i = 1; i < parameter.BarCountIn + 1; i++) { DieBar bar = new DieBar(); bar.Open = System.Convert.ToDouble(history[i][1].ToString()); bar.High = System.Convert.ToDouble(history[i][2].ToString()); bar.Low = System.Convert.ToDouble(history[i][3].ToString()); bar.Close = System.Convert.ToDouble(history[i][4].ToString()); LiveBarsIn.Add(bar); } }
public void ProcessRequest(HttpContext context) { TradeResponse rsp = new TradeResponse(); rsp.ResultCode = 0; //获取请求 try { var ip = context.Request.UserHostAddress; var action = context.Request["action"]; var requestStr = context.Request["request"]; Loggers.Debug(new DebugLogInfo() { Message = action + "请求:" + requestStr }); var request = requestStr.DeserializeJSONTo <TradeRequest>(); var userInfo = new BasicUserInfo() { ClientID = request.ClientID, UserID = request.UserID }; //if (!IsValid(ip, request)) //{ // rsp.ResultCode = 100; // rsp.Message = "非法的请求!"; // context.Response.Write(rsp.ToJSON()); // return; //} try { switch (action) { case "CreateOrder": #region 创建订单 var result = API.TradeAPI.CreateOrder(request); rsp.Datas = result; if (result.ResultCode < 100) { rsp.ResultCode = 0; } else if (result.ResultCode < 200) { rsp.ResultCode = 101; } else if (result.ResultCode < 300) { rsp.ResultCode = 102; } else if (result.ResultCode < 400) { rsp.ResultCode = 103; } else if (result.ResultCode < 500) { rsp.ResultCode = 104; } #endregion break; case "QueryOrder": rsp.Datas = API.TradeAPI.QueryOrder(request); break; case "IsOrderPaid": rsp.Datas = API.TradeAPI.IsOrderPaid(request); break; case "CreateWXNativePayUrl": rsp.Datas = API.TradeAPI.CreateWXNativePayUrl(request); break; case "WXGetSign": rsp.Datas = API.TradeAPI.WXGetSign(request); break; case "WXGetUpdateFeedBackUrl": rsp.Datas = API.TradeAPI.WXGetUpdateFeedBackUrl(request); break; case "SetPayChannel": rsp.Datas = API.TradeAPI.SetPayChannel(request); break; case "Pay": rsp.Datas = TradeAPI.PrePaidCardPay(request); break; default: throw new Exception("未知的接口名称"); } } catch (Exception ex) { rsp.ResultCode = 500; rsp.Message = ex.Message; Loggers.Exception(new ExceptionLogInfo(userInfo, ex)); } Loggers.Debug(new DebugLogInfo() { Message = string.Format("请求:{0}{1}响应:{2}", requestStr, Environment.NewLine, rsp.ToJSON()) }); context.Response.Write(rsp.ToJSON()); } catch (Exception ex) { Loggers.Exception(new ExceptionLogInfo(ex)); rsp.ResultCode = 500; rsp.Message = ex.Message; context.Response.Write(rsp.ToJSON()); } }
private void OnTAPIRcvData(TradeAPI sender, MomBase mb) { string msg = ""; int errorCode = 0; switch (mb.dataType) { case 103: MB103 mb103 = mb as MB103; msg = String.Format("公告查詢成功,數量[{0}]", mb103.notices.Count); foreach (NoticeMsg item in mb103.notices) { msg += Environment.NewLine; msg += String.Format("{0}|{1}|{2}|{3}", item.kind, item.notice_type, item.post_time, item.content); } break; case 114: MB114 mb114 = mb as MB114; msg = String.Format(" 收到主機公告, {0}", mb114.content); break; case 201: MB201 mb201 = mb as MB201; if (int.TryParse(mb201.err_code, out errorCode) && (errorCode == 0)) { msg = String.Format("{0} 委託成功 {1}", mb201.user_def, mb201.toLog()); } else { msg = String.Format("{0} 委託失敗, ErrCode={1} ErrMsg={2}", mb201.user_def, mb201.err_code, mb201.err_msg); } break; case 202: MB202 mb202 = mb as MB202; msg = String.Format("{0} 成交{1}口 {2}", mb202.user_def, mb202.qty_cum, mb202.toLog()); break; case 401: MB401 mb401 = mb as MB401; if (int.TryParse(mb401.err_code, out errorCode) && (errorCode == 0)) { msg = String.Format("{0} 證券委託成功 {1}", mb401.user_def, mb401.toLog()); } else { msg = String.Format("{0} 證券委託失敗, ErrCode={1} ErrMsg={2}", mb401.user_def, mb401.err_code, mb401.err_msg); } break; case 402: MB402 mb402 = mb as MB402; msg = String.Format("{0} 成交{1}口 {2}", mb402.user_def, mb402.deal_qty, mb402.toLog()); break; case 404: case 405: case 406: msg = String.Format(" 委託回報回補:{0}", mb.toLog()); break; case 411: msg = String.Format(" 即時庫存查詢:{0}", mb.toLog()); break; case 413: msg = String.Format(" 對帳單查詢:{0}", mb.toLog()); break; case 415: msg = String.Format(" 整戶維持率查詢:{0}", mb.toLog()); break; case 417: msg = String.Format(" 證券庫存回報:{0}", mb.toLog()); break; case 419: msg = String.Format(" 證券全額交割股回覆:{0}", mb.toLog()); break; case 421: msg = String.Format(" 證券歷史淨收付回報:{0}", mb.toLog()); break; case 423: msg = String.Format(" 證券對帳單回報:{0}", mb.toLog()); break; case 425: msg = String.Format(" 證券已實現損益查詢:{0}", mb.toLog()); break; case 427: msg = String.Format(" 證券即時庫存明細損益試算回報:{0}", mb.toLog()); break; case 429: msg = String.Format(" 證券即時庫存彙總損益試算回報:{0}", mb.toLog()); break; case 431: msg = String.Format(" 證券自訂成本回覆:{0}", mb.toLog()); break; case 205: MB205 mb205 = mb as MB205; if (mb205.sub_acno.Trim().Length > 0) { msg = String.Format("{0}-{1} 委託回報回補 {2}", mb205.branch_id, mb205.sub_acno, mb205.toLog()); } else { msg = String.Format("\r\n{0}-{1} 委託回報回補 {2}", mb205.branch_id, mb205.acno, mb205.toLog()); } break; case 206: MB206 mb206 = mb as MB206; if (mb206.sub_acno.Trim().Length > 0) { msg = String.Format("\r\n{0}-{1} 成交回報回補 {2}", mb206.branch_id, mb206.sub_acno, mb206.toLog()); } else { msg = String.Format("\r\n{0}-{1} 成交回報回補 {2}", mb206.branch_id, mb206.acno, mb206.toLog()); } break; //case 301: case 328: MB328 mb328 = mb as MB328; msg = String.Format(" 權益數查詢成功:{0}", mb328.toLog()); break; case 303: MB303 mb303 = mb as MB303; msg = String.Format(" 客戶部位明細查詢成功:{0}", mb303.toLog()); break; case 305: MB305 mb305 = mb as MB305; msg = String.Format(" 客戶平倉明細查詢成功:{0}", mb305.toLog()); break; case 308: MB308 mb308 = mb as MB308; msg = String.Format(" 客戶平倉彙總查詢成功:{0}", mb308.toLog()); break; case 310: MB310 mb310 = mb as MB310; msg = String.Format(" 客戶部位彙總查詢成功:{0}", mb310.toLog()); break; case 312: MB312 mb312 = mb as MB312; msg = String.Format(" 客戶部位明細查詢成功:{0}", mb312.toLog()); break; case 229: MB229 mb229 = mb as MB229; msg = String.Format(" 客戶平倉明細MB229查詢成功:{0}", mb229.toLog()); break; case 314: case 326: MB314 mb314 = mb as MB314; msg = String.Format(" 客戶平倉明細彙總查詢成功:{0}", mb314.toLog()); break; case 316: MB316 mb316 = mb as MB316; msg = String.Format(" 客戶部位彙總查詢成功:{0}", mb316.toLog()); break; case 320: case 323: MB320 mb320 = mb as MB320; msg = String.Format(" VIP權益數查詢成功:{0}", mb320.toLog()); break; case 322: case 324: MB322 mb322 = mb as MB322; msg = String.Format(" VIP部位彙總查詢成功:{0}", mb322.toLog()); break; case 501: case 505: MB501 mb501 = mb as MB501; if (int.TryParse(mb501.ErrCode, out errorCode) && (errorCode == 0)) { msg = String.Format("{0} 委託成功 {1}", mb501.UserDef, mb501.toLog()); } else { msg = String.Format("{0} 委託失敗, ErrCode={1} ErrMsg={2}", mb501.UserDef, mb501.ErrCode, mb501.Msg); } break; case 502: case 506: MB502 mb502 = mb as MB502; msg = String.Format("成交{0}口 {1}", mb502.DealQty, mb502.toLog()); break; case 504: MB504 mb504 = mb as MB504; msg = String.Format(" 外期回補回報狀態通知:{0}", mb504.toLog()); break; case 511: MB511 mb511 = mb as MB511; msg = String.Format(" 外期權益數查詢成功(大量):{0}", mb511.toLog()); break; case 513: MB513 mb513 = mb as MB513; msg = String.Format(" 外期部位彙總查詢成功(大量):{0}", mb513.toLog()); break; case 515: MB515 mb515 = mb as MB515; msg = String.Format(" 外期部位明細查詢成功(大量):{0}", mb515.toLog()); break; case 517: MB517 mb517 = mb as MB517; msg = String.Format(" 外期平倉明細查詢成功(大量):{0}", mb517.toLog()); break; case 9000: msg = String.Format(" Note for market status:{0}", mb.toLog()); break; default: break; } }