commit 732db8235b9572d2566157a9d9133e73a8be5610 Author: Sean Kessler Date: Fri Feb 23 06:58:53 2024 -0500 Init diff --git a/.gitignore b/.gitignore new file mode 100644 index 0000000..3e759b7 --- /dev/null +++ b/.gitignore @@ -0,0 +1,330 @@ +## Ignore Visual Studio temporary files, build results, and +## files generated by popular Visual Studio add-ons. +## +## Get latest from https://github.com/github/gitignore/blob/master/VisualStudio.gitignore + +# User-specific files +*.suo +*.user +*.userosscache +*.sln.docstates + +# User-specific files (MonoDevelop/Xamarin Studio) +*.userprefs + +# Build results +[Dd]ebug/ +[Dd]ebugPublic/ +[Rr]elease/ +[Rr]eleases/ +x64/ +x86/ +bld/ +[Bb]in/ +[Oo]bj/ +[Ll]og/ + +# Visual Studio 2015/2017 cache/options directory +.vs/ +# Uncomment if you have tasks that create the project's static files in wwwroot +#wwwroot/ + +# Visual Studio 2017 auto generated files +Generated\ Files/ + +# MSTest test Results +[Tt]est[Rr]esult*/ +[Bb]uild[Ll]og.* + +# NUNIT +*.VisualState.xml +TestResult.xml + +# Build Results of an ATL Project +[Dd]ebugPS/ +[Rr]eleasePS/ +dlldata.c + +# Benchmark Results +BenchmarkDotNet.Artifacts/ + +# .NET Core +project.lock.json +project.fragment.lock.json +artifacts/ +**/Properties/launchSettings.json + +# StyleCop +StyleCopReport.xml + +# Files built by Visual Studio +*_i.c +*_p.c +*_i.h +*.ilk +*.meta +*.obj +*.iobj +*.pch +*.pdb +*.ipdb +*.pgc +*.pgd +*.rsp +*.sbr +*.tlb +*.tli +*.tlh +*.tmp +*.tmp_proj +*.log +*.vspscc +*.vssscc +.builds +*.pidb +*.svclog +*.scc + +# Chutzpah Test files +_Chutzpah* + +# Visual C++ cache files +ipch/ +*.aps +*.ncb +*.opendb +*.opensdf +*.sdf +*.cachefile +*.VC.db +*.VC.VC.opendb + +# Visual Studio profiler +*.psess +*.vsp +*.vspx +*.sap + +# Visual Studio Trace Files +*.e2e + +# TFS 2012 Local Workspace +$tf/ + +# Guidance Automation Toolkit +*.gpState + +# ReSharper is a .NET coding add-in +_ReSharper*/ +*.[Rr]e[Ss]harper +*.DotSettings.user + +# JustCode is a .NET coding add-in +.JustCode + +# TeamCity is a build add-in +_TeamCity* + +# DotCover is a Code Coverage Tool +*.dotCover + +# AxoCover is a Code Coverage Tool +.axoCover/* +!.axoCover/settings.json + +# Visual Studio code coverage results +*.coverage +*.coveragexml + +# NCrunch +_NCrunch_* +.*crunch*.local.xml +nCrunchTemp_* + +# MightyMoose +*.mm.* +AutoTest.Net/ + +# Web workbench (sass) +.sass-cache/ + +# Installshield output folder +[Ee]xpress/ + +# DocProject is a documentation generator add-in +DocProject/buildhelp/ +DocProject/Help/*.HxT +DocProject/Help/*.HxC +DocProject/Help/*.hhc +DocProject/Help/*.hhk +DocProject/Help/*.hhp +DocProject/Help/Html2 +DocProject/Help/html + +# Click-Once directory +publish/ + +# Publish Web Output +*.[Pp]ublish.xml +*.azurePubxml +# Note: Comment the next line if you want to checkin your web deploy settings, +# but database connection strings (with potential passwords) will be unencrypted +*.pubxml +*.publishproj + +# Microsoft Azure Web App publish settings. Comment the next line if you want to +# checkin your Azure Web App publish settings, but sensitive information contained +# in these scripts will be unencrypted +PublishScripts/ + +# NuGet Packages +*.nupkg +# The packages folder can be ignored because of Package Restore +**/[Pp]ackages/* +# except build/, which is used as an MSBuild target. +!**/[Pp]ackages/build/ +# Uncomment if necessary however generally it will be regenerated when needed +#!**/[Pp]ackages/repositories.config +# NuGet v3's project.json files produces more ignorable files +*.nuget.props +*.nuget.targets + +# Microsoft Azure Build Output +csx/ +*.build.csdef + +# Microsoft Azure Emulator +ecf/ +rcf/ + +# Windows Store app package directories and files +AppPackages/ +BundleArtifacts/ +Package.StoreAssociation.xml +_pkginfo.txt +*.appx + +# Visual Studio cache files +# files ending in .cache can be ignored +*.[Cc]ache +# but keep track of directories ending in .cache +!*.[Cc]ache/ + +# Others +ClientBin/ +~$* +*~ +*.dbmdl +*.dbproj.schemaview +*.jfm +*.pfx +*.publishsettings +orleans.codegen.cs + +# Including strong name files can present a security risk +# (https://github.com/github/gitignore/pull/2483#issue-259490424) +#*.snk + +# Since there are multiple workflows, uncomment next line to ignore bower_components +# (https://github.com/github/gitignore/pull/1529#issuecomment-104372622) +#bower_components/ + +# RIA/Silverlight projects +Generated_Code/ + +# Backup & report files from converting an old project file +# to a newer Visual Studio version. Backup files are not needed, +# because we have git ;-) +_UpgradeReport_Files/ +Backup*/ +UpgradeLog*.XML +UpgradeLog*.htm +ServiceFabricBackup/ +*.rptproj.bak + +# SQL Server files +*.mdf +*.ldf +*.ndf + +# Business Intelligence projects +*.rdl.data +*.bim.layout +*.bim_*.settings +*.rptproj.rsuser + +# Microsoft Fakes +FakesAssemblies/ + +# GhostDoc plugin setting file +*.GhostDoc.xml + +# Node.js Tools for Visual Studio +.ntvs_analysis.dat +node_modules/ + +# Visual Studio 6 build log +*.plg + +# Visual Studio 6 workspace options file +*.opt + +# Visual Studio 6 auto-generated workspace file (contains which files were open etc.) +*.vbw + +# Visual Studio LightSwitch build output +**/*.HTMLClient/GeneratedArtifacts +**/*.DesktopClient/GeneratedArtifacts +**/*.DesktopClient/ModelManifest.xml +**/*.Server/GeneratedArtifacts +**/*.Server/ModelManifest.xml +_Pvt_Extensions + +# Paket dependency manager +.paket/paket.exe +paket-files/ + +# FAKE - F# Make +.fake/ + +# JetBrains Rider +.idea/ +*.sln.iml + +# CodeRush +.cr/ + +# Python Tools for Visual Studio (PTVS) +__pycache__/ +*.pyc + +# Cake - Uncomment if you are using it +# tools/** +# !tools/packages.config + +# Tabs Studio +*.tss + +# Telerik's JustMock configuration file +*.jmconfig + +# BizTalk build output +*.btp.cs +*.btm.cs +*.odx.cs +*.xsd.cs + +# OpenCover UI analysis results +OpenCover/ + +# Azure Stream Analytics local run output +ASALocalRun/ + +# MSBuild Binary and Structured Log +*.binlog + +# NVidia Nsight GPU debugger configuration file +*.nvuser + +# MFractors (Xamarin productivity tool) working folder +.mfractor/ diff --git a/App.config b/App.config new file mode 100644 index 0000000..4364212 --- /dev/null +++ b/App.config @@ -0,0 +1,33 @@ + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + diff --git a/App.xaml b/App.xaml new file mode 100644 index 0000000..a10244d --- /dev/null +++ b/App.xaml @@ -0,0 +1,11 @@ + + + + + + + + diff --git a/App.xaml.bak b/App.xaml.bak new file mode 100644 index 0000000..cb3515e --- /dev/null +++ b/App.xaml.bak @@ -0,0 +1,10 @@ + + + + + + + diff --git a/App.xaml.cs b/App.xaml.cs new file mode 100644 index 0000000..b6abe4b --- /dev/null +++ b/App.xaml.cs @@ -0,0 +1,128 @@ +using System; +using System.Collections.Generic; +using System.Data; +using System.Linq; +using System.Windows; +using System.Globalization; +using System.Windows.Markup; +using System.ComponentModel; +using System.Configuration; +using System.Diagnostics; +using System.IO; +using Forms=System.Windows.Forms; +using TradeBlotter.ViewModels; +using MarketData; +using TradeBlotter.UIUtils; +using MarketData.Cache; +using TradeBlotter.Cache; + +namespace TradeBlotter +{ + /// + /// Interaction logic for App.xaml + /// + public partial class App : Application + { + static App() + { + FrameworkElement.LanguageProperty.OverrideMetadata(typeof(FrameworkElement),new FrameworkPropertyMetadata(XmlLanguage.GetLanguage(CultureInfo.CurrentCulture.IetfLanguageTag))); + } + protected override void OnStartup(StartupEventArgs e) + { + + try + { + MDTrace.LogLevel = LogLevel.VERBOSE; + String strLogFile = "enavigator.log"; + Trace.Listeners.Add(new TextWriterTraceListener(strLogFile)); + MDTrace.WriteLine(LogLevel.DEBUG, "[STARTING]"); + + AppDomain currentDomain = AppDomain.CurrentDomain; + currentDomain.UnhandledException += new UnhandledExceptionEventHandler(UnhandledExceptionHandler); + + + WebBrowserHelper.SetWebBrowserCompatibility(); // This is to prevent the webbrowser control from popping up compatibility messagebox while browsing the SEC filings. + base.OnStartup(e); + MainWindow mainWindow = new MainWindow(); + MainWindowViewModel mainWindowViewModel = new MainWindowViewModel(); + EventHandler handler = null; + handler = delegate + { + if(null!=mainWindowViewModel) + { + mainWindowViewModel.RequestClose -= handler; + mainWindowViewModel.Dispose(); + mainWindowViewModel = null; + } + if(null!=mainWindow) + { + mainWindow.Close(); + mainWindow = null; + } + }; + mainWindowViewModel.RequestClose+=handler; + mainWindow.DataContext=mainWindowViewModel; + CancelEventHandler closingEventHandler = null; + closingEventHandler = delegate + { + if (null != mainWindowViewModel) + { + mainWindowViewModel.RequestClose -= handler; + mainWindowViewModel.Dispose(); + mainWindowViewModel = null; + } + }; + mainWindow.Closing += closingEventHandler; + mainWindow.Show(); + mainWindow.WindowState=WindowState.Maximized; + CreateFloatingWindow(mainWindow); + mainWindow.Focus(); + } + catch(Exception exception) + { + MDTrace.WriteLine(LogLevel.DEBUG,String.Format("Exception:{0}",exception.ToString())); + MessageBox.Show(String.Format("An exception was encountered. Please check the log file. The application will now exit. {0}",exception.ToString())); + } + } +// The caches are disposed in the MainWindowViewModel::OnDispose() + protected override void OnExit(ExitEventArgs e) + { + //try{LocalPriceCache.GetInstance().Dispose();}catch(Exception){;} + //try{GBPriceCache.GetInstance().Dispose();}catch(Exception){;} + //try{PriceCache.GetInstance().Dispose();}catch(Exception){;} +// DividendHistoryCache.GetInstance().Dispose(); + } + void UnhandledExceptionHandler(object sender, UnhandledExceptionEventArgs eventArgs) + { + MDTrace.WriteLine(LogLevel.DEBUG, String.Format("App.Xaml.cs->UnhandledExceptionHandler()")); + string errorMessage = string.Format("An unhandled exception occurred: {0}", eventArgs.ExceptionObject); + MDTrace.WriteLine(LogLevel.DEBUG, String.Format("Exception:{0}", errorMessage)); + } + //void OnDispatcherUnhandledException(object sender, System.Windows.Threading.DispatcherUnhandledExceptionEventArgs eventArgs) + //{ + // string errorMessage = string.Format("An unhandled exception occurred: {0}", eventArgs.Exception.Message); + // MDTrace.WriteLine(LogLevel.DEBUG, String.Format("Exception:{0}", errorMessage)); + // eventArgs.Handled = true; + //} + private static void CreateFloatingWindow(Window parentWindow) + { + String launchTicker=ConfigurationManager.AppSettings["LaunchTickerView"]; + if(null==launchTicker)return; + launchTicker=launchTicker.ToLower(); + if(launchTicker.Equals("false"))return; + FloatingWindow floatingWindow=new FloatingWindow(); + floatingWindow.Width=SystemParameters.VirtualScreenWidth; + floatingWindow.Top=(SystemParameters.VirtualScreenTop+SystemParameters.VirtualScreenHeight)-floatingWindow.Height; + floatingWindow.Left=0; + floatingWindow.Topmost=true; + FloatingWindowViewModel floatingWindowViewModel=new FloatingWindowViewModel(floatingWindow.LayoutRoot); + floatingWindow.DataContext=floatingWindowViewModel; + parentWindow.Closing+=delegate + { + floatingWindowViewModel.Dispose(); + floatingWindow.Close(); + }; + floatingWindow.Show(); + } + } +} diff --git a/Application.ico b/Application.ico new file mode 100644 index 0000000..0277a10 Binary files /dev/null and b/Application.ico differ diff --git a/Cache/PriceCache.cs b/Cache/PriceCache.cs new file mode 100644 index 0000000..e64921c --- /dev/null +++ b/Cache/PriceCache.cs @@ -0,0 +1,105 @@ +using System; +using System.Collections.Generic; +using System.Linq; +using System.Text; +using System.Threading; +using MarketData.MarketDataModel; +using MarketData.Helper; +using MarketData; +using MarketData.Utils; + +namespace TradeBlotter.Cache +{ + public class PriceCache:IDisposable + { + private Dictionary priceCache=new Dictionary(); + private Object thisLock=new Object(); + private Thread cacheMonitorThread=null; + private volatile bool threadRun=true; + private int cacheRefreshAfter=60000; + private static PriceCache priceCacheInstance=null; + + private PriceCache() + { + cacheMonitorThread=new Thread(new ThreadStart(ThreadProc)); + cacheMonitorThread.Start(); + } + public static PriceCache GetInstance() + { + lock(typeof(PriceCache)) + { + if(null==priceCacheInstance) priceCacheInstance=new PriceCache(); + return priceCacheInstance; + } + } + public void Clear() + { + lock(thisLock) + { + priceCache=new Dictionary(); + } + } + public void Dispose() + { + lock(thisLock) + { + if(null==priceCacheInstance || false==threadRun)return; + threadRun=false; + if(null!=cacheMonitorThread) + { + MDTrace.WriteLine(LogLevel.DEBUG,String.Format("[PriceCache:Dispose]Thread state is {0}. Joining main thread...",Utility.ThreadStateToString(cacheMonitorThread))); + cacheMonitorThread.Join(5000); + cacheMonitorThread=null; + MDTrace.WriteLine(LogLevel.DEBUG,"[PriceCache:Dispose] End."); + } + priceCacheInstance=null; + } + } + public Price GetLatestPrice(String symbol) + { + lock(thisLock) + { + if(priceCache.ContainsKey(symbol)) + { + return priceCache[symbol]; + } + Price price=MarketDataHelper.GetLatestPrice(symbol); + if(null!=price) Add(price); + return price; + } + } + public bool Contains(String symbol) + { + lock(thisLock) + { + return priceCache.ContainsKey(symbol); + } + } + private void Add(Price price) + { + lock(thisLock) + { + if(priceCache.ContainsKey(price.Symbol)) return; + priceCache.Add(price.Symbol,price); + } + } + private void ThreadProc() + { + int quantums=0; + int quantumInterval=1000; + while(threadRun) + { + Thread.Sleep(quantumInterval); + quantums+=quantumInterval; + if(quantums>cacheRefreshAfter) + { + quantums=0; + lock(thisLock) + { + priceCache.Clear(); + } + } + } + } + } +} diff --git a/Command/CommandViewModel.cs b/Command/CommandViewModel.cs new file mode 100644 index 0000000..df27e4f --- /dev/null +++ b/Command/CommandViewModel.cs @@ -0,0 +1,33 @@ +using System; +using System.Collections.Generic; +using System.Windows.Input; +using System.Text; +using TradeBlotter.ViewModels; + +namespace TradeBlotter.Command +{ + public class CommandViewModel : ViewModelBase + { + public CommandViewModel(string displayName, ICommand command) + { + if (command == null) throw new ArgumentNullException("command"); + base.DisplayName = displayName; + this.Command = command; + } + public ICommand Command + { + get; private set; + } + public override SaveParameters GetSaveParameters() + { + return null; + } + public override void SetSaveParameters(SaveParameters saveParameters) + { + } + public override bool CanPersist() + { + return false; + } + } +} diff --git a/Command/RelayCommand.cs b/Command/RelayCommand.cs new file mode 100644 index 0000000..3be80eb --- /dev/null +++ b/Command/RelayCommand.cs @@ -0,0 +1,44 @@ +using System; +using System.Collections.Generic; +using System.Windows.Input; +using System.Diagnostics; +using System.Text; + +namespace TradeBlotter.Command +{ + public class RelayCommand : ICommand + { + readonly Action execute; + readonly Predicate canExecute; + public RelayCommand(Action execute) + : this(execute, null) + { + } + public RelayCommand(Action execute, Predicate canExecute) + { + if (execute == null) throw new ArgumentNullException("execute"); + this.execute = execute; + this.canExecute = canExecute; + } + [DebuggerStepThrough] + public bool CanExecute(object parameter) + { + return canExecute == null ? true : canExecute(parameter); + } + public event EventHandler CanExecuteChanged + { + add + { + CommandManager.RequerySuggested += value; + } + remove + { + CommandManager.RequerySuggested -= value; + } + } + public void Execute(object parameter) + { + execute(parameter); + } + } +} diff --git a/DataAccess/TradeAddedEvenArgs.cs b/DataAccess/TradeAddedEvenArgs.cs new file mode 100644 index 0000000..8282340 --- /dev/null +++ b/DataAccess/TradeAddedEvenArgs.cs @@ -0,0 +1,18 @@ +using System; +using System.Collections.Generic; +using System.Linq; +using System.Text; +using TradeBlotter.Model; +using MarketData.MarketDataModel; + +namespace TradeBlotter.DataAccess +{ + public class TradeAddedEventArgs : EventArgs + { + public TradeAddedEventArgs(BlotterTradeModel trade) + { + this.NewTrade = trade; + } + public BlotterTradeModel NewTrade { get; private set; } + } +} diff --git a/DataAccess/TradeRepository.cs b/DataAccess/TradeRepository.cs new file mode 100644 index 0000000..827b7c1 --- /dev/null +++ b/DataAccess/TradeRepository.cs @@ -0,0 +1,139 @@ +using System; +using System.Collections.Generic; +using System.Linq; +using System.Text; +using System.IO; +using TradeBlotter.Model; +using MarketData.MarketDataModel; +using MarketData.DataAccess; + +namespace TradeBlotter.DataAccess +{ + public class TradeRepository + { + private readonly List trades; + private static TradeRepository instance=null; + + private TradeRepository() + { + Dictionary companyNameCache=new Dictionary(); + trades = new List(); + PortfolioTrades portfolioTrades = PortfolioDA.GetTrades(); + if (null == portfolioTrades || 0 == portfolioTrades.Count) return; + foreach (PortfolioTrade portfolioTrade in portfolioTrades) + { + BlotterTradeModel blotterTrade = BlotterTradeModel.CreateTrade(); + blotterTrade.TradeId = portfolioTrade.TradeId; + blotterTrade.Symbol=portfolioTrade.Symbol; + blotterTrade.TradeDate=portfolioTrade.TradeDate; + blotterTrade.Shares=portfolioTrade.Shares; + blotterTrade.BuySell=portfolioTrade.BuySell; + blotterTrade.Price=portfolioTrade.Price; + blotterTrade.Commission = portfolioTrade.Commission; + blotterTrade.Account = portfolioTrade.Account; + blotterTrade.Status = portfolioTrade.Status; + if(companyNameCache.ContainsKey(portfolioTrade.Symbol))blotterTrade.CompanyName=companyNameCache[portfolioTrade.Symbol]; + else + { + String companyName=PricingDA.GetNameForSymbol(portfolioTrade.Symbol); + if(null!=companyName) + { + companyNameCache.Add(portfolioTrade.Symbol,companyName); + blotterTrade.CompanyName=companyNameCache[portfolioTrade.Symbol]; + } + } +// blotterTrade.CompanyName = PricingDA.GetNameForSymbol(portfolioTrade.Symbol); + blotterTrade.SellPrice = portfolioTrade.SellPrice; + blotterTrade.SellDate = portfolioTrade.SellDate; + trades.Add(blotterTrade); + } + } + public static TradeRepository GetInstance() + { + lock(typeof(TradeRepository)) + { + if(null==instance)instance=new TradeRepository(); + return instance; + } + } + public event EventHandler TradeAdded; + public bool AddTrade(BlotterTradeModel trade) + { + if (null == trade) throw new ArgumentNullException("trade"); + if (ContainsTrade(trade)) return false; + int tradeId = PortfolioDA.AddTrade(trade); + if (-1 == tradeId) return false; + trade.TradeId = tradeId; + trades.Add(trade); + AdjustCash(trade); + if (null != this.TradeAdded) this.TradeAdded(this, new TradeAddedEventArgs(trade)); + return true; + } + public bool UpdateTrade(BlotterTradeModel trade) + { + bool result = false; + BlotterTradeModel blotterTradeModel = GetTrade(trade.TradeId); + if (null == blotterTradeModel) return false; + blotterTradeModel.CopyFrom(trade); + result=PortfolioDA.UpdateTrade(trade); + if (true == result) AdjustCash(trade); + return result; + } + public bool ContainsTrade(BlotterTradeModel searchTrade) + { + var existingTrades=from trade in trades where trade.TradeId==searchTrade.TradeId select trade; + return 0 == existingTrades.Count() ? false : true; + } + public BlotterTradeModel GetTrade(int tradeId) + { + var existingTrades = from trade in trades where trade.TradeId == tradeId select trade; + if (0 == existingTrades.Count()) return null; + return existingTrades.FirstOrDefault(); + } + public void Remove(int tradeId) + { + var theTrades=from trade in trades where trade.TradeId==tradeId select trade; + PortfolioDA.DeleteTrade(theTrades.ElementAt(0).TradeId); + trades.Remove(theTrades.ElementAt(0)); + } + public List GetTrades() + { + return new List(trades); + } +// Accounting + private void AdjustCash(BlotterTradeModel trade) + { + CashTransaction cashTransaction = new CashTransaction(); + StringBuilder sb = new StringBuilder(); + cashTransaction.Account = trade.Account; + if(trade.BuySell.Equals("B")) + { + cashTransaction.TransactionDate = trade.TradeDate; + cashTransaction.Debit = trade.Shares * trade.Price; + sb.Append("Buy").Append(" ").Append(trade.Shares.ToString()); + sb.Append(" of ").Append(trade.Symbol).Append(" @").Append(String.Format("{0:C}", trade.Price)); + } + else + { + cashTransaction.TransactionDate = trade.SellDate; + cashTransaction.Credit = trade.Shares * trade.SellPrice; + sb.Append("Sell").Append(" ").Append(trade.Shares.ToString()); + sb.Append(" of ").Append(trade.Symbol).Append(" @").Append(String.Format("{0:C}", trade.SellPrice)); + } + cashTransaction.Description = sb.ToString(); + CashDA.AddTransaction(cashTransaction); + if (trade.Commission > 0) + { + cashTransaction = new CashTransaction(); + cashTransaction.Account = trade.Account; + if(trade.BuySell.Equals("B"))cashTransaction.TransactionDate = trade.TradeDate; + else cashTransaction.TransactionDate = trade.SellDate; + cashTransaction.Debit = trade.Commission; + sb=new StringBuilder(); + sb.Append("Commission: ").Append(trade.Symbol).Append(" ").Append(String.Format("{0:C}", trade.Commission)); + cashTransaction.Description = sb.ToString(); + CashDA.AddTransaction(cashTransaction); + } + } + } +} diff --git a/FloatingWindow.xaml b/FloatingWindow.xaml new file mode 100644 index 0000000..dbd1153 --- /dev/null +++ b/FloatingWindow.xaml @@ -0,0 +1,43 @@ + + + + + + + + + + + + + + + diff --git a/FloatingWindow.xaml.cs b/FloatingWindow.xaml.cs new file mode 100644 index 0000000..a76b425 --- /dev/null +++ b/FloatingWindow.xaml.cs @@ -0,0 +1,39 @@ +using System; +using System.Collections.Generic; +using System.Linq; +using System.Text; +using System.Threading.Tasks; +using System.Windows; +using System.Windows.Controls; +using System.Windows.Data; +using System.Windows.Documents; +using System.Windows.Input; +using System.Windows.Media; +using System.Windows.Media.Imaging; +using System.Windows.Shapes; + +namespace TradeBlotter +{ + /// + /// Interaction logic for FloatingWindow.xaml + /// + public partial class FloatingWindow : Window + { + public FloatingWindow() + { + InitializeComponent(); + } + + private void wndMouseLeftButtonDown(object sender, MouseButtonEventArgs e) + { + DragMove(); + } + private void wndMouseDoubleClick(object sender, MouseButtonEventArgs e) + { + Top=(SystemParameters.VirtualScreenTop+SystemParameters.VirtualScreenHeight)-Height; + Left=0; + Width=SystemParameters.VirtualScreenWidth; + Topmost=true; + } + } +} diff --git a/Helper/FilterEvaluator.cs b/Helper/FilterEvaluator.cs new file mode 100644 index 0000000..8fdf764 --- /dev/null +++ b/Helper/FilterEvaluator.cs @@ -0,0 +1,117 @@ +using System; +using System.Collections.Generic; +//using System.Linq; +using System.Text; +using System.Diagnostics; + +namespace TradeBlotter.Helper +{ + public class FilterEvaluator where T : IConvertible, IComparable + { + public enum Expression { Equal, LessThan, LessThanOrEqual, GreaterThan, GreaterThanOrEqual, Invalid }; + private T value; + private bool isValid = false; + private Expression expression = Expression.Invalid; + private String defaultExpression; + private bool isEnabled = false; + private bool debugMode = false; + private String filterName; + + public FilterEvaluator(String filterName,String filterExpression) + { + this.filterName = filterName; + defaultExpression = filterExpression; + SetExpression(filterExpression); + } + public bool IsEnabled + { + get { return isEnabled; } + set { isEnabled = value; } + } + public bool DebugMode + { + get { return debugMode; } + set { debugMode = value; } + } + public void UseDefault() + { + SetExpression(defaultExpression); + } + public bool SetExpression(String filterExpression) + { + try + { + if (filterExpression == null) + { + isValid = false; + return false; + } + if (filterExpression.StartsWith("<=")) + { + expression = Expression.LessThanOrEqual; + value = (T)Convert.ChangeType(filterExpression.Substring(2), typeof(T)); + } + else if (filterExpression.StartsWith(">=")) + { + expression = Expression.GreaterThanOrEqual; + value = (T)Convert.ChangeType(filterExpression.Substring(2), typeof(T)); + } + else if (filterExpression.StartsWith("=")) + { + expression = Expression.Equal; + value = (T)Convert.ChangeType(filterExpression.Substring(1), typeof(T)); + } + else if (filterExpression.StartsWith("<")) + { + expression = Expression.LessThan; + value = (T)Convert.ChangeType(filterExpression.Substring(1), typeof(T)); + } + else if (filterExpression.StartsWith(">")) + { + expression = Expression.GreaterThan; + value = (T)Convert.ChangeType(filterExpression.Substring(1), typeof(T)); + } + else + { + expression = Expression.Equal; + value = (T)Convert.ChangeType(filterExpression, typeof(T)); + } + isValid = true; + return true; + } + catch (Exception) + { + isValid = false; + return false; + } + } + public bool IsValid + { + get { return isValid; } + } + public bool Evaluate(T value) + { + if (!IsValid ||!IsEnabled) return true; + switch (expression) + { + case Expression.Equal: + if (debugMode) Debug.WriteLine(value.ToString() + "==" + this.value + ":" + value.Equals(this.value).ToString()); + return value.Equals(this.value); + case Expression.LessThan: + if (debugMode) Debug.WriteLine(value.ToString() + "<" + this.value + ":" + (value.CompareTo(this.value)<0).ToString()); + return value.CompareTo(this.value) < 0 ? true : false; + case Expression.GreaterThan: + if (debugMode) Debug.WriteLine(value.ToString() + ">" + this.value + ":" + (value.CompareTo(this.value)>0).ToString()); + return value.CompareTo(this.value) > 0 ? true : false; + case Expression.LessThanOrEqual: + if (debugMode) Debug.WriteLine(value.ToString() + "<=" + this.value + ":" + (value.CompareTo(this.value)<=0).ToString()); + return value.CompareTo(this.value) <= 0 ? true : false; + case Expression.GreaterThanOrEqual: + if (debugMode) Debug.WriteLine(value.ToString() + ">=" + this.value + ":" + (value.CompareTo(this.value)>=0).ToString()); + return value.CompareTo(this.value) >= 0 ? true : false; + default: + return false; + } + } + } +} diff --git a/HighSeas.jpg b/HighSeas.jpg new file mode 100644 index 0000000..0d9e72f Binary files /dev/null and b/HighSeas.jpg differ diff --git a/HighSeas2.jpg b/HighSeas2.jpg new file mode 100644 index 0000000..d890d82 Binary files /dev/null and b/HighSeas2.jpg differ diff --git a/MainWindow.xaml b/MainWindow.xaml new file mode 100644 index 0000000..4727b20 --- /dev/null +++ b/MainWindow.xaml @@ -0,0 +1,63 @@ + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + diff --git a/MainWindow.xaml.cs b/MainWindow.xaml.cs new file mode 100644 index 0000000..9333f05 --- /dev/null +++ b/MainWindow.xaml.cs @@ -0,0 +1,37 @@ +using MarketData; +using System; +using System.Collections.Generic; +using System.Linq; +using System.Text; +using System.Windows; +using System.Windows.Controls; +using System.Windows.Data; +using System.Windows.Documents; +using System.Windows.Input; +using System.Windows.Media; +using System.Windows.Media.Imaging; +using System.Windows.Navigation; +using System.Windows.Shapes; +using Telerik.Windows.Controls; + +namespace TradeBlotter +{ + /// + /// Interaction logic for MainWindow.xaml + /// + public partial class MainWindow : Window + { + public MainWindow() + { + try + { + ToolTipService.ShowDurationProperty.OverrideMetadata(typeof(DependencyObject), new FrameworkPropertyMetadata(Int32.MaxValue)); + InitializeComponent(); + } + catch(Exception exception) + { + MDTrace.WriteLine(LogLevel.DEBUG,String.Format("Exception {0}",exception.ToString())); + } + } + } +} diff --git a/MainWindowResources.xaml b/MainWindowResources.xaml new file mode 100644 index 0000000..b166936 --- /dev/null +++ b/MainWindowResources.xaml @@ -0,0 +1,286 @@ + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + diff --git a/Scraps/ContextMenu.txt b/Scraps/ContextMenu.txt new file mode 100644 index 0000000..097feab --- /dev/null +++ b/Scraps/ContextMenu.txt @@ -0,0 +1,5 @@ + + + + + diff --git a/TradeBlotter.csproj b/TradeBlotter.csproj new file mode 100644 index 0000000..251946d --- /dev/null +++ b/TradeBlotter.csproj @@ -0,0 +1,585 @@ + + + + Debug + x86 + 8.0.30703 + 2.0 + {656F496C-0406-47A1-BDC3-15A5CE403381} + WinExe + Properties + TradeBlotter + TradeBlotter + v4.6.2 + + + 512 + {60dc8134-eba5-43b8-bcc9-bb4bc16c2548};{FAE04EC0-301F-11D3-BF4B-00C04F79EFBC} + 4 + publish\ + true + Disk + false + Foreground + 7 + Days + false + false + true + 0 + 1.0.0.%2a + false + false + true + + + AnyCPU + true + full + false + bin\Debug\ + DEBUG;TRACE + prompt + 0 + false + + + x86 + pdbonly + true + bin\Release\ + TRACE + prompt + 4 + false + + + Application.ico + + + + + + + + + + + + + + + + 4.0 + + + references\Telerik.Windows.Controls.dll + + + references\Telerik.Windows.Controls.Chart.dll + + + references\Telerik.Windows.Controls.Charting.dll + + + references\Telerik.Windows.Controls.GridView.dll + + + references\Telerik.Windows.Controls.Input.dll + + + references\Telerik.Windows.Controls.Navigation.dll + + + references\Telerik.Windows.Controls.RichTextBoxUI.dll + + + references\Telerik.Windows.Data.dll + + + + + + + + MSBuild:Compile + Designer + + + + + + FloatingWindow.xaml + + + + + + + + + + + + + + + + + + + + + + + + + True + True + Resources.resx + + + CMTTrendModelClosePositionDialog.xaml + + + CMTTrendModelEditPositionDialog.xaml + + + ProformaAddPositionDialog.xaml + + + ProformaAddRiskDividendParityPositionDialog.xaml + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + AnalystRatingsView.xaml + + + BlotterView.xaml + + + BollingerBandView.xaml + + + CMMomentumView.xaml + + + CMTTrendView.xaml + + + DCFValuationView.xaml + + + DividendPaymentView.xaml + + + DividendRiskParityView.xaml + + + DividendView.xaml + + + EarningsAnnouncementView.xaml + + + ETFHoldingView.xaml + + + FeedStatisticsView.xaml + + + GainLossView.xaml + + + HeadlinesView.xaml + + + HistoricalView.xaml + + + MACDView.xaml + + + MomentumView.xaml + + + MovingAverageView.xaml + + + OptionsView.xaml + + + OptionsWorksheetView.xaml + + + PricingView.xaml + + + ResistanceAndSupportView.xaml + + + RiskProfileView.xaml + + + RSIView.xaml + + + SECFilingView.xaml + + + SectorView.xaml + + + StickerPriceView.xaml + + + StochasticsView.xaml + + + TradeEntryView.xaml + + + TradeModelView.xaml + + + ValuationsView.xaml + + + ValueAtRiskView.xaml + + + WatchListView.xaml + + + YieldCurveView.xaml + + + Designer + MSBuild:Compile + + + MSBuild:Compile + Designer + + + App.xaml + Code + + + + + + + MainWindow.xaml + Code + + + MSBuild:Compile + Designer + + + Designer + MSBuild:Compile + + + Designer + MSBuild:Compile + + + Designer + MSBuild:Compile + + + Designer + MSBuild:Compile + + + Designer + MSBuild:Compile + + + Designer + MSBuild:Compile + + + Designer + MSBuild:Compile + + + Designer + MSBuild:Compile + + + Designer + MSBuild:Compile + + + Designer + MSBuild:Compile + + + Designer + MSBuild:Compile + + + Designer + MSBuild:Compile + + + Designer + MSBuild:Compile + + + Designer + MSBuild:Compile + + + Designer + MSBuild:Compile + + + Designer + MSBuild:Compile + + + Designer + MSBuild:Compile + + + Designer + MSBuild:Compile + + + Designer + MSBuild:Compile + + + Designer + MSBuild:Compile + + + Designer + MSBuild:Compile + + + Designer + MSBuild:Compile + + + Designer + MSBuild:Compile + + + Designer + MSBuild:Compile + + + Designer + MSBuild:Compile + + + Designer + MSBuild:Compile + + + Designer + MSBuild:Compile + + + Designer + MSBuild:Compile + + + Designer + MSBuild:Compile + + + Designer + MSBuild:Compile + + + Designer + MSBuild:Compile + + + Designer + MSBuild:Compile + + + Designer + MSBuild:Compile + + + Designer + MSBuild:Compile + + + Designer + MSBuild:Compile + + + Designer + MSBuild:Compile + + + Designer + MSBuild:Compile + + + Designer + MSBuild:Compile + + + + + Code + + + True + Settings.settings + True + + + ResXFileCodeGenerator + Designer + Resources.Designer.cs + + + Designer + Always + + + SettingsSingleFileGenerator + Settings.Designer.cs + + + + + + {f0f0f2b4-bb86-49b5-ba93-2642637033d6} + Axiom.Core + + + {ecd37682-df7e-409f-912d-0965634556b5} + DynamicDataDisplay + + + {E807F1CA-9D9C-484A-8E83-269D57707B4B} + MarketDataLib + + + {c2682400-eeb6-41ad-ae25-1d60a307d99c} + TickerLib + + + {72e591d6-8f83-4d8c-8f67-9c325e623234} + Xceed.Wpf.Toolkit + + + + + False + Microsoft .NET Framework 4 Client Profile %28x86 and x64%29 + true + + + False + .NET Framework 3.5 SP1 Client Profile + false + + + False + .NET Framework 3.5 SP1 + false + + + False + Windows Installer 3.1 + true + + + + + Always + + + + + Always + + + + + + + + + Always + + + + + editbin /largeaddressaware $(targetpath) + + + \ No newline at end of file diff --git a/TradeBlotter.sln b/TradeBlotter.sln new file mode 100644 index 0000000..67e22cf --- /dev/null +++ b/TradeBlotter.sln @@ -0,0 +1,130 @@ + +Microsoft Visual Studio Solution File, Format Version 12.00 +# Visual Studio 2013 +VisualStudioVersion = 12.0.21005.1 +MinimumVisualStudioVersion = 10.0.40219.1 +Project("{FAE04EC0-301F-11D3-BF4B-00C04F79EFBC}") = "TradeBlotter", "TradeBlotter.csproj", "{656F496C-0406-47A1-BDC3-15A5CE403381}" + ProjectSection(ProjectDependencies) = postProject + {72E591D6-8F83-4D8C-8F67-9C325E623234} = {72E591D6-8F83-4D8C-8F67-9C325E623234} + EndProjectSection +EndProject +Project("{FAE04EC0-301F-11D3-BF4B-00C04F79EFBC}") = "MarketDataLib", "..\marketdata\MarketDataLib\MarketDataLib.csproj", "{E807F1CA-9D9C-484A-8E83-269D57707B4B}" +EndProject +Project("{FAE04EC0-301F-11D3-BF4B-00C04F79EFBC}") = "DynamicDataDisplay", "..\DynamicDataDisplay\DynamicDataDisplay.csproj", "{ECD37682-DF7E-409F-912D-0965634556B5}" +EndProject +Project("{FAE04EC0-301F-11D3-BF4B-00C04F79EFBC}") = "Xceed.Wpf.Toolkit", "..\WPFToolkit\Src\Xceed.Wpf.Toolkit\Xceed.Wpf.Toolkit.csproj", "{72E591D6-8F83-4D8C-8F67-9C325E623234}" +EndProject +Project("{FAE04EC0-301F-11D3-BF4B-00C04F79EFBC}") = "TickerLib", "..\TickerLib\TickerLib.csproj", "{C2682400-EEB6-41AD-AE25-1D60A307D99C}" +EndProject +Project("{FAE04EC0-301F-11D3-BF4B-00C04F79EFBC}") = "Axiom.Core", "..\Axiom\Axiom.Core\Axiom.Core.csproj", "{F0F0F2B4-BB86-49B5-BA93-2642637033D6}" +EndProject +Global + GlobalSection(SolutionConfigurationPlatforms) = preSolution + Debug|Any CPU = Debug|Any CPU + Debug|Mixed Platforms = Debug|Mixed Platforms + Debug|x86 = Debug|x86 + Release|Any CPU = Release|Any CPU + Release|Mixed Platforms = Release|Mixed Platforms + Release|x86 = Release|x86 + ReleaseXBAP|Any CPU = ReleaseXBAP|Any CPU + ReleaseXBAP|Mixed Platforms = ReleaseXBAP|Mixed Platforms + ReleaseXBAP|x86 = ReleaseXBAP|x86 + EndGlobalSection + GlobalSection(ProjectConfigurationPlatforms) = postSolution + {656F496C-0406-47A1-BDC3-15A5CE403381}.Debug|Any CPU.ActiveCfg = Debug|x86 + {656F496C-0406-47A1-BDC3-15A5CE403381}.Debug|Any CPU.Build.0 = Debug|x86 + {656F496C-0406-47A1-BDC3-15A5CE403381}.Debug|Mixed Platforms.ActiveCfg = Debug|x86 + {656F496C-0406-47A1-BDC3-15A5CE403381}.Debug|Mixed Platforms.Build.0 = Debug|x86 + {656F496C-0406-47A1-BDC3-15A5CE403381}.Debug|x86.ActiveCfg = Debug|x86 + {656F496C-0406-47A1-BDC3-15A5CE403381}.Debug|x86.Build.0 = Debug|x86 + {656F496C-0406-47A1-BDC3-15A5CE403381}.Release|Any CPU.ActiveCfg = Release|x86 + {656F496C-0406-47A1-BDC3-15A5CE403381}.Release|Any CPU.Build.0 = Release|x86 + {656F496C-0406-47A1-BDC3-15A5CE403381}.Release|Mixed Platforms.ActiveCfg = Release|x86 + {656F496C-0406-47A1-BDC3-15A5CE403381}.Release|Mixed Platforms.Build.0 = Release|x86 + {656F496C-0406-47A1-BDC3-15A5CE403381}.Release|x86.ActiveCfg = Release|x86 + {656F496C-0406-47A1-BDC3-15A5CE403381}.Release|x86.Build.0 = Release|x86 + {656F496C-0406-47A1-BDC3-15A5CE403381}.ReleaseXBAP|Any CPU.ActiveCfg = Release|x86 + {656F496C-0406-47A1-BDC3-15A5CE403381}.ReleaseXBAP|Mixed Platforms.ActiveCfg = Release|x86 + {656F496C-0406-47A1-BDC3-15A5CE403381}.ReleaseXBAP|Mixed Platforms.Build.0 = Release|x86 + {656F496C-0406-47A1-BDC3-15A5CE403381}.ReleaseXBAP|x86.ActiveCfg = Release|x86 + {656F496C-0406-47A1-BDC3-15A5CE403381}.ReleaseXBAP|x86.Build.0 = Release|x86 + {E807F1CA-9D9C-484A-8E83-269D57707B4B}.Debug|Any CPU.ActiveCfg = Debug|Any CPU + {E807F1CA-9D9C-484A-8E83-269D57707B4B}.Debug|Any CPU.Build.0 = Debug|Any CPU + {E807F1CA-9D9C-484A-8E83-269D57707B4B}.Debug|Mixed Platforms.ActiveCfg = Debug|Any CPU + {E807F1CA-9D9C-484A-8E83-269D57707B4B}.Debug|Mixed Platforms.Build.0 = Debug|Any CPU + {E807F1CA-9D9C-484A-8E83-269D57707B4B}.Debug|x86.ActiveCfg = Debug|Any CPU + {E807F1CA-9D9C-484A-8E83-269D57707B4B}.Release|Any CPU.ActiveCfg = Release|Any CPU + {E807F1CA-9D9C-484A-8E83-269D57707B4B}.Release|Any CPU.Build.0 = Release|Any CPU + {E807F1CA-9D9C-484A-8E83-269D57707B4B}.Release|Mixed Platforms.ActiveCfg = Release|Any CPU + {E807F1CA-9D9C-484A-8E83-269D57707B4B}.Release|Mixed Platforms.Build.0 = Release|Any CPU + {E807F1CA-9D9C-484A-8E83-269D57707B4B}.Release|x86.ActiveCfg = Release|Any CPU + {E807F1CA-9D9C-484A-8E83-269D57707B4B}.ReleaseXBAP|Any CPU.ActiveCfg = Release|Any CPU + {E807F1CA-9D9C-484A-8E83-269D57707B4B}.ReleaseXBAP|Any CPU.Build.0 = Release|Any CPU + {E807F1CA-9D9C-484A-8E83-269D57707B4B}.ReleaseXBAP|Mixed Platforms.ActiveCfg = Release|Any CPU + {E807F1CA-9D9C-484A-8E83-269D57707B4B}.ReleaseXBAP|Mixed Platforms.Build.0 = Release|Any CPU + {E807F1CA-9D9C-484A-8E83-269D57707B4B}.ReleaseXBAP|x86.ActiveCfg = Release|Any CPU + {ECD37682-DF7E-409F-912D-0965634556B5}.Debug|Any CPU.ActiveCfg = Debug|Any CPU + {ECD37682-DF7E-409F-912D-0965634556B5}.Debug|Any CPU.Build.0 = Debug|Any CPU + {ECD37682-DF7E-409F-912D-0965634556B5}.Debug|Mixed Platforms.ActiveCfg = Debug|Any CPU + {ECD37682-DF7E-409F-912D-0965634556B5}.Debug|Mixed Platforms.Build.0 = Debug|Any CPU + {ECD37682-DF7E-409F-912D-0965634556B5}.Debug|x86.ActiveCfg = Debug|Any CPU + {ECD37682-DF7E-409F-912D-0965634556B5}.Release|Any CPU.ActiveCfg = Release|Any CPU + {ECD37682-DF7E-409F-912D-0965634556B5}.Release|Any CPU.Build.0 = Release|Any CPU + {ECD37682-DF7E-409F-912D-0965634556B5}.Release|Mixed Platforms.ActiveCfg = Release|Any CPU + {ECD37682-DF7E-409F-912D-0965634556B5}.Release|Mixed Platforms.Build.0 = Release|Any CPU + {ECD37682-DF7E-409F-912D-0965634556B5}.Release|x86.ActiveCfg = Release|Any CPU + {ECD37682-DF7E-409F-912D-0965634556B5}.ReleaseXBAP|Any CPU.ActiveCfg = ReleaseXBAP|Any CPU + {ECD37682-DF7E-409F-912D-0965634556B5}.ReleaseXBAP|Any CPU.Build.0 = ReleaseXBAP|Any CPU + {ECD37682-DF7E-409F-912D-0965634556B5}.ReleaseXBAP|Mixed Platforms.ActiveCfg = ReleaseXBAP|Any CPU + {ECD37682-DF7E-409F-912D-0965634556B5}.ReleaseXBAP|Mixed Platforms.Build.0 = ReleaseXBAP|Any CPU + {ECD37682-DF7E-409F-912D-0965634556B5}.ReleaseXBAP|x86.ActiveCfg = ReleaseXBAP|Any CPU + {72E591D6-8F83-4D8C-8F67-9C325E623234}.Debug|Any CPU.ActiveCfg = Debug|Any CPU + {72E591D6-8F83-4D8C-8F67-9C325E623234}.Debug|Any CPU.Build.0 = Debug|Any CPU + {72E591D6-8F83-4D8C-8F67-9C325E623234}.Debug|Mixed Platforms.ActiveCfg = Debug|Any CPU + {72E591D6-8F83-4D8C-8F67-9C325E623234}.Debug|Mixed Platforms.Build.0 = Debug|Any CPU + {72E591D6-8F83-4D8C-8F67-9C325E623234}.Debug|x86.ActiveCfg = Debug|Any CPU + {72E591D6-8F83-4D8C-8F67-9C325E623234}.Release|Any CPU.ActiveCfg = Release|Any CPU + {72E591D6-8F83-4D8C-8F67-9C325E623234}.Release|Any CPU.Build.0 = Release|Any CPU + {72E591D6-8F83-4D8C-8F67-9C325E623234}.Release|Mixed Platforms.ActiveCfg = Release|Any CPU + {72E591D6-8F83-4D8C-8F67-9C325E623234}.Release|Mixed Platforms.Build.0 = Release|Any CPU + {72E591D6-8F83-4D8C-8F67-9C325E623234}.Release|x86.ActiveCfg = Release|Any CPU + {72E591D6-8F83-4D8C-8F67-9C325E623234}.ReleaseXBAP|Any CPU.ActiveCfg = Release|Any CPU + {72E591D6-8F83-4D8C-8F67-9C325E623234}.ReleaseXBAP|Any CPU.Build.0 = Release|Any CPU + {72E591D6-8F83-4D8C-8F67-9C325E623234}.ReleaseXBAP|Mixed Platforms.ActiveCfg = Release|Any CPU + {72E591D6-8F83-4D8C-8F67-9C325E623234}.ReleaseXBAP|Mixed Platforms.Build.0 = Release|Any CPU + {72E591D6-8F83-4D8C-8F67-9C325E623234}.ReleaseXBAP|x86.ActiveCfg = Release|Any CPU + {C2682400-EEB6-41AD-AE25-1D60A307D99C}.Debug|Any CPU.ActiveCfg = Debug|Any CPU + {C2682400-EEB6-41AD-AE25-1D60A307D99C}.Debug|Any CPU.Build.0 = Debug|Any CPU + {C2682400-EEB6-41AD-AE25-1D60A307D99C}.Debug|Mixed Platforms.ActiveCfg = Debug|Any CPU + {C2682400-EEB6-41AD-AE25-1D60A307D99C}.Debug|Mixed Platforms.Build.0 = Debug|Any CPU + {C2682400-EEB6-41AD-AE25-1D60A307D99C}.Debug|x86.ActiveCfg = Debug|Any CPU + {C2682400-EEB6-41AD-AE25-1D60A307D99C}.Release|Any CPU.ActiveCfg = Release|Any CPU + {C2682400-EEB6-41AD-AE25-1D60A307D99C}.Release|Any CPU.Build.0 = Release|Any CPU + {C2682400-EEB6-41AD-AE25-1D60A307D99C}.Release|Mixed Platforms.ActiveCfg = Release|Any CPU + {C2682400-EEB6-41AD-AE25-1D60A307D99C}.Release|Mixed Platforms.Build.0 = Release|Any CPU + {C2682400-EEB6-41AD-AE25-1D60A307D99C}.Release|x86.ActiveCfg = Release|Any CPU + {C2682400-EEB6-41AD-AE25-1D60A307D99C}.ReleaseXBAP|Any CPU.ActiveCfg = Release|Any CPU + {C2682400-EEB6-41AD-AE25-1D60A307D99C}.ReleaseXBAP|Any CPU.Build.0 = Release|Any CPU + {C2682400-EEB6-41AD-AE25-1D60A307D99C}.ReleaseXBAP|Mixed Platforms.ActiveCfg = Release|Any CPU + {C2682400-EEB6-41AD-AE25-1D60A307D99C}.ReleaseXBAP|Mixed Platforms.Build.0 = Release|Any CPU + {C2682400-EEB6-41AD-AE25-1D60A307D99C}.ReleaseXBAP|x86.ActiveCfg = Release|Any CPU + {F0F0F2B4-BB86-49B5-BA93-2642637033D6}.Debug|Any CPU.ActiveCfg = Debug|Any CPU + {F0F0F2B4-BB86-49B5-BA93-2642637033D6}.Debug|Any CPU.Build.0 = Debug|Any CPU + {F0F0F2B4-BB86-49B5-BA93-2642637033D6}.Debug|Mixed Platforms.ActiveCfg = Debug|Any CPU + {F0F0F2B4-BB86-49B5-BA93-2642637033D6}.Debug|Mixed Platforms.Build.0 = Debug|Any CPU + {F0F0F2B4-BB86-49B5-BA93-2642637033D6}.Debug|x86.ActiveCfg = Debug|Any CPU + {F0F0F2B4-BB86-49B5-BA93-2642637033D6}.Release|Any CPU.ActiveCfg = Release|Any CPU + {F0F0F2B4-BB86-49B5-BA93-2642637033D6}.Release|Any CPU.Build.0 = Release|Any CPU + {F0F0F2B4-BB86-49B5-BA93-2642637033D6}.Release|Mixed Platforms.ActiveCfg = Release|Any CPU + {F0F0F2B4-BB86-49B5-BA93-2642637033D6}.Release|Mixed Platforms.Build.0 = Release|Any CPU + {F0F0F2B4-BB86-49B5-BA93-2642637033D6}.Release|x86.ActiveCfg = Release|Any CPU + {F0F0F2B4-BB86-49B5-BA93-2642637033D6}.ReleaseXBAP|Any CPU.ActiveCfg = Release|Any CPU + {F0F0F2B4-BB86-49B5-BA93-2642637033D6}.ReleaseXBAP|Any CPU.Build.0 = Release|Any CPU + {F0F0F2B4-BB86-49B5-BA93-2642637033D6}.ReleaseXBAP|Mixed Platforms.ActiveCfg = Release|Any CPU + {F0F0F2B4-BB86-49B5-BA93-2642637033D6}.ReleaseXBAP|Mixed Platforms.Build.0 = Release|Any CPU + {F0F0F2B4-BB86-49B5-BA93-2642637033D6}.ReleaseXBAP|x86.ActiveCfg = Release|Any CPU + EndGlobalSection + GlobalSection(SolutionProperties) = preSolution + HideSolutionNode = FALSE + EndGlobalSection +EndGlobal diff --git a/UIUtils/CMTTrendModelClosePositionDialog.xaml b/UIUtils/CMTTrendModelClosePositionDialog.xaml new file mode 100644 index 0000000..acc2da9 --- /dev/null +++ b/UIUtils/CMTTrendModelClosePositionDialog.xaml @@ -0,0 +1,56 @@ + + + + + + + + + + + + + + + + + + + + + + + + + + + Symbol + + + + + + + + + 100.00 + + + Delete Stop + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + diff --git a/Views/AnalystRatingsView.xaml.cs b/Views/AnalystRatingsView.xaml.cs new file mode 100644 index 0000000..2f98378 --- /dev/null +++ b/Views/AnalystRatingsView.xaml.cs @@ -0,0 +1,27 @@ +using System; +using System.Collections.Generic; +using System.Linq; +using System.Text; +using System.Windows; +using System.Windows.Controls; +using System.Windows.Data; +using System.Windows.Documents; +using System.Windows.Input; +using System.Windows.Media; +using System.Windows.Media.Imaging; +using System.Windows.Navigation; +using System.Windows.Shapes; + +namespace TradeBlotter.Views +{ + /// + /// Interaction logic for AnalystRatingsView.xaml + /// + public partial class AnalystRatingsView : UserControl + { + public AnalystRatingsView() + { + InitializeComponent(); + } + } +} diff --git a/Views/BlotterView.xaml b/Views/BlotterView.xaml new file mode 100644 index 0000000..bee2015 --- /dev/null +++ b/Views/BlotterView.xaml @@ -0,0 +1,162 @@ + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + diff --git a/Views/BlotterView.xaml.cs b/Views/BlotterView.xaml.cs new file mode 100644 index 0000000..adcff22 --- /dev/null +++ b/Views/BlotterView.xaml.cs @@ -0,0 +1,27 @@ +using System; +using System.Collections.Generic; +using System.Linq; +using System.Text; +using System.Windows; +using System.Windows.Controls; +using System.Windows.Data; +using System.Windows.Documents; +using System.Windows.Input; +using System.Windows.Media; +using System.Windows.Media.Imaging; +using System.Windows.Navigation; +using System.Windows.Shapes; + +namespace TradeBlotter.Views +{ + /// + /// Interaction logic for BlotterView.xaml + /// + public partial class BlotterView : UserControl + { + public BlotterView() + { + InitializeComponent(); + } + } +} diff --git a/Views/BollingerBandView.xaml b/Views/BollingerBandView.xaml new file mode 100644 index 0000000..1eefa15 --- /dev/null +++ b/Views/BollingerBandView.xaml @@ -0,0 +1,202 @@ + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + diff --git a/Views/BollingerBandView.xaml.cs b/Views/BollingerBandView.xaml.cs new file mode 100644 index 0000000..e40382d --- /dev/null +++ b/Views/BollingerBandView.xaml.cs @@ -0,0 +1,27 @@ +using System; +using System.Collections.Generic; +using System.Linq; +using System.Text; +using System.Windows; +using System.Windows.Controls; +using System.Windows.Data; +using System.Windows.Documents; +using System.Windows.Input; +using System.Windows.Media; +using System.Windows.Media.Imaging; +using System.Windows.Navigation; +using System.Windows.Shapes; + +namespace TradeBlotter.Views +{ + /// + /// Interaction logic for BollingerBandView.xaml + /// + public partial class BollingerBandView : UserControl + { + public BollingerBandView() + { + InitializeComponent(); + } + } +} diff --git a/Views/CMMomentumView.xaml b/Views/CMMomentumView.xaml new file mode 100644 index 0000000..2b34112 --- /dev/null +++ b/Views/CMMomentumView.xaml @@ -0,0 +1,299 @@ + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + diff --git a/Views/CMMomentumView.xaml.cs b/Views/CMMomentumView.xaml.cs new file mode 100644 index 0000000..c315d5f --- /dev/null +++ b/Views/CMMomentumView.xaml.cs @@ -0,0 +1,28 @@ +using System; +using System.Collections.Generic; +using System.Linq; +using System.Text; +using System.Threading.Tasks; +using System.Windows; +using System.Windows.Controls; +using System.Windows.Data; +using System.Windows.Documents; +using System.Windows.Input; +using System.Windows.Media; +using System.Windows.Media.Imaging; +using System.Windows.Navigation; +using System.Windows.Shapes; + +namespace TradeBlotter.Views +{ + /// + /// Interaction logic for CMMomentumView.xaml + /// + public partial class CMMomentumView : UserControl + { + public CMMomentumView() + { + InitializeComponent(); + } + } +} diff --git a/Views/CMTTrendView.xaml b/Views/CMTTrendView.xaml new file mode 100644 index 0000000..1158243 --- /dev/null +++ b/Views/CMTTrendView.xaml @@ -0,0 +1,433 @@ + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + diff --git a/Views/CMTTrendView.xaml.cs b/Views/CMTTrendView.xaml.cs new file mode 100644 index 0000000..78f4280 --- /dev/null +++ b/Views/CMTTrendView.xaml.cs @@ -0,0 +1,28 @@ +using System; +using System.Collections.Generic; +using System.Linq; +using System.Text; +using System.Threading.Tasks; +using System.Windows; +using System.Windows.Controls; +using System.Windows.Data; +using System.Windows.Documents; +using System.Windows.Input; +using System.Windows.Media; +using System.Windows.Media.Imaging; +using System.Windows.Navigation; +using System.Windows.Shapes; + +namespace TradeBlotter.Views +{ + /// + /// Interaction logic for CMTTrendView.xaml + /// + public partial class CMTTrendView:UserControl + { + public CMTTrendView() + { + InitializeComponent(); + } + } +} diff --git a/Views/DCFValuationView.xaml b/Views/DCFValuationView.xaml new file mode 100644 index 0000000..dc5c123 --- /dev/null +++ b/Views/DCFValuationView.xaml @@ -0,0 +1,328 @@ + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + diff --git a/Views/DCFValuationView.xaml.cs b/Views/DCFValuationView.xaml.cs new file mode 100644 index 0000000..9f34e1f --- /dev/null +++ b/Views/DCFValuationView.xaml.cs @@ -0,0 +1,27 @@ +using System; +using System.Collections.Generic; +using System.Linq; +using System.Text; +using System.Windows; +using System.Windows.Controls; +using System.Windows.Data; +using System.Windows.Documents; +using System.Windows.Input; +using System.Windows.Media; +using System.Windows.Media.Imaging; +using System.Windows.Navigation; +using System.Windows.Shapes; + +namespace TradeBlotter.Views +{ + /// + /// Interaction logic for DCFValuationView.xaml + /// + public partial class DCFValuationView : UserControl + { + public DCFValuationView() + { + InitializeComponent(); + } + } +} diff --git a/Views/DividendPaymentView.xaml b/Views/DividendPaymentView.xaml new file mode 100644 index 0000000..22519a5 --- /dev/null +++ b/Views/DividendPaymentView.xaml @@ -0,0 +1,84 @@ + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + diff --git a/Views/DividendRiskParityView.xaml.cs b/Views/DividendRiskParityView.xaml.cs new file mode 100644 index 0000000..02d9fb5 --- /dev/null +++ b/Views/DividendRiskParityView.xaml.cs @@ -0,0 +1,28 @@ +using System; +using System.Collections.Generic; +using System.Linq; +using System.Text; +using System.Threading.Tasks; +using System.Windows; +using System.Windows.Controls; +using System.Windows.Data; +using System.Windows.Documents; +using System.Windows.Input; +using System.Windows.Media; +using System.Windows.Media.Imaging; +using System.Windows.Navigation; +using System.Windows.Shapes; + +namespace TradeBlotter.Views +{ + /// + /// Interaction logic for DividendRiskParityView.xaml + /// + public partial class DividendRiskParityView : UserControl + { + public DividendRiskParityView() + { + InitializeComponent(); + } + } +} diff --git a/Views/DividendView.xaml b/Views/DividendView.xaml new file mode 100644 index 0000000..a279f34 --- /dev/null +++ b/Views/DividendView.xaml @@ -0,0 +1,95 @@ + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + diff --git a/Views/DividendView.xaml.cs b/Views/DividendView.xaml.cs new file mode 100644 index 0000000..501bbe6 --- /dev/null +++ b/Views/DividendView.xaml.cs @@ -0,0 +1,27 @@ +using System; +using System.Collections.Generic; +using System.Linq; +using System.Text; +using System.Windows; +using System.Windows.Controls; +using System.Windows.Data; +using System.Windows.Documents; +using System.Windows.Input; +using System.Windows.Media; +using System.Windows.Media.Imaging; +using System.Windows.Navigation; +using System.Windows.Shapes; + +namespace TradeBlotter.Views +{ + /// + /// Interaction logic for DividendView.xaml + /// + public partial class DividendView : UserControl + { + public DividendView() + { + InitializeComponent(); + } + } +} diff --git a/Views/ETFHoldingView.xaml b/Views/ETFHoldingView.xaml new file mode 100644 index 0000000..b745508 --- /dev/null +++ b/Views/ETFHoldingView.xaml @@ -0,0 +1,92 @@ + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + diff --git a/Views/ETFHoldingView.xaml.cs b/Views/ETFHoldingView.xaml.cs new file mode 100644 index 0000000..1041bd4 --- /dev/null +++ b/Views/ETFHoldingView.xaml.cs @@ -0,0 +1,27 @@ +using System; +using System.Collections.Generic; +using System.Linq; +using System.Text; +using System.Windows; +using System.Windows.Controls; +using System.Windows.Data; +using System.Windows.Documents; +using System.Windows.Input; +using System.Windows.Media; +using System.Windows.Media.Imaging; +using System.Windows.Navigation; +using System.Windows.Shapes; + +namespace TradeBlotter.Views +{ + /// + /// Interaction logic for ETFHoldingsView.xaml + /// + public partial class ETFHoldingView : UserControl + { + public ETFHoldingView() + { + InitializeComponent(); + } + } +} diff --git a/Views/EarningsAnnouncementView.xaml b/Views/EarningsAnnouncementView.xaml new file mode 100644 index 0000000..39da03a --- /dev/null +++ b/Views/EarningsAnnouncementView.xaml @@ -0,0 +1,73 @@ + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + diff --git a/Views/EarningsAnnouncementView.xaml.cs b/Views/EarningsAnnouncementView.xaml.cs new file mode 100644 index 0000000..08a6de9 --- /dev/null +++ b/Views/EarningsAnnouncementView.xaml.cs @@ -0,0 +1,27 @@ +using System; +using System.Collections.Generic; +using System.Linq; +using System.Text; +using System.Windows; +using System.Windows.Controls; +using System.Windows.Data; +using System.Windows.Documents; +using System.Windows.Input; +using System.Windows.Media; +using System.Windows.Media.Imaging; +using System.Windows.Navigation; +using System.Windows.Shapes; + +namespace TradeBlotter.Views +{ + /// + /// Interaction logic for EarningsAnnouncementView.xaml + /// + public partial class EarningsAnnouncementView : UserControl + { + public EarningsAnnouncementView() + { + InitializeComponent(); + } + } +} diff --git a/Views/FeedStatisticsView.xaml b/Views/FeedStatisticsView.xaml new file mode 100644 index 0000000..7b2c6a0 --- /dev/null +++ b/Views/FeedStatisticsView.xaml @@ -0,0 +1,108 @@ + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + diff --git a/Views/FeedStatisticsView.xaml.cs b/Views/FeedStatisticsView.xaml.cs new file mode 100644 index 0000000..617c2dd --- /dev/null +++ b/Views/FeedStatisticsView.xaml.cs @@ -0,0 +1,28 @@ +using System; +using System.Collections.Generic; +using System.Linq; +using System.Text; +using System.Threading.Tasks; +using System.Windows; +using System.Windows.Controls; +using System.Windows.Data; +using System.Windows.Documents; +using System.Windows.Input; +using System.Windows.Media; +using System.Windows.Media.Imaging; +using System.Windows.Navigation; +using System.Windows.Shapes; + +namespace TradeBlotter.Views +{ + /// + /// Interaction logic for FeedStatisticsView.xaml + /// + public partial class FeedStatisticsView : UserControl + { + public FeedStatisticsView() + { + InitializeComponent(); + } + } +} diff --git a/Views/GainLossView.xaml b/Views/GainLossView.xaml new file mode 100644 index 0000000..f71baa1 --- /dev/null +++ b/Views/GainLossView.xaml @@ -0,0 +1,151 @@ + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + diff --git a/Views/GainLossView.xaml.cs b/Views/GainLossView.xaml.cs new file mode 100644 index 0000000..c250206 --- /dev/null +++ b/Views/GainLossView.xaml.cs @@ -0,0 +1,28 @@ +using System; +using System.Collections.Generic; +using System.Linq; +using System.Text; +using System.Windows; +using System.Windows.Controls; +using System.Windows.Data; +using System.Windows.Documents; +using System.Windows.Input; +using System.Windows.Media; +using System.Windows.Media.Imaging; +using System.Windows.Navigation; +using System.Windows.Shapes; +using TradeBlotter.UIUtils; + +namespace TradeBlotter.Views +{ + /// + /// Interaction logic for GainLossView.xaml + /// + public partial class GainLossView : UserControl + { + public GainLossView() + { + InitializeComponent(); + } + } +} diff --git a/Views/HeadlinesView.xaml b/Views/HeadlinesView.xaml new file mode 100644 index 0000000..c668008 --- /dev/null +++ b/Views/HeadlinesView.xaml @@ -0,0 +1,146 @@ + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + diff --git a/Views/HeadlinesView.xaml.cs b/Views/HeadlinesView.xaml.cs new file mode 100644 index 0000000..685ed65 --- /dev/null +++ b/Views/HeadlinesView.xaml.cs @@ -0,0 +1,28 @@ +using System; +using System.Collections.Generic; +using System.Linq; +using System.Text; +using System.Threading.Tasks; +using System.Windows; +using System.Windows.Controls; +using System.Windows.Data; +using System.Windows.Documents; +using System.Windows.Input; +using System.Windows.Media; +using System.Windows.Media.Imaging; +using System.Windows.Navigation; +using System.Windows.Shapes; + +namespace TradeBlotter.Views +{ + /// + /// Interaction logic for HeadlinesView.xaml + /// + public partial class HeadlinesView : UserControl + { + public HeadlinesView() + { + InitializeComponent(); + } + } +} diff --git a/Views/HistoricalView.xaml b/Views/HistoricalView.xaml new file mode 100644 index 0000000..d07a246 --- /dev/null +++ b/Views/HistoricalView.xaml @@ -0,0 +1,445 @@ + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + diff --git a/Views/HistoricalView.xaml.cs b/Views/HistoricalView.xaml.cs new file mode 100644 index 0000000..dabe118 --- /dev/null +++ b/Views/HistoricalView.xaml.cs @@ -0,0 +1,27 @@ +using System; +using System.Collections.Generic; +using System.Linq; +using System.Text; +using System.Windows; +using System.Windows.Controls; +using System.Windows.Data; +using System.Windows.Documents; +using System.Windows.Input; +using System.Windows.Media; +using System.Windows.Media.Imaging; +using System.Windows.Navigation; +using System.Windows.Shapes; + +namespace TradeBlotter.Views +{ + /// + /// Interaction logic for HistoricalView.xaml + /// + public partial class HistoricalView : UserControl + { + public HistoricalView() + { + InitializeComponent(); + } + } +} diff --git a/Views/MACDView.xaml b/Views/MACDView.xaml new file mode 100644 index 0000000..8d8560f --- /dev/null +++ b/Views/MACDView.xaml @@ -0,0 +1,164 @@ + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + diff --git a/Views/MACDView.xaml.cs b/Views/MACDView.xaml.cs new file mode 100644 index 0000000..f5170d5 --- /dev/null +++ b/Views/MACDView.xaml.cs @@ -0,0 +1,27 @@ +using System; +using System.Collections.Generic; +using System.Linq; +using System.Text; +using System.Windows; +using System.Windows.Controls; +using System.Windows.Data; +using System.Windows.Documents; +using System.Windows.Input; +using System.Windows.Media; +using System.Windows.Media.Imaging; +using System.Windows.Navigation; +using System.Windows.Shapes; + +namespace TradeBlotter.Views +{ + /// + /// Interaction logic for MACDView.xaml + /// + public partial class MACDView : UserControl + { + public MACDView() + { + InitializeComponent(); + } + } +} diff --git a/Views/MomentumView.xaml b/Views/MomentumView.xaml new file mode 100644 index 0000000..1b86a30 --- /dev/null +++ b/Views/MomentumView.xaml @@ -0,0 +1,309 @@ + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + diff --git a/Views/MomentumView.xaml.cs b/Views/MomentumView.xaml.cs new file mode 100644 index 0000000..a896f1b --- /dev/null +++ b/Views/MomentumView.xaml.cs @@ -0,0 +1,28 @@ +using System; +using System.Collections.Generic; +using System.Linq; +using System.Text; +using System.Threading.Tasks; +using System.Windows; +using System.Windows.Controls; +using System.Windows.Data; +using System.Windows.Documents; +using System.Windows.Input; +using System.Windows.Media; +using System.Windows.Media.Imaging; +using System.Windows.Navigation; +using System.Windows.Shapes; + +namespace TradeBlotter.Views +{ + /// + /// Interaction logic for MomentumView.xaml + /// + public partial class MomentumView : UserControl + { + public MomentumView() + { + InitializeComponent(); + } + } +} diff --git a/Views/MovingAverageView.xaml b/Views/MovingAverageView.xaml new file mode 100644 index 0000000..51ad553 --- /dev/null +++ b/Views/MovingAverageView.xaml @@ -0,0 +1,86 @@ + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + diff --git a/Views/MovingAverageView.xaml.cs b/Views/MovingAverageView.xaml.cs new file mode 100644 index 0000000..e3467b4 --- /dev/null +++ b/Views/MovingAverageView.xaml.cs @@ -0,0 +1,27 @@ +using System; +using System.Collections.Generic; +using System.Linq; +using System.Text; +using System.Windows; +using System.Windows.Controls; +using System.Windows.Data; +using System.Windows.Documents; +using System.Windows.Input; +using System.Windows.Media; +using System.Windows.Media.Imaging; +using System.Windows.Navigation; +using System.Windows.Shapes; + +namespace TradeBlotter.Views +{ + /// + /// Interaction logic for MovingAverageView.xaml + /// + public partial class MovingAverageView : UserControl + { + public MovingAverageView() + { + InitializeComponent(); + } + } +} diff --git a/Views/OptionsView.xaml b/Views/OptionsView.xaml new file mode 100644 index 0000000..5717f8f --- /dev/null +++ b/Views/OptionsView.xaml @@ -0,0 +1,194 @@ + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + diff --git a/Views/OptionsView.xaml.cs b/Views/OptionsView.xaml.cs new file mode 100644 index 0000000..ea3df63 --- /dev/null +++ b/Views/OptionsView.xaml.cs @@ -0,0 +1,27 @@ +using System; +using System.Collections.Generic; +using System.Linq; +using System.Text; +using System.Windows; +using System.Windows.Controls; +using System.Windows.Data; +using System.Windows.Documents; +using System.Windows.Input; +using System.Windows.Media; +using System.Windows.Media.Imaging; +using System.Windows.Navigation; +using System.Windows.Shapes; + +namespace TradeBlotter.Views +{ + /// + /// Interaction logic for OptionsView.xaml + /// + public partial class OptionsView : UserControl + { + public OptionsView() + { + InitializeComponent(); + } + } +} diff --git a/Views/OptionsWorksheetView.xaml b/Views/OptionsWorksheetView.xaml new file mode 100644 index 0000000..0742f77 --- /dev/null +++ b/Views/OptionsWorksheetView.xaml @@ -0,0 +1,222 @@ + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + diff --git a/Views/OptionsWorksheetView.xaml.cs b/Views/OptionsWorksheetView.xaml.cs new file mode 100644 index 0000000..a6a1bc1 --- /dev/null +++ b/Views/OptionsWorksheetView.xaml.cs @@ -0,0 +1,28 @@ +using System; +using System.Collections.Generic; +using System.Linq; +using System.Text; +using System.Threading.Tasks; +using System.Windows; +using System.Windows.Controls; +using System.Windows.Data; +using System.Windows.Documents; +using System.Windows.Input; +using System.Windows.Media; +using System.Windows.Media.Imaging; +using System.Windows.Navigation; +using System.Windows.Shapes; + +namespace TradeBlotter.Views +{ + /// + /// Interaction logic for OptionsWorksheetView.xaml + /// + public partial class OptionsWorksheetView : UserControl + { + public OptionsWorksheetView() + { + InitializeComponent(); + } + } +} diff --git a/Views/PricingView.xaml b/Views/PricingView.xaml new file mode 100644 index 0000000..c257b43 --- /dev/null +++ b/Views/PricingView.xaml @@ -0,0 +1,151 @@ + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + diff --git a/Views/RSIView.xaml.cs b/Views/RSIView.xaml.cs new file mode 100644 index 0000000..216f636 --- /dev/null +++ b/Views/RSIView.xaml.cs @@ -0,0 +1,28 @@ +using System; +using System.Collections.Generic; +using System.Linq; +using System.Text; +using System.Threading.Tasks; +using System.Windows; +using System.Windows.Controls; +using System.Windows.Data; +using System.Windows.Documents; +using System.Windows.Input; +using System.Windows.Media; +using System.Windows.Media.Imaging; +using System.Windows.Navigation; +using System.Windows.Shapes; + +namespace TradeBlotter.Views +{ + /// + /// Interaction logic for RSIView.xaml + /// + public partial class RSIView : UserControl + { + public RSIView() + { + InitializeComponent(); + } + } +} diff --git a/Views/ResistanceAndSupportView.xaml b/Views/ResistanceAndSupportView.xaml new file mode 100644 index 0000000..0baa23a --- /dev/null +++ b/Views/ResistanceAndSupportView.xaml @@ -0,0 +1,67 @@ + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + diff --git a/Views/ResistanceAndSupportView.xaml.cs b/Views/ResistanceAndSupportView.xaml.cs new file mode 100644 index 0000000..4df771f --- /dev/null +++ b/Views/ResistanceAndSupportView.xaml.cs @@ -0,0 +1,27 @@ +using System; +using System.Collections.Generic; +using System.Linq; +using System.Text; +using System.Windows; +using System.Windows.Controls; +using System.Windows.Data; +using System.Windows.Documents; +using System.Windows.Input; +using System.Windows.Media; +using System.Windows.Media.Imaging; +using System.Windows.Navigation; +using System.Windows.Shapes; + +namespace TradeBlotter.Views +{ + /// + /// Interaction logic for ResistanceAndSupportView.xaml + /// + public partial class ResistanceAndSupportView : UserControl + { + public ResistanceAndSupportView() + { + InitializeComponent(); + } + } +} diff --git a/Views/RiskProfileView.xaml b/Views/RiskProfileView.xaml new file mode 100644 index 0000000..ba373b7 --- /dev/null +++ b/Views/RiskProfileView.xaml @@ -0,0 +1,157 @@ + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + diff --git a/Views/RiskProfileView.xaml.cs b/Views/RiskProfileView.xaml.cs new file mode 100644 index 0000000..b3af651 --- /dev/null +++ b/Views/RiskProfileView.xaml.cs @@ -0,0 +1,28 @@ +using System; +using System.Collections.Generic; +using System.Linq; +using System.Text; +using System.Threading.Tasks; +using System.Windows; +using System.Windows.Controls; +using System.Windows.Data; +using System.Windows.Documents; +using System.Windows.Input; +using System.Windows.Media; +using System.Windows.Media.Imaging; +using System.Windows.Navigation; +using System.Windows.Shapes; + +namespace TradeBlotter.Views +{ + /// + /// Interaction logic for RiskProfileView.xaml + /// + public partial class RiskProfileView : UserControl + { + public RiskProfileView() + { + InitializeComponent(); + } + } +} diff --git a/Views/SECFilingView.xaml b/Views/SECFilingView.xaml new file mode 100644 index 0000000..69230aa --- /dev/null +++ b/Views/SECFilingView.xaml @@ -0,0 +1,53 @@ + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + diff --git a/Views/SECFilingView.xaml.cs b/Views/SECFilingView.xaml.cs new file mode 100644 index 0000000..9476d89 --- /dev/null +++ b/Views/SECFilingView.xaml.cs @@ -0,0 +1,27 @@ +using System; +using System.Collections.Generic; +using System.Linq; +using System.Text; +using System.Windows; +using System.Windows.Controls; +using System.Windows.Data; +using System.Windows.Documents; +using System.Windows.Input; +using System.Windows.Media; +using System.Windows.Media.Imaging; +using System.Windows.Navigation; +using System.Windows.Shapes; + +namespace TradeBlotter.Views +{ + /// + /// Interaction logic for SECFilingView.xaml + /// + public partial class SECFilingView : UserControl + { + public SECFilingView() + { + InitializeComponent(); + } + } +} diff --git a/Views/SectorView.xaml b/Views/SectorView.xaml new file mode 100644 index 0000000..6e20b06 --- /dev/null +++ b/Views/SectorView.xaml @@ -0,0 +1,101 @@ + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + diff --git a/Views/SectorView.xaml.cs b/Views/SectorView.xaml.cs new file mode 100644 index 0000000..146e01e --- /dev/null +++ b/Views/SectorView.xaml.cs @@ -0,0 +1,27 @@ +using System; +using System.Collections.Generic; +using System.Linq; +using System.Text; +using System.Windows; +using System.Windows.Controls; +using System.Windows.Data; +using System.Windows.Documents; +using System.Windows.Input; +using System.Windows.Media; +using System.Windows.Media.Imaging; +using System.Windows.Navigation; +using System.Windows.Shapes; + +namespace TradeBlotter.Views +{ + /// + /// Interaction logic for SectorView.xaml + /// + public partial class SectorView : UserControl + { + public SectorView() + { + InitializeComponent(); + } + } +} diff --git a/Views/StickerPriceView.xaml b/Views/StickerPriceView.xaml new file mode 100644 index 0000000..49330bc --- /dev/null +++ b/Views/StickerPriceView.xaml @@ -0,0 +1,200 @@ + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + diff --git a/Views/StickerPriceView.xaml.cs b/Views/StickerPriceView.xaml.cs new file mode 100644 index 0000000..c6456d3 --- /dev/null +++ b/Views/StickerPriceView.xaml.cs @@ -0,0 +1,27 @@ +using System; +using System.Collections.Generic; +using System.Linq; +using System.Text; +using System.Windows; +using System.Windows.Controls; +using System.Windows.Data; +using System.Windows.Documents; +using System.Windows.Input; +using System.Windows.Media; +using System.Windows.Media.Imaging; +using System.Windows.Navigation; +using System.Windows.Shapes; + +namespace TradeBlotter.Views +{ + /// + /// Interaction logic for StickerPriceView.xaml + /// + public partial class StickerPriceView : UserControl + { + public StickerPriceView() + { + InitializeComponent(); + } + } +} diff --git a/Views/StochasticsView.xaml b/Views/StochasticsView.xaml new file mode 100644 index 0000000..654c4ca --- /dev/null +++ b/Views/StochasticsView.xaml @@ -0,0 +1,62 @@ + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + diff --git a/Views/StochasticsView.xaml.cs b/Views/StochasticsView.xaml.cs new file mode 100644 index 0000000..0c631d4 --- /dev/null +++ b/Views/StochasticsView.xaml.cs @@ -0,0 +1,32 @@ +using System; +using System.Collections.Generic; +using System.Linq; +using System.Text; +using System.Windows; +using System.Windows.Controls; +using System.Windows.Data; +using System.Windows.Documents; +using System.Windows.Input; +using System.Windows.Media; +using System.Windows.Media.Imaging; +using System.Windows.Navigation; +using System.Windows.Shapes; + +namespace TradeBlotter.Views +{ + /// + /// Interaction logic for StochasticsView.xaml + /// + public partial class StochasticsView : UserControl + { + public StochasticsView() + { + InitializeComponent(); + } + + private void UserControl_Loaded(object sender, RoutedEventArgs e) + { + + } + } +} diff --git a/Views/TradeEntryView.xaml b/Views/TradeEntryView.xaml new file mode 100644 index 0000000..7c75eae --- /dev/null +++ b/Views/TradeEntryView.xaml @@ -0,0 +1,238 @@ + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + diff --git a/Views/TradeModelView.xaml.cs b/Views/TradeModelView.xaml.cs new file mode 100644 index 0000000..590dfe0 --- /dev/null +++ b/Views/TradeModelView.xaml.cs @@ -0,0 +1,27 @@ +using System; +using System.Collections.Generic; +using System.Linq; +using System.Text; +using System.Windows; +using System.Windows.Controls; +using System.Windows.Data; +using System.Windows.Documents; +using System.Windows.Input; +using System.Windows.Media; +using System.Windows.Media.Imaging; +using System.Windows.Navigation; +using System.Windows.Shapes; + +namespace TradeBlotter.Views +{ + /// + /// Interaction logic for TradeModelView.xaml + /// + public partial class TradeModelView : UserControl + { + public TradeModelView() + { + InitializeComponent(); + } + } +} diff --git a/Views/ValuationsView.xaml b/Views/ValuationsView.xaml new file mode 100644 index 0000000..b87a670 --- /dev/null +++ b/Views/ValuationsView.xaml @@ -0,0 +1,307 @@ + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + diff --git a/Views/ValuationsView.xaml.cs b/Views/ValuationsView.xaml.cs new file mode 100644 index 0000000..237de34 --- /dev/null +++ b/Views/ValuationsView.xaml.cs @@ -0,0 +1,27 @@ +using System; +using System.Collections.Generic; +using System.Linq; +using System.Text; +using System.Windows; +using System.Windows.Controls; +using System.Windows.Data; +using System.Windows.Documents; +using System.Windows.Input; +using System.Windows.Media; +using System.Windows.Media.Imaging; +using System.Windows.Navigation; +using System.Windows.Shapes; + +namespace TradeBlotter.Views +{ + /// + /// Interaction logic for ValuationsView2.xaml + /// + public partial class ValuationsView : UserControl + { + public ValuationsView() + { + InitializeComponent(); + } + } +} diff --git a/Views/ValueAtRiskView.xaml b/Views/ValueAtRiskView.xaml new file mode 100644 index 0000000..54d49e2 --- /dev/null +++ b/Views/ValueAtRiskView.xaml @@ -0,0 +1,101 @@ + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + diff --git a/Views/ValueAtRiskView.xaml.cs b/Views/ValueAtRiskView.xaml.cs new file mode 100644 index 0000000..9815367 --- /dev/null +++ b/Views/ValueAtRiskView.xaml.cs @@ -0,0 +1,27 @@ +using System; +using System.Collections.Generic; +using System.Linq; +using System.Text; +using System.Windows; +using System.Windows.Controls; +using System.Windows.Data; +using System.Windows.Documents; +using System.Windows.Input; +using System.Windows.Media; +using System.Windows.Media.Imaging; +using System.Windows.Navigation; +using System.Windows.Shapes; + +namespace TradeBlotter.Views +{ + /// + /// Interaction logic for ValueAtRiskView.xaml + /// + public partial class ValueAtRiskView : UserControl + { + public ValueAtRiskView() + { + InitializeComponent(); + } + } +} diff --git a/Views/WatchListView.xaml b/Views/WatchListView.xaml new file mode 100644 index 0000000..115de08 --- /dev/null +++ b/Views/WatchListView.xaml @@ -0,0 +1,80 @@ + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + diff --git a/Views/WatchListView.xaml.cs b/Views/WatchListView.xaml.cs new file mode 100644 index 0000000..1c1de0f --- /dev/null +++ b/Views/WatchListView.xaml.cs @@ -0,0 +1,28 @@ +using System; +using System.Collections.Generic; +using System.Linq; +using System.Text; +using System.Threading.Tasks; +using System.Windows; +using System.Windows.Controls; +using System.Windows.Data; +using System.Windows.Documents; +using System.Windows.Input; +using System.Windows.Media; +using System.Windows.Media.Imaging; +using System.Windows.Navigation; +using System.Windows.Shapes; + +namespace TradeBlotter.Views +{ + /// + /// Interaction logic for WatchListView.xaml + /// + public partial class WatchListView : UserControl + { + public WatchListView() + { + InitializeComponent(); + } + } +} diff --git a/Views/YieldCurveView.xaml b/Views/YieldCurveView.xaml new file mode 100644 index 0000000..dfa64c0 --- /dev/null +++ b/Views/YieldCurveView.xaml @@ -0,0 +1,120 @@ + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + diff --git a/Views/YieldCurveView.xaml.cs b/Views/YieldCurveView.xaml.cs new file mode 100644 index 0000000..b2c10ef --- /dev/null +++ b/Views/YieldCurveView.xaml.cs @@ -0,0 +1,27 @@ +using System; +using System.Collections.Generic; +using System.Linq; +using System.Text; +using System.Windows; +using System.Windows.Controls; +using System.Windows.Data; +using System.Windows.Documents; +using System.Windows.Input; +using System.Windows.Media; +using System.Windows.Media.Imaging; +using System.Windows.Navigation; +using System.Windows.Shapes; + +namespace TradeBlotter.Views +{ + /// + /// Interaction logic for YieldCurveView.xaml + /// + public partial class YieldCurveView : UserControl + { + public YieldCurveView() + { + InitializeComponent(); + } + } +} diff --git a/references/20191204/Telerik.Windows.Controls.Chart.dll b/references/20191204/Telerik.Windows.Controls.Chart.dll new file mode 100644 index 0000000..401a32e Binary files /dev/null and b/references/20191204/Telerik.Windows.Controls.Chart.dll differ diff --git a/references/20191204/Telerik.Windows.Controls.Charting.dll b/references/20191204/Telerik.Windows.Controls.Charting.dll new file mode 100644 index 0000000..90fb55a Binary files /dev/null and b/references/20191204/Telerik.Windows.Controls.Charting.dll differ diff --git a/references/20191204/Telerik.Windows.Controls.GridView.dll b/references/20191204/Telerik.Windows.Controls.GridView.dll new file mode 100644 index 0000000..6ab9701 Binary files /dev/null and b/references/20191204/Telerik.Windows.Controls.GridView.dll differ diff --git a/references/20191204/Telerik.Windows.Controls.Input.dll b/references/20191204/Telerik.Windows.Controls.Input.dll new file mode 100644 index 0000000..71eeddd Binary files /dev/null and b/references/20191204/Telerik.Windows.Controls.Input.dll differ diff --git a/references/20191204/Telerik.Windows.Controls.Navigation.dll b/references/20191204/Telerik.Windows.Controls.Navigation.dll new file mode 100644 index 0000000..2f141c7 Binary files /dev/null and b/references/20191204/Telerik.Windows.Controls.Navigation.dll differ diff --git a/references/20191204/Telerik.Windows.Controls.RichTextBoxUI.dll b/references/20191204/Telerik.Windows.Controls.RichTextBoxUI.dll new file mode 100644 index 0000000..f61f136 Binary files /dev/null and b/references/20191204/Telerik.Windows.Controls.RichTextBoxUI.dll differ diff --git a/references/20191204/Telerik.Windows.Controls.dll b/references/20191204/Telerik.Windows.Controls.dll new file mode 100644 index 0000000..ba3b887 Binary files /dev/null and b/references/20191204/Telerik.Windows.Controls.dll differ diff --git a/references/20191204/Telerik.Windows.Data.dll b/references/20191204/Telerik.Windows.Data.dll new file mode 100644 index 0000000..a8182cd Binary files /dev/null and b/references/20191204/Telerik.Windows.Data.dll differ diff --git a/references/20191204/Xceed.Wpf.Toolkit.dll b/references/20191204/Xceed.Wpf.Toolkit.dll new file mode 100644 index 0000000..14fb3aa Binary files /dev/null and b/references/20191204/Xceed.Wpf.Toolkit.dll differ diff --git a/references/Telerik.Windows.Controls.Chart.dll b/references/Telerik.Windows.Controls.Chart.dll new file mode 100644 index 0000000..7b35fcf Binary files /dev/null and b/references/Telerik.Windows.Controls.Chart.dll differ diff --git a/references/Telerik.Windows.Controls.Charting.dll b/references/Telerik.Windows.Controls.Charting.dll new file mode 100644 index 0000000..7fed32d Binary files /dev/null and b/references/Telerik.Windows.Controls.Charting.dll differ diff --git a/references/Telerik.Windows.Controls.GridView.dll b/references/Telerik.Windows.Controls.GridView.dll new file mode 100644 index 0000000..9a2c7bf Binary files /dev/null and b/references/Telerik.Windows.Controls.GridView.dll differ diff --git a/references/Telerik.Windows.Controls.Input.dll b/references/Telerik.Windows.Controls.Input.dll new file mode 100644 index 0000000..7c1993b Binary files /dev/null and b/references/Telerik.Windows.Controls.Input.dll differ diff --git a/references/Telerik.Windows.Controls.Navigation.dll b/references/Telerik.Windows.Controls.Navigation.dll new file mode 100644 index 0000000..9879dd4 Binary files /dev/null and b/references/Telerik.Windows.Controls.Navigation.dll differ diff --git a/references/Telerik.Windows.Controls.RichTextBoxUI.dll b/references/Telerik.Windows.Controls.RichTextBoxUI.dll new file mode 100644 index 0000000..02b03d8 Binary files /dev/null and b/references/Telerik.Windows.Controls.RichTextBoxUI.dll differ diff --git a/references/Telerik.Windows.Controls.dll b/references/Telerik.Windows.Controls.dll new file mode 100644 index 0000000..1ec6f79 Binary files /dev/null and b/references/Telerik.Windows.Controls.dll differ diff --git a/references/Telerik.Windows.Data.dll b/references/Telerik.Windows.Data.dll new file mode 100644 index 0000000..0c957a5 Binary files /dev/null and b/references/Telerik.Windows.Data.dll differ diff --git a/references/Xceed.Wpf.Toolkit.dll b/references/Xceed.Wpf.Toolkit.dll new file mode 100644 index 0000000..14fb3aa Binary files /dev/null and b/references/Xceed.Wpf.Toolkit.dll differ diff --git a/voices/Earnings Announcements.wma b/voices/Earnings Announcements.wma new file mode 100644 index 0000000..25addcf Binary files /dev/null and b/voices/Earnings Announcements.wma differ