public void handleHBEmail(AppTimeEvent timeEvent) { if (lastHBEmailTime.Equals(AppConstant.INVALID_TIME) || lastHBEmailTime.AddMinutes(AppConstant.HB_EMAIL_ELPASED_TIME) <= timeEvent.eventTime) { UserPref pref = stgManager.ParentUI.getUserPref(); Boolean isSendEmail = pref.sendEmail; Boolean isPlaySound = pref.playSound; if (!isSendEmail) { return; } lastHBEmailTime = Utils.convertToNearestTime(timeEvent.eventTime, lastHBEmailTime, AppConstant.HB_EMAIL_ELPASED_TIME); ISendMailManager manager = SendMailManager.getManager(); List <String[]> summary = stgManager.getPositionSummary(); String emailBody = ""; foreach (String[] row in summary) { String template = "Name:[0], Position=[1], Unrealized PnL=[2], Total PnL=[3]\n"; emailBody += template.Replace("[0]", row[0]).Replace("[1]", row[1]).Replace("[2]", row[2]).Replace("[3]", row[3]); } if (emailBody.Equals("")) { emailBody = "[No Content]"; } manager.SendEmail("<AlgoEdge Alert> [HeartBeat] : from " + System.Environment.MachineName + " " + lastHBEmailTime, emailBody); } }
public void handleDailyReset(AppTimeEvent timeEvent) { ConcurrentDictionary <String, String> stgNamesMap = stgManager.getActiveStgNamesMap(); stgNamesMap.Keys.ToArray(); IAppEventManager eventManager = stgManager.getAppEventManager(); foreach (String name in stgNamesMap.Keys) { eventManager.storeEventQueue[name].Add(new AppDailyResetEvent()); } stgManager.dailyReset(); }
public void handleResetRTBRequest(AppTimeEvent timeEvent) { //Contract contract = stgManager.CurrentContract; Contract contract = stgManager.ParentUI.GetMDContract(); IRealTimeBarsManagerBridge RTBManager = stgManager.ParentUI.getRealTimeBarsManager(); if (contract == null) { return; } if (RTBManager == null) { return; } TickerInfo tickerInfo = stgManager.ParentUI.getTickerInfo(); String strStartTime = String.Format("{0:yyyyMMdd}", timeEvent.eventTime) + " " + tickerInfo.startTime; DateTime startTime = DateTime.ParseExact(strStartTime, "yyyyMMdd HH:mm:ss", CultureInfo.InvariantCulture, DateTimeStyles.AssumeLocal); DateTime startTime_from = startTime.AddMinutes(-3); DateTime startTime_to = startTime.AddMinutes(-2); if (timeEvent.eventTime > startTime_from && timeEvent.eventTime < startTime_to && !morningTimeRTBReset) { log.Info("Morning Reset RTBar Start."); resetRTBRequest(RTBManager); morningTimeRTBReset = true; log.Info("Morning Reset RTBar End."); return; } String strLunchTime = String.Format("{0:yyyyMMdd}", timeEvent.eventTime) + " " + tickerInfo.lunchEndTime; DateTime lunchTime = DateTime.ParseExact(strLunchTime, "yyyyMMdd HH:mm:ss", CultureInfo.InvariantCulture, DateTimeStyles.AssumeLocal); DateTime lunchTime_from = lunchTime.AddMinutes(-3); DateTime lunchTime_to = lunchTime.AddMinutes(-2); if (timeEvent.eventTime > lunchTime_from && timeEvent.eventTime < lunchTime_to && !lunchTimeRTBReset) { log.Info("Lunch Reset RTBar Start."); resetRTBRequest(RTBManager); lunchTimeRTBReset = true; log.Info("Lunch Reset RTBar End."); return; } }
public void putTimeEvents(DateTime time) { ConcurrentDictionary <String, String> stgNamesMap = stgManager.getActiveStgNamesMap(); AppTimeEvent timeEvent = new AppTimeEvent(); timeEvent.eventTime = time; stgNamesMap.Keys.ToArray(); foreach (String name in stgNamesMap.Keys) { storeEventQueue[name].Add(timeEvent); } IAppMainteanceManager maintenanceManager = stgManager.getAppMainteanceManager(); if (maintenanceManager != null) { maintenanceManager.storeEventQueue.Add(timeEvent); } }
public void handleDailyDayEndExport(AppTimeEvent timeEvent) { TickerInfo tickerInfo = stgManager.ParentUI.getTickerInfo(); String strEndTime = String.Format("{0:yyyyMMdd}", timeEvent.eventTime) + " " + tickerInfo.endTime; //String strEndTime = String.Format("{0:yyyyMMdd}", timeEvent.eventTime) + " " + "16:15:00"; DateTime endTime = DateTime.ParseExact(strEndTime, "yyyyMMdd HH:mm:ss", CultureInfo.InvariantCulture, DateTimeStyles.AssumeLocal); DateTime endTime_from = endTime.AddMinutes(+2); DateTime endTime_to = endTime.AddMinutes(+3); if (timeEvent.eventTime > endTime_from && timeEvent.eventTime < endTime_to && !dailyDayEndExport) { log.Info("Daily Dayend Export Report Start."); // stgManager.dailyDayEndExport(); dailyDayEndExport = true; log.Info("Daily Dayend Export Report End."); return; } }
public void run(Object argObj) { while (true) { AppEvent appEvent = storeEventQueue.Take(); if (appEvent.Type.Equals(AppEventType.TimeEvent)) { AppTimeEvent timeEvent = (AppTimeEvent)appEvent; handleDailyAllFlagsReset(timeEvent); handleResetRTBRequest(timeEvent); handleDailyDayEndExport(timeEvent); handleHBEmail(timeEvent); } if (appEvent.Type.Equals(AppEventType.OrderExecuted)) { AppOrderExecutedEvent exeEvent = (AppOrderExecutedEvent)appEvent; handOrderExeEvent(exeEvent); } } }
public void handleDailyAllFlagsReset(AppTimeEvent timeEvent) { //DateTime _date = new DateTime(timeEvent.eventTime.Day, timeEvent.eventTime.Month, timeEvent.eventTime.Day, 0, 20,0, DateTimeKind.Local); DateTime _date = getResetTime(timeEvent.eventTime); if (!dailyAllFlagsInit) { log.Info("Init Maintenance Flags Daily Reset."); resetDailyAllFlag(timeEvent.eventTime); log.Info("[handleDailyAllFlagsReset]: Test 1"); return; } else if (!CompleteDailyReset.ContainsKey(_date)) { log.Info("Maintenance Flags Daily Reset."); resetDailyAllFlag(timeEvent.eventTime); handleDailyReset(timeEvent); return; } }