//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; //namespace MarketData.Helper //{ // public class MACDHelperSheet // { // public MACDHelperSheet() // { // } // public static bool GenerateMACDSheet(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 currentWorkingDirectory = Directory.GetCurrentDirectory(); // if (!File.Exists(strPathTemplateFile)) // { // MDTrace.WriteLine(LogLevel.DEBUG,"Cannot locate " + strPathTemplateFile); // return false; // } // DateGenerator dateGenerator = new DateGenerator(); // int pricingDays = 120; // 90 // DateTime startDate = DateTime.Now; // symbol = symbol.ToUpper(); // Dictionary pricesByDate = new Dictionary(); // startDate = dateGenerator.GetPrevBusinessDay(DateTime.Now); ; // if (Utility.IsEpoch(startDate)) // { // MDTrace.WriteLine(LogLevel.DEBUG,"No price dates for '" + symbol + "'"); // return false; // } // DateTime historicalDate = dateGenerator.GenerateHistoricalDate(startDate, pricingDays); // Prices prices = PricingDA.GetPrices(symbol, startDate, historicalDate); // if(null==prices||0==prices.Count) // { // MDTrace.WriteLine(LogLevel.DEBUG,"No price dates for '" + symbol + "'"); // return false; // } // Price latestPrice=prices[0]; // String companyName = PricingDA.GetNameForSymbol(symbol); // MACDSetup macdSetupSlow = new MACDSetup(12, 26, 9); // MACDSetup macdSetupFast = new MACDSetup(8, 17, 9); // MACDSignals macdSignalsSlow = MACDGenerator.GenerateMACD(prices, macdSetupSlow); // MACDSignals macdSignalsFast = MACDGenerator.GenerateMACD(prices, macdSetupFast); // for (int index = 0; index < prices.Count; index++) pricesByDate.Add(prices[index].Date, prices[index]); // String pathOutputFile = currentWorkingDirectory + "\\" + symbol + "-MACD-" + Utility.DateTimeToStringMMHDDHYYYY(latestPrice.Date); // 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 macdFastChartObject = chartObjects.Item(1); // yes, chart 1 is the fast line // Microsoft.Office.Interop.Excel.ChartObject macdSlowChartObject = chartObjects.Item(2); // macdSlowChartObject.Chart.ChartTitle.Text = companyName + " (" + symbol + ") " + Utility.DateTimeToStringMMHDDHYYYY(prices[prices.Count - 1].Date) + " Thru " + Utility.DateTimeToStringMMHDDHYYYY(latestPrice.Date)+" MACD(12,26,9)"; // macdFastChartObject.Chart.ChartTitle.Text = companyName + " (" + symbol + ") " + Utility.DateTimeToStringMMHDDHYYYY(prices[prices.Count - 1].Date) + " Thru " + Utility.DateTimeToStringMMHDDHYYYY(latestPrice.Date) + " MACD(8,17,9)"; // for (int index = 0; index < macdSignalsSlow.Count; index++) // { // MACDSignal macdSignal = macdSignalsSlow[index]; // Price price = pricesByDate[macdSignal.Date]; // worksheet.Cells[index + 1 + rowOffset, 1] = macdSignal.Symbol; // worksheet.Cells[index + 1 + rowOffset, 2] = macdSignal.Date; // worksheet.Cells[index + 1 + rowOffset, 3] = macdSignal.Fast; // worksheet.Cells[index + 1 + rowOffset, 4] = macdSignal.Slow; // worksheet.Cells[index + 1 + rowOffset, 5] = macdSignal.Signal; // worksheet.Cells[index + 1 + rowOffset, 6] = macdSignal.MACD; // worksheet.Cells[index + 1 + rowOffset, 7] = macdSignal.Histogram; // worksheet.Cells[index + 1 + rowOffset, 8] = price.Close; // } // for (int index = 0; index < macdSignalsFast.Count; index++) // { // MACDSignal macdSignal = macdSignalsFast[index]; // Price price = pricesByDate[macdSignal.Date]; // worksheet.Cells[index + 1 + rowOffset, 9] = macdSignal.Symbol; // worksheet.Cells[index + 1 + rowOffset, 10] = macdSignal.Date; // worksheet.Cells[index + 1 + rowOffset, 11] = macdSignal.Fast; // worksheet.Cells[index + 1 + rowOffset, 12] = macdSignal.Slow; // worksheet.Cells[index + 1 + rowOffset, 13] = macdSignal.Signal; // worksheet.Cells[index + 1 + rowOffset, 14] = macdSignal.MACD; // worksheet.Cells[index + 1 + rowOffset, 15] = macdSignal.Histogram; // worksheet.Cells[index + 1 + rowOffset, 16] = price.Close; // } // 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 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(); // } // } // } //}