class Program
{
class Stock
{
public DateTime DateTime;
public double Close;
public double CloseAdj;
public Stock(DateTime dateTime, double close, double closeAdj)
{
DateTime = dateTime;
Close = close;
CloseAdj = closeAdj;
}
}
static void Main(string[] args)
{
Application excel = new Microsoft.Office.Interop.Excel.Application();
excel.Visible = true;
excel.ScreenUpdating = true;
Workbook wb = excel.Workbooks.Open(@"C:\Users\temp\Desktop\SPY.csv");
Microsoft.Office.Interop.Excel.Worksheet xlWorkSheet = (Microsoft.Office.Interop.Excel.Worksheet)wb.ActiveSheet;
string DateTime = "";
string Close = "";
string CloseAdj = "";
List<Stock> Stocks = new List<Stock>();
List<Stock> UPRO = new List<Stock>();
List<Stock> SPY = new List<Stock>();
List<Stock> UPROBANK = new List<Stock>();
int i = 2;
DateTime = ((Microsoft.Office.Interop.Excel.Range)xlWorkSheet.Cells[i, "A"]).Value.ToString();
Close = ((Microsoft.Office.Interop.Excel.Range)xlWorkSheet.Cells[i, "E"]).Value.ToString();
CloseAdj = ((Microsoft.Office.Interop.Excel.Range)xlWorkSheet.Cells[i, "F"]).Value.ToString();
UPRO.Add(new Stock(Convert.ToDateTime(DateTime), -1, 20000));
UPROBANK.Add(new Stock(Convert.ToDateTime(DateTime), -1, 40000));
SPY.Add(new Stock(Convert.ToDateTime(DateTime), -1, 60000));
while (string.IsNullOrEmpty(Close) == false)
{
Stocks.Add(new Stock(Convert.ToDateTime(DateTime), Convert.ToDouble(Close), Convert.ToDouble(CloseAdj)));
i++;
DateTime = Convert.ToString(((Microsoft.Office.Interop.Excel.Range)xlWorkSheet.Cells[i, "A"]).Value);
Close = Convert.ToString(((Microsoft.Office.Interop.Excel.Range)xlWorkSheet.Cells[i, "E"]).Value);
CloseAdj = Convert.ToString(((Microsoft.Office.Interop.Excel.Range)xlWorkSheet.Cells[i, "F"]).Value);
}
int cnt = 1;
for (int j = 0; j < Stocks.Count - 1; j++)
{
if (cnt == 20)
{
SPY[j].CloseAdj += 3000;
UPRO[j].CloseAdj += 2000;
UPROBANK[j].CloseAdj += 4000;
cnt = 0;
}
double diffUPRO = (((Stocks[j + 1].Close / Stocks[j].Close) - 1) * (1 - (0.0092 - (0.0041 * 0.75))) * 3) + 1;
double diffSPY = (Stocks[j + 1].CloseAdj / Stocks[j].CloseAdj);
SPY.Add(new Stock(Stocks[j + 1].DateTime, -1, SPY[j].CloseAdj * diffSPY));
UPRO.Add(new Stock(Stocks[j + 1].DateTime, -1, UPRO[j].CloseAdj * diffUPRO));
UPROBANK.Add(new Stock(Stocks[j + 1].DateTime, -1, UPROBANK[j].CloseAdj));
cnt++;
}
for (int j = 0; j < UPRO.Count - 1; j++)
{
((Microsoft.Office.Interop.Excel.Range)xlWorkSheet.Cells[j + 2, "I"]).Value = UPRO[j].DateTime;
((Microsoft.Office.Interop.Excel.Range)xlWorkSheet.Cells[j + 2, "J"]).Value = SPY[j].CloseAdj;
((Microsoft.Office.Interop.Excel.Range)xlWorkSheet.Cells[j + 2, "K"]).Value = UPRO[j].CloseAdj + UPROBANK[j].CloseAdj;
}
}
}