// using System; // using System.IO; // using System.Collections.Generic; // using Microsoft.Office.Interop.Excel; // using MarketData.DataAccess; // using MarketData.MarketDataModel; // using MarketData.Generator; // using MarketData.Utils; // using MarketData.Generator.MovingAverage; // namespace MarketData.Helper // { // public class MovingAverageHelperSheet // { // public MovingAverageHelperSheet() // { // } // public static bool GenerateMovingAverageSheet(String strPathTemplateFile, String symbol) // { // Microsoft.Office.Interop.Excel.Application excelApp = null; // Microsoft.Office.Interop.Excel.Workbook workbook = null; // Microsoft.Office.Interop.Excel.Worksheet worksheet = null; // Microsoft.Office.Interop.Excel.Sheets worksheets = null; // int rowOffset = 1; // try // { // String companyName = PricingDA.GetNameForSymbol(symbol); // DateGenerator dateGenerator = new DateGenerator(); // DateTime startDate = dateGenerator.GetPrevBusinessDay(DateTime.Now); // String currentWorkingDirectory = Directory.GetCurrentDirectory(); // if (!File.Exists(strPathTemplateFile)) // { // MDTrace.WriteLine(LogLevel.DEBUG,"Cannot locate " + strPathTemplateFile); // return false; // } // MovingAverages movingAverages = MovingAverageGenerator.GenerateMovingAverages(symbol); // String pathOutputFile = currentWorkingDirectory + "\\" + symbol + "-MA-" + Utility.DateTimeToStringMMHDDHYYYY(movingAverages.ThruDate); // MDTrace.WriteLine(LogLevel.DEBUG,"Generating " + pathOutputFile); // File.Delete(pathOutputFile + ".xlsx"); // excelApp = new Microsoft.Office.Interop.Excel.Application(); // excelApp.ScreenUpdating = false; // workbook = excelApp.Workbooks.Open(strPathTemplateFile, 0, false, 5, "", "", false, Microsoft.Office.Interop.Excel.XlPlatform.xlWindows, "", true, false, 0, true, false, false); // worksheets = workbook.Worksheets; // worksheet = (Microsoft.Office.Interop.Excel.Worksheet)worksheets.get_Item("Sheet1"); // Microsoft.Office.Interop.Excel.ChartObjects chartObjects = worksheet.ChartObjects(); // Microsoft.Office.Interop.Excel.ChartObject movingAverageChartObject = chartObjects.Item(1); // yes, chart 1 is the fast line // movingAverageChartObject.Chart.ChartTitle.Text = companyName + " (" + symbol + ") " + Utility.DateTimeToStringMMHDDHYYYY(movingAverages.FromDate) + " - " + Utility.DateTimeToStringMMHDDHYYYY(movingAverages.ThruDate) + " MA(55,21,5)"; // Axis vertAxis = (Axis)movingAverageChartObject.Chart.Axes(XlAxisType.xlValue, XlAxisGroup.xlPrimary); // vertAxis.MaximumScaleIsAuto = false; // vertAxis.MaximumScale = GetMaxData(movingAverages); // vertAxis.MinimumScaleIsAuto = false; // vertAxis.MinimumScale = GetMinData(movingAverages); // vertAxis.HasMajorGridlines = true; // Axis horzAxis = (Axis)movingAverageChartObject.Chart.Axes(XlAxisType.xlCategory, XlAxisGroup.xlPrimary); // horzAxis.HasMajorGridlines = true; // for (int index = 0; index < movingAverages.Count; index++) // { // MovingAverageElement movingAverageElement = movingAverages[index]; // worksheet.Cells[index + 1 + rowOffset, 1] = movingAverageElement.Symbol; // worksheet.Cells[index + 1 + rowOffset, 2] = movingAverageElement.Date; // worksheet.Cells[index + 1 + rowOffset, 3] = movingAverageElement.Close; // worksheet.Cells[index + 1 + rowOffset, 4] = movingAverageElement.High; // worksheet.Cells[index + 1 + rowOffset, 5] = movingAverageElement.Low; // worksheet.Cells[index + 1 + rowOffset, 6] = movingAverageElement.MA55; // worksheet.Cells[index + 1 + rowOffset, 7] = movingAverageElement.MA21; // worksheet.Cells[index + 1 + rowOffset, 8] = movingAverageElement.MA5; // } // workbook.SaveAs(pathOutputFile, Microsoft.Office.Interop.Excel.XlFileFormat.xlOpenXMLWorkbook, Type.Missing, Type.Missing, false, false, Microsoft.Office.Interop.Excel.XlSaveAsAccessMode.xlNoChange, Microsoft.Office.Interop.Excel.XlSaveConflictResolution.xlUserResolution, true, Type.Missing, Type.Missing, Type.Missing); // return true; // } // catch (Exception exception) // { // MDTrace.WriteLine(LogLevel.DEBUG,exception.ToString()); // return false; // } // finally // { // if (null != worksheet) ReleaseObject(worksheet); // if (null != worksheets) ReleaseObject(worksheets); // if (null != workbook) ReleaseObject(workbook); // excelApp.Quit(); // } // } // private static double GetMinData(MovingAverages movingAverages) // { // double minData = double.MaxValue; // for (int index = 0; index < movingAverages.Count; index++) // { // MovingAverageElement movingAverageElement = movingAverages[index]; // if (movingAverageElement.Close < minData) minData = movingAverageElement.Close; // if (movingAverageElement.High < minData) minData = movingAverageElement.High; // if (movingAverageElement.Low < minData) minData = movingAverageElement.Low; // if (movingAverageElement.MA55 < minData) minData = movingAverageElement.MA55; // if (movingAverageElement.MA21 < minData) minData = movingAverageElement.MA21; // if (movingAverageElement.MA5 < minData) minData = movingAverageElement.MA5; // } // return minData - (minData * .05); // } // private static double GetMaxData(MovingAverages movingAverages) // { // double maxData = 0; // for (int index = 0; index < movingAverages.Count; index++) // { // MovingAverageElement movingAverageElement = movingAverages[index]; // if (movingAverageElement.Close > maxData) maxData = movingAverageElement.Close; // if (movingAverageElement.High > maxData) maxData = movingAverageElement.High; // if (movingAverageElement.Low > maxData) maxData = movingAverageElement.Low; // if (movingAverageElement.MA55 > maxData) maxData = movingAverageElement.MA55; // if (movingAverageElement.MA21 > maxData) maxData = movingAverageElement.MA21; // if (movingAverageElement.MA5 > maxData) maxData = movingAverageElement.MA5; // } // return maxData + (maxData * .05); // } // private static void ReleaseObject(object obj) // { // try // { // System.Runtime.InteropServices.Marshal.FinalReleaseComObject(obj); // obj = null; // } // catch (Exception ex) // { // MDTrace.WriteLine(LogLevel.DEBUG,ex.ToString()); // obj = null; // } // finally // { // GC.Collect(); // } // } // } // }