StockWatch Developers: Nimrod Hagay Hagai Barkan Supervisors: Assaf Solomovitch Viktor Kulikov June 2009
Dec 19, 2015
StockWatchDevelopers: Nimrod Hagay
Hagai BarkanSupervisors: Assaf Solomovitch
Viktor Kulikov
June 2009
StockWatch is a website (ASP .NET) which provides a User centric interface for managing stock portfolios , supply stock technical analysis (based on www.American-bulls.com web site) , Live market data and news.
Overview
StockWatch should use advanced technologies such as AJAX , ASP.NET , JavaScript and Online data management APIS.
StockWatch should be User friendly , attractive and quickly responsive.
StockWatch should provide free technical analysis combined with real-time data and news feeds.
StockWatch should relay on stable data sources.
Project Goals
Multiple Users System Real Time QuotesRich presentation layerGoogle Portfolios API User Portfolios Stocks Grading Various News Feeds Admin Management
Main features
ASP.NET 3.5ASP.NET 3.5 AJAX extension.Microsoft SQL.C# (.NET framework 3.5).Google spreadsheets API (C#).JavaScriptYUI – Yahoo User InterfaceGoogle VisualizationsGoogle Ajax Feed API
Technologies
3-Layers Design
AJAX
ASP.NET
Google visualizations
YUI
Google Spreadsheets API
SqlDataSource
Yahoo web service
Layer 0 - Data sources
Google finance Google Spreadsheets
American Bulls
StockWatch DBPortfolios pageStock page
Yahoo finance
Yahoo Web Service Google Portfolios API
StockParser
Database – Layer 0
Google spreadsheet – Layer 0
Auto updates dataEasy API for querying and updating data
Layer 1 - DAL
• Google Portfolios API - User portfolios are saved on A Google spreadsheet in order to get real time data. The API Provides an easy interface managing user’s portfolios.
• SqlDataSource – allows us to access and manipulate data in an ASP.NET page without using ADO.NET classes directly.
• Yahoo web service – provides an easy access to Yahoo finance real time data.
Layer 2 – Business logic – the whole picture
#CommitSql_Click() : void#clearFilter_Click() : void#UserSqlGoBtn_Click() : void#UserSqlClrBtn_Click() : void#FilesDownloadProgressBar_RunTask() : void#DBUpdateProgressBar_RunTask() : void+GradeProgressBar_RunTask() : void+UpdateDataSet() : void
ManagementPage
+FixName() : string+Stock()
+Close : string+Market : string+Change : string+Status : string+Symbol : string+Name : string+BullsUrl : string+StockGrade : string+IsInPortfolio : bool+IsInGoogleSheet : bool+GradeTimeStamp : DateTime+LivePrice : string+LiveVol : string+LiveMktCap : string+LiveAvgVol : string+LiveHighPrice : string+LiveLowPrice : string+LiveChange : string
Stock
+AddNewTransaction() : bool+RemoveTransactions() : bool+GetWorksheetUrl() : string+GetUserPortfolios() : String[]+AddPortfolio() : bool+DeletePortfolio() : bool+RenamePortfolio() : bool
GooglePortfoliosExtension
+AddNewTransaction() : bool+RemoveTransactions() : bool+GetWorksheetUrl() : string+GetUserPortfolios() : String[]+AddPortfolio() : bool+DeletePortfolio() : bool+RenamePortfolio() : bool
«interface»IGooglePortfoliosExtension
+EvaluateStockRate() : string+UrlToXml() : void
Globals
+DoHandleError() : void+LogError() : void+WriteToDefaultLog() : void
LogHandler
«uses»
#Page_Load() : void-LoadSpecialStocks() : void-AddSpecialTable() : void
Default (Page)
#Page_Load() : void-SubmitBtn_Click() : void
FeedBack (Page)
+Application_Start() : void+Application_End() : void+Application_Error() : void+Session_Start() : void+Session_End() : void
Global
1
1
#Page_Load() : void+ViewTransactionStrip() : bool+ViewManageStrip() : bool+ViewLinkToPortfolio() : bool+ViewNewsPanel() : bool+RequestedPortfolio() : string#okCreateBtn_Click() : void#DeletePortfolioBtn_Click() : void#renameBtn_Click() : void#AddToPortfolioBtn_Click() : void#RemoveTransaction_Click() : void#goToPortfolioPage_Click() : void#updateUserPortfolio() : void
GooglePortfolioControl (WebControl) 1
1
#Page_Load() : void-searchBtn_Click() : void
MasterPage (Page)
#Page_Load() : void
PasswordRecovery (Page)
#Page_Load() : void
PortfoliosPage (Page)
1
1
#Page_Load() : void
ProblemPage (Page)
#Page_Load() : void#StocksGridView_SelectedIndexChanged() : void
QueryPage (Page)
#createAccountBtn_Click() : void
Register (Page)
#SignInBtn_Click() : void
SignIn (Page)
#SetInfo() : void
StockControl (WebControl)
+GetComplitionList() : String[]
AutoComplete (WebService)
+GetQuoteWithIDS() : String[]
YahooQuoteWebService (WebService)
#Page_Load() : void-PrepareStock() : bool
StockPage (Page)
11
«uses»
1
1
1
1
1
0..*
«uses»
Layer 2 – Business logic – Users management & security StockWatch uses ASP.NET Built-in Users Management
mechanism.
The mechanism generate memberships data tables in the database.
Built-in User controls offer easy login (Login control) , registration (CreateUserWizard) , Password recovery and Dynamic content according to the user state (LoginView control).
Roles management – StockWatch uses the roles mechanism in order to distinguish between Admin user (management page) and regular user.
StockWatch collect news feeds from Yahoo finance , Google finance & Msn money.
News feeds are dynamic according to the presented stock or stocks in current portfolio.
News feeds are being displayed using Google feed Ajax API. (client side).
Layer 2 – Business logic – News feeds
Layer 2 – Business logic – American Bulls data parsing
Everyday at 2 am a data parsing process gets data from American Bulls web pages.
The process has 3 stages :◦ Page download◦ Data parsing and saving into data base◦ Grading process:
Grade = (Stock hits / Stock predictions) The information for the stock grade is based on
predictions results history from American bulls.
We used Ajax auto complete control for symbol search, this control use Web Service function. The use of Web Service helps the System run smoothly, and enhance the system performance.
Update Panel :
Layer 3 – Presentation layer – AJAX
Layer 3 – Presentation layer – Google Visualization
Dynamic News Feeds
Google Table