CSE212 Coursework 3 2018
Overview
You will create an application to graph financial data sets. The application will
• On startup, read a data file of stock price data for a particular index over
aproximately thre years.
• Hold the data in an apropriate collection of custom data objects in
memory
• Display a chart of the closing price of a certain stock for a certain period,
as specified by the user, and filtered from the main data colection
• Allow the user to ad/remove overlays of technical indicators
Due: 8.0pm Friday Wek 14, submited on ICE.
User Input
Interaction will be provided with a text based chat interface. The interface
should aim to be both flexible and robust, as taught this semester. The chat input
processor can be the one you have been developing in the labs, but must be
10% your own work. The command words to implement are:
SHOW [tickers]FROM [date]TO [date]
This sets the curent series. Up to three overlays can be added to the
curent series, and removed, individualy. The period (start date and end
date) of the curent series cannot be altered after its creation.
ADD [overlay]
Adds an overlay to the curent series graph
HIDE [overlay][ticker]
Removes an overlay or ticker from the curent series graph
There is no clear command. The SHOW-FROM-TO command replaces the
current series with the new series.
Please note that a flexible chat interface has to cope with natural-language style.
input, for example (but not limited to)
Can you show me BABA from Dec 2006 to july 2008
OK add the 50DMA
Hide that
OUTPUT
Output will be a fully-labelled colour coded line graph. The class to do this will be
provided – it is part of the package we have been working with since week 8. You
wil simply have to cal convenience methods to display data sets; you do not
need to alter the source code of this package.
You will write methods to calculate series for 3 technical indicator overlays for
the graphs:
• Fifty day moving average
• 20 day moving average
• Bollinger Bands
The user will be able to add these to and remove them from the graph using the
chat interface.
You may re-use clases and methods from the labs in any part of the aplication.
Marking
Chat processor 50
Overlays 20
Code quality 30
Bolinger Bands Calculation
* Middle Band = 20-day simple moving average (SMA)
* Upper Band = 20-day SMA + (20-day standard deviation of
price x 2)
* Lower Band = 20-day SMA - (20-day standard deviation of
price x 2)
Bollinger bands are a three-line (3 series) overlay calculated as above.
To get more information about this overlay, and a spreadshet example of
calculated values, go here:
htp:/stockcharts.com/schol/doku.php?id=chart_schol:technical_indicators:b
ollinger_bands
This assignment is individual work. Plagiarism (e.g. copying materials from
other sources without proper acknowledgement) is a serious academic
ofence. Plagiarism wil not be tolerated and will be dealt with in
acordance with the University Code of Practice on Assessment. Individual
students may be invited to explain parts of their code in person, and if they
fail to deonstrate an understanding of the code, no credit wil be given for
that part of the code.
Marking Descriptors
Core Requirements
Project must compile and run to pas (achieve 40%)
ChatProcessor 50
Robustnes/flexibility 20 Code originality/ideas 20 Ticker identification 10
Works. Is flexible to case,
index, order 10
Uses only techniques
sugested in lectures 10
Ticker identification has a
smal chance of error under
normal usage 5
Works. Is robust and
flexible to about half the
level of the examples given
in this task shet 15
A limited range of
techniques are deployed 15
Ticker identification wil be
accurate under normal
usage 7
Works. Is robust flexible
to the level of the examples
given in this task shet 20
A range of techniques are
deployed. 20
Ticker identification has no
room for error 10
Code Quality 30
• Variable method naming is informative, apropriate and complies with
Java conventions. 10
• Methods have one clear purpose/function and are of an appropriate
length. 10
• Acces modifiers, static etc are used apropriately 5
• Code is well-formated, readable and easy to follow 5