示例#1
0
        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);
            }
        }
示例#2
0
 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);
 }
示例#3
0
        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);
                }
            }
        }
示例#4
0
        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 -> 리턴코드 값 / 리턴코드표 참고
            }
        }
示例#6
0
 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));
     }
 }
示例#7
0
 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 -> 리턴코드 값 / 리턴코드표 참고
            }
        }
示例#9
0
        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 -> 리턴코드 값 / 리턴코드표 참고
            }
        }
示例#10
0
        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"
            });
        }
示例#11
0
        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 -> 리턴코드 값 / 리턴코드표 참고
            }
        }
示例#12
0
        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 -> 리턴코드 값 / 리턴코드표 참고
                }
            }
        }
示例#13
0
        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));
            }
        }
示例#14
0
 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);
 }
示例#15
0
        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();
            }
        }
示例#16
0
 public static void gotTrData(string trcode, string reqName)
 {
     s_callbacks[reqName].eventCallback(new TrInfoWrapper(ProgramControl.getGateway(), trcode, reqName));
     s_callbacks.Remove(reqName);
 }
示例#17
0
 private static void shutdownComputer(object sender, ElapsedEventArgs e)
 {
     ProgramControl.systemShutdown();
 }
示例#18
0
 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));
 }