private void DoMakeTradeHistoryInDB(BackgroundWorkerTask taskParam) { var taskPtr = (HistoryMakerTaskParam)taskParam.DataParam; var totalCount = taskPtr.portfolioDoc.DocumentElement.ChildNodes.Count; var currentNode = 0; foreach (XmlElement node in taskPtr.portfolioDoc.DocumentElement.ChildNodes) { if (workerQuote.CancellationPending) { break; } Logger.InfoFormat("Старт формирования истории по счету - {0} из {1}", currentNode + 1, totalCount); taskPtr.historyMaker.MakeHistory(node); currentNode++; workerQuote.ReportProgress(100 * currentNode / totalCount); } workerQuote.ReportProgress(100); if (taskPtr.historyMaker.testOnly) { using (var sw = new StreamWriter(ExecutablePath.ExecPath + "\\performance_test.txt", false, Encoding.UTF8)) { sw.WriteLine(AccountPerformance.MakeTableHeader()); taskPtr.historyMaker.performance.ForEach(sw.WriteLine); } } }
private void MakeOrTestStrategies(bool makeNotTest) { if (workerQuote.IsBusy) { workerQuote.CancelAsync(); return; } if (!File.Exists(tbFarmSetsPath.Text)) { return; } var doc = new XmlDocument(); using (var sr = new StreamReader(tbFarmSetsPath.Text, Encoding.UTF8)) doc.Load(sr); if (doc.DocumentElement == null) { return; } if (string.IsNullOrEmpty(richTextBoxAccountIds.Text)) { return; } var accIds = richTextBoxAccountIds.Text.ToIntArrayUniform(); if (accIds.Length == 0) { return; } var quoteFolder = tbDestinationQuoteFolder.Text; if (string.IsNullOrEmpty(quoteFolder)) { return; } if (!Directory.Exists(quoteFolder)) { return; } var probWithdrawOnLossProfit = tbWdthProbOnLoss.Text.ToIntArrayUniform(); var histMaker = new TradeHistoryMaker(tbSkipLossProb.Text.ToInt(), tbWithdrawProb.Text.ToInt(), probWithdrawOnLossProfit[0], probWithdrawOnLossProfit[1], !makeNotTest, tbStartTestDepo.Text.ToInt(), dpModelStartegiesStart.Value, dpModelStrategiesEnd.Value); var histPtr = new HistoryMakerTaskParam { historyMaker = histMaker, portfolioDoc = doc }; var task = new BackgroundWorkerTask(BackgroundWorkerTask.BackgroundWorkerTaskType.MakeTradeHistoryInDB, histPtr); workerQuote.RunWorkerAsync(task); }
private void DoFixtransactions(BackgroundWorkerTask taskParam) { var accountList = (List <int>)taskParam.DataParam; int accountNumber = 0; foreach (var id in accountList) { if (workerQuote.CancellationPending) { break; } var accountId = id; using (var db = new TradeSharpConnection()) { foreach (var order in db.POSITION_CLOSED.Where(p => p.AccountID == accountId)) { if (workerQuote.CancellationPending) { break; } var orderId = order.ID; if (db.BALANCE_CHANGE.Any(bc => bc.Position == orderId)) { continue; } var changeType = (int)(order.ResultDepo > 0 ? BalanceChangeType.Profit : BalanceChangeType.Loss); var closeTime = order.TimeExit; var orderResult = Math.Abs(order.ResultDepo); var missIdBc = db.BALANCE_CHANGE.FirstOrDefault(b => b.AccountID == accountId && b.ValueDate == closeTime && b.Amount == orderResult); if (missIdBc != null) { missIdBc.Position = orderId; missIdBc.ChangeType = changeType; } else { db.BALANCE_CHANGE.Add(new BALANCE_CHANGE { AccountID = order.AccountID, Position = order.ID, Amount = order.ResultDepo, ChangeType = changeType, ValueDate = order.TimeExit }); } } db.SaveChanges(); } workerQuote.ReportProgress(100 * (accountNumber++) / accountList.Count); } }
private void DoLoadQuotesFromForexite(BackgroundWorkerTask taskParam) { var folderYear = (Cortege2 <string, int>)taskParam.DataParam; var endYear = DateTime.Now.Year; for (var year = folderYear.b; year < endYear; year++) { if (workerQuote.CancellationPending) { break; } QuoteDownloader.DownloadForYear(year, folderYear.a); workerQuote.ReportProgress(year); } }
private void DoMakeJSON(BackgroundWorkerTask taskParam) { var data = (Cortege3 <List <int>, string, int>)taskParam.DataParam; var accountList = data.a; var targetFilePath = data.b; var intervalMinutes = data.c; int accountNumber = 0; foreach (var id in accountList) { if (workerQuote.CancellationPending) { break; } JsonTrackMaker.BuildTrack( id, targetFilePath + "_" + id + ".txt", intervalMinutes); workerQuote.ReportProgress(100 * (accountNumber++) / accountList.Count); } }
private void btnMakeJson_Click(object sender, EventArgs e) { if (workerQuote.IsBusy) { workerQuote.CancelAsync(); return; } var actIds = GetAccountIdsFromFarmSetsFile(); if (actIds.Count == 0) { return; } lblWorkerProgress.Text = "Обработка счетов (JSON)"; var task = new BackgroundWorkerTask(BackgroundWorkerTask.BackgroundWorkerTaskType.MakeJSON, new Cortege3 <List <int>, string, int>(actIds, tbFarmSetsPath.Text + "_json_", tbTrackIntervalMinutes.Text.ToInt())); workerQuote.RunWorkerAsync(task); }
private void DoLoadQuotesFromTradeSharp(BackgroundWorkerTask taskParam) { var folder = (string)taskParam.DataParam; var totalCount = Directory.GetFiles(folder, "*.quote").Count(); var count = 0; workerQuote.ReportProgress(0); foreach (var fileName in Directory.GetFiles(folder, "*.quote")) { var lastDate = GetFileLastDate(fileName); if (!lastDate.HasValue) { continue; } var existFileName = fileName + ".temp"; File.Move(fileName, existFileName); var ticker = Path.GetFileNameWithoutExtension(fileName).ToUpper(); FileGapActualizator.FillGapsByTicker(ticker, lastDate.Value, new List <GapInfo> { new GapInfo { start = lastDate.Value.AddMinutes(1), end = DateTime.Now, status = GapInfo.GapStatus.Gap } }, folder, workerQuote, (s, list) => { }); QuoteDownloader.Merge2Files(existFileName, fileName); workerQuote.ReportProgress(100 * (count++) / totalCount); } }
private void btnFixBalanceChanges_Click(object sender, EventArgs e) { if (workerQuote.IsBusy) { workerQuote.CancelAsync(); return; } if (!File.Exists(tbFarmSetsPath.Text)) { return; } List <int> actIds = GetAccountIdsFromFarmSetsFile(); if (actIds == null || actIds.Count == 0) { return; } var task = new BackgroundWorkerTask(BackgroundWorkerTask.BackgroundWorkerTaskType.FixTransactions, actIds); workerQuote.RunWorkerAsync(task); }
private void btnFixBalanceChanges_Click(object sender, EventArgs e) { if (workerQuote.IsBusy) { workerQuote.CancelAsync(); return; } if (!File.Exists(tbFarmSetsPath.Text)) return; List<int> actIds = GetAccountIdsFromFarmSetsFile(); if (actIds == null || actIds.Count == 0) return; var task = new BackgroundWorkerTask(BackgroundWorkerTask.BackgroundWorkerTaskType.FixTransactions, actIds); workerQuote.RunWorkerAsync(task); }
private void DoMakeTradeHistoryInDB(BackgroundWorkerTask taskParam) { var taskPtr = (HistoryMakerTaskParam) taskParam.DataParam; var totalCount = taskPtr.portfolioDoc.DocumentElement.ChildNodes.Count; var currentNode = 0; foreach (XmlElement node in taskPtr.portfolioDoc.DocumentElement.ChildNodes) { if (workerQuote.CancellationPending) break; Logger.InfoFormat("Старт формирования истории по счету - {0} из {1}", currentNode + 1, totalCount); taskPtr.historyMaker.MakeHistory(node); currentNode ++; workerQuote.ReportProgress(100 * currentNode / totalCount); } workerQuote.ReportProgress(100); if (taskPtr.historyMaker.testOnly) { using (var sw = new StreamWriter(ExecutablePath.ExecPath + "\\performance_test.txt", false, Encoding.UTF8)) { sw.WriteLine(AccountPerformance.MakeTableHeader()); taskPtr.historyMaker.performance.ForEach(sw.WriteLine); } } }
private void DoMakeJSON(BackgroundWorkerTask taskParam) { var data = (Cortege3<List<int>, string, int>) taskParam.DataParam; var accountList = data.a; var targetFilePath = data.b; var intervalMinutes = data.c; int accountNumber = 0; foreach (var id in accountList) { if (workerQuote.CancellationPending) break; JsonTrackMaker.BuildTrack( id, targetFilePath + "_" + id + ".txt", intervalMinutes); workerQuote.ReportProgress(100*(accountNumber++)/accountList.Count); } }
private void DoLoadQuotesFromTradeSharp(BackgroundWorkerTask taskParam) { var folder = (string) taskParam.DataParam; var totalCount = Directory.GetFiles(folder, "*.quote").Count(); var count = 0; workerQuote.ReportProgress(0); foreach (var fileName in Directory.GetFiles(folder, "*.quote")) { var lastDate = GetFileLastDate(fileName); if (!lastDate.HasValue) continue; var existFileName = fileName + ".temp"; File.Move(fileName, existFileName); var ticker = Path.GetFileNameWithoutExtension(fileName).ToUpper(); FileGapActualizator.FillGapsByTicker(ticker, lastDate.Value, new List<GapInfo> { new GapInfo { start = lastDate.Value.AddMinutes(1), end = DateTime.Now, status = GapInfo.GapStatus.Gap } }, folder, workerQuote, (s, list) => { }); QuoteDownloader.Merge2Files(existFileName, fileName); workerQuote.ReportProgress(100*(count++)/totalCount); } }
private void DoLoadQuotesFromForexite(BackgroundWorkerTask taskParam) { var folderYear = (Cortege2<string, int>) taskParam.DataParam; var endYear = DateTime.Now.Year; for (var year = folderYear.b; year < endYear; year++) { if (workerQuote.CancellationPending) break; QuoteDownloader.DownloadForYear(year, folderYear.a); workerQuote.ReportProgress(year); } }
private void DoFixtransactions(BackgroundWorkerTask taskParam) { var accountList = (List<int>) taskParam.DataParam; int accountNumber = 0; foreach (var id in accountList) { if (workerQuote.CancellationPending) break; var accountId = id; using (var db = new TradeSharpConnection()) { foreach (var order in db.POSITION_CLOSED.Where(p => p.AccountID == accountId)) { if (workerQuote.CancellationPending) break; var orderId = order.ID; if (db.BALANCE_CHANGE.Any(bc => bc.Position == orderId)) continue; var changeType = (int) (order.ResultDepo > 0 ? BalanceChangeType.Profit : BalanceChangeType.Loss); var closeTime = order.TimeExit; var orderResult = Math.Abs(order.ResultDepo); var missIdBc = db.BALANCE_CHANGE.FirstOrDefault(b => b.AccountID == accountId && b.ValueDate == closeTime && b.Amount == orderResult); if (missIdBc != null) { missIdBc.Position = orderId; missIdBc.ChangeType = changeType; } else db.BALANCE_CHANGE.Add(new BALANCE_CHANGE { AccountID = order.AccountID, Position = order.ID, Amount = order.ResultDepo, ChangeType = changeType, ValueDate = order.TimeExit }); } db.SaveChanges(); } workerQuote.ReportProgress(100*(accountNumber++)/accountList.Count); } }
private void btnMakeJson_Click(object sender, EventArgs e) { if (workerQuote.IsBusy) { workerQuote.CancelAsync(); return; } var actIds = GetAccountIdsFromFarmSetsFile(); if (actIds.Count == 0) return; lblWorkerProgress.Text = "Обработка счетов (JSON)"; var task = new BackgroundWorkerTask(BackgroundWorkerTask.BackgroundWorkerTaskType.MakeJSON, new Cortege3<List<int>, string, int>(actIds, tbFarmSetsPath.Text + "_json_", tbTrackIntervalMinutes.Text.ToInt())); workerQuote.RunWorkerAsync(task); }
private void MakeOrTestStrategies(bool makeNotTest) { if (workerQuote.IsBusy) { workerQuote.CancelAsync(); return; } if (!File.Exists(tbFarmSetsPath.Text)) return; var doc = new XmlDocument(); using (var sr = new StreamReader(tbFarmSetsPath.Text, Encoding.UTF8)) doc.Load(sr); if (doc.DocumentElement == null) return; if (string.IsNullOrEmpty(richTextBoxAccountIds.Text)) return; var accIds = richTextBoxAccountIds.Text.ToIntArrayUniform(); if (accIds.Length == 0) return; var quoteFolder = tbDestinationQuoteFolder.Text; if (string.IsNullOrEmpty(quoteFolder)) return; if (!Directory.Exists(quoteFolder)) return; var probWithdrawOnLossProfit = tbWdthProbOnLoss.Text.ToIntArrayUniform(); var histMaker = new TradeHistoryMaker(tbSkipLossProb.Text.ToInt(), tbWithdrawProb.Text.ToInt(), probWithdrawOnLossProfit[0], probWithdrawOnLossProfit[1], !makeNotTest, tbStartTestDepo.Text.ToInt(), dpModelStartegiesStart.Value, dpModelStrategiesEnd.Value); var histPtr = new HistoryMakerTaskParam { historyMaker = histMaker, portfolioDoc = doc }; var task = new BackgroundWorkerTask(BackgroundWorkerTask.BackgroundWorkerTaskType.MakeTradeHistoryInDB, histPtr); workerQuote.RunWorkerAsync(task); }
public BackgroundWorkerArgs(Guid sessionGroupUniqueId, BackgroundWorkerTask task) { SessionGroupUniqueId = sessionGroupUniqueId; Task = task; }