public void reportResults() { var callback = new DirectExecutionCommands.HostCapTrCallback(1); ProgramControl.getGateway().CommRqData("FDDLManager-cap", "opw00001", 0, Screens.SCREEN_HOSTCAP); TrEventManager.addCallback("FDDLManager-cap", callback); int timeoutCounter = 0; while (!callback.isDataReady() && timeoutCounter < 30000) { System.Threading.Thread.Sleep(10); timeoutCounter += 10; } foreach (var plan in m_fddlPlans) { string planReport = "{" + "\"RunningID\" : " + plan.getID() + "," + "\"HostName\" : " + SystemInfo.HOST_NAME + "," + "\"Achieved\" : " + plan.getAchieved().ToString() + "," + "\"Budget\" : " + callback.getBudget().ToString() + "}"; sendto(planReport); } }
public FDDLSellExecution(string id, string stockCode, int quantity, int price) : base(id, "FDDL", stockCode, quantity, OrderType.SELL, price) { m_stockName = ProgramControl.getGateway().GetMasterCodeName(getStockCode()); addSchedule(new DateTime(DateTime.Now.Year, DateTime.Now.Month, DateTime.Now.Day, 15, 20, 30), firstTrial); addSchedule(new DateTime(DateTime.Now.Year, DateTime.Now.Month, DateTime.Now.Day, 15, 30, 10), secondTrial); addSchedule(new DateTime(DateTime.Now.Year, DateTime.Now.Month, DateTime.Now.Day, 16, 0, 10), thirdTrial); }
public override void run() { DateTime now = DateTime.Now; int flag = 0; for (int i = 0; i < m_scheTime.Count; i++) { try { if (m_scheTime[i] > now) { if (flag == 0) { if (i > 0) { m_tasks[i - 1](null, null); } flag = 1; } reserveTask(m_scheTime[i] - now, m_tasks[i]); } } catch (Exception e) { string errorMessage = string.Format( "Exception : ScheduledExecution : run\n" + "Exception Message : {0}\n" + "Detail\n" + "ID : {1}\n" + "PlanName : {2}\n" + "StockCode : {3}", e.Message, getID(), getPlanName(), getStockCode()); ProgramControl.getLogger().Error(errorMessage); } } }
private static Dictionary <string, string> s_orderMap = new Dictionary <string, string>();//orderid -> reqName public static void addCallback(string reqName, ContractionEventCallback callback) { if (s_callbacks.ContainsKey(reqName)) { //Debug Log : 이미 있는 reqName (요청 이름 유일성 문제) -> 가장 마지막으로 대체 ProgramControl.getLogger().Debug(string.Format("ContractionEventManager : addCallback : 이미 있는 reqName임.(RQName : {0})", reqName)); } s_callbacks[reqName] = callback; }
private void thirdTrial(object sender, ElapsedEventArgs e) { TrEventManager.addCallback("FDDL-AfterMarket", new FDDLAfterMarketEP(this)); int res = ProgramControl.getGateway().CommRqData("FDDL-AfterMarket", "opt10001", 0, Screens.SCREEN_FDDLORDER); if (res != 0) { //Debug Log -> 리턴코드 값 / 리턴코드표 참고 } }
public static void gotContractionMessage(string reqName, string message) { if (s_callbacks.ContainsKey(reqName)) { s_callbacks[reqName].eventMessageCallback(message); } else { //Debug Log : callback 등록되지 않음 ProgramControl.getLogger().Debug(string.Format("ContractionEventManager : gotContractionMessage : reqName에 대해 적절한 callback 정의되지 않음(RQName : {0})", reqName)); } }
public static void addCallback(string reqName, TrEventCallback callback) { if (s_callbacks.ContainsKey(reqName)) { //Debug Log ProgramControl.getLogger().Debug(string.Format("TrEventManager : addCallback : 이미 있는 reqName임.(RQName : {0})", reqName)); } else { s_callbacks[reqName] = callback; } }
private void firstTrial(object sender, ElapsedEventArgs e) { var exeData = new FDDLExecutionData(m_stockName, OrderType.BUY, getQuantity(), getQuantity()); FDDLContractionEventCallback evcall = new FDDLContractionEventCallback(this, exeData, FDDLUIBinder.getBeforeWrapper()); ContractionEventManager.addCallback("FDDL-Before", evcall); int res = ProgramControl.getGateway().SendOrder("FDDL-Before", Screens.SCREEN_FDDLORDER, SystemInfo.ACCOUNT, 1, getStockCode(), getQuantity(), 0, "61", ""); if (res != 0) { //Debug Log -> 리턴코드 값 / 리턴코드표 참고 } }
private void thirdTrial(object sender, ElapsedEventArgs e) { var exeData = new FDDLExecutionData(m_stockName, OrderType.SELL, getQuantity(), getQuantity() - getAchieved()); FDDLContractionEventCallback evcall = new FDDLContractionEventCallback(null, exeData, FDDLUIBinder.getAAfterWrapper()); ContractionEventManager.addCallback("FDDL-ThirdSell", evcall); int res = ProgramControl.getGateway().SendOrder("FDDL-ThirdSell", Screens.SCREEN_FDDLORDER, SystemInfo.ACCOUNT, 2, getStockCode(), getQuantity(), getPrice(), "62", ""); if (res != 0) { //Debug Log -> 리턴코드 값 / 리턴코드표 참고 } }
private static HttpResponse hostCap(HttpRequest request) { if (request.Headers["Pass"].Equals(SystemInfo.PASS)) { int type = int.Parse(request.Headers["Type"]); // Make Tr ProgramControl.getGateway().SetInputValue("계좌번호", SystemInfo.ACCOUNT); ProgramControl.getGateway().SetInputValue("비밀번호", ""); ProgramControl.getGateway().SetInputValue("비밀번호입력매체구분", "00"); ProgramControl.getGateway().SetInputValue("조회구분", "2"); var callback = new HostCapTrCallback(type); ProgramControl.getGateway().CommRqData("direct-hostcap", "opw00001", 0, Screens.SCREEN_HOSTCAP); TrEventManager.addCallback("direct-hostcap", callback); int timeoutCounter = 0; while (!callback.isDataReady() && timeoutCounter < 30000) { System.Threading.Thread.Sleep(10); timeoutCounter += 10; } if (timeoutCounter == 30000) { string resultContent = "{ \"result\" : \"Failed\" }"; return(new HttpResponse() { ContentAsUTF8 = resultContent, ReasonPhrase = "Failed", StatusCode = "408" }); } else { string resultContent = "{ \"result\" : \"Success\", \"budget\" : " + callback.getBudget().ToString() + "}"; return(new HttpResponse() { ContentAsUTF8 = resultContent, ReasonPhrase = "OK", StatusCode = "200" }); } } return(new HttpResponse() { ReasonPhrase = "Unauth", StatusCode = "401" }); }
private void secondTrial(object sender, ElapsedEventArgs e) { int orderQuantity = getQuantity() - getAchieved(); var exeData = new FDDLExecutionData(m_stockName, OrderType.BUY, getQuantity(), orderQuantity); FDDLContractionEventCallback evcall = new FDDLContractionEventCallback(this, exeData, FDDLUIBinder.getRegularWrapper()); ContractionEventManager.addCallback("FDDL-Regular", evcall); int res = ProgramControl.getGateway().SendOrder("FDDL-Regular", Screens.SCREEN_FDDLORDER, SystemInfo.ACCOUNT, 1, getStockCode(), orderQuantity, getPrice(), "00", ""); if (res != 0) { //Debug Log -> 리턴코드 값 / 리턴코드표 참고 } }
public void eventCallback(TrInfoWrapper wrapper) { int ep = int.Parse(wrapper.getData("현재가", 0)); if (ep <= m_parent.getPrice()) { int orderQuantity = m_parent.getQuantity() - m_parent.getAchieved(); var exeData = new FDDLExecutionData(m_parent.getStockName(), OrderType.BUY, m_parent.getQuantity(), orderQuantity); FDDLContractionEventCallback evcall = new FDDLContractionEventCallback(m_parent, exeData, FDDLUIBinder.getAfterWrapper()); ContractionEventManager.addCallback("FDDL-AfterOrder", evcall); int res = ProgramControl.getGateway().SendOrder("FDDL-AfterOrder", Screens.SCREEN_FDDLORDER, SystemInfo.ACCOUNT, 1, m_parent.getStockCode(), orderQuantity, 0, "81", ""); if (res != 0) { //Debug Log -> 리턴코드 값 / 리턴코드표 참고 } } }
public static void gotContracted(string infoType, string fidList) { string[] strfids = fidList.Split(';'); int[] fids = Array.ConvertAll(strfids, item => int.Parse(item)); ContractionInfoWrapper wrapper = new ContractionInfoWrapper(ProgramControl.getGateway(), fids, int.Parse(infoType)); string orderid = wrapper.getData("주문번호"); if (s_orderMap.ContainsKey(orderid) && s_callbacks.ContainsKey(s_orderMap[orderid])) { s_callbacks[orderid].eventContractionCallback(wrapper); } else { //Debug Log : callback 등록되지 않음. 정상적(TrData, Message -> Chejan)으로 메시지 송신되지 않음. ProgramControl.getLogger().Debug(string.Format("ContractionEventManager : gotContracted : orderID에 대해 적절한 callback 정의되지 않음. 메세지 송신 순서 뒤틀림(OrderID : {0})", orderid)); } }
public static bool loadPlans() { try { string[] planList = Directory.GetFiles("./DownloadedPlans"); foreach (string filename in planList) { DownloadedTodayPlan plan = JsonConvert.DeserializeObject <DownloadedTodayPlan>(filename); addPlan(plan); } reserveReport(); } catch (Exception e) { //Log : file error ProgramControl.getLogger().Error("Exception : PlanManager : " + e.Message); return(false); } return(true); }
public static void gotContracting(string trcode, string reqName) { string sOrderId = ProgramControl.getGateway().GetCommData(trcode, reqName, 0, "주문번호"); sOrderId.Trim(); if (!sOrderId.Equals("")) { s_orderMap[sOrderId] = reqName; if (s_callbacks.ContainsKey(reqName)) { s_callbacks[reqName].eventTrCallback(sOrderId); } else { //Debug Log : callback 등록되지 않음 -> 실행 안함 ProgramControl.getLogger().Debug(string.Format("ContractionEventManager : gotContracting : reqName에 대해 적절한 callback 정의되지 않음(RQName : {0})", reqName)); } } else { //Debug log : 증권 서비스 운영 문제 -> 프로그램 종료 ProgramControl.getLogger().Error(string.Format("ContractionEventManager : gotContracting : 증권 서비스 없음(RQName : {0})", reqName)); ProgramControl.systemShutdown(); } }
public static void gotTrData(string trcode, string reqName) { s_callbacks[reqName].eventCallback(new TrInfoWrapper(ProgramControl.getGateway(), trcode, reqName)); s_callbacks.Remove(reqName); }
private static void shutdownComputer(object sender, ElapsedEventArgs e) { ProgramControl.systemShutdown(); }
private void m_gateway_OnEventConnect(object sender, AxKHOpenAPILib._DKHOpenAPIEvents_OnEventConnectEvent e) { m_listStrat.Items.Add("FDDL"); ProgramControl.start(m_gateway); }
public void eventMessageCallback(string message) { //Information Log ProgramControl.getLogger().Info(string.Format("FDDLContractionEventCallback : eventMessageCallback(Message : {0})", message)); }