Hello, dear friend, you can consult us at any time if you have any questions, add WeChat: daixieit

CM2005 Object Oriented Programming mid term assignment

Introduction

The goal for this assignment is to develop a command-line technical analysis toolkit for the exchange platform.

TASK 1: Compute candlestick data

Candlesticks are a common visualisation used to show the trends in a trading system. The candlesticks show what happens in a series of time windows, in terms of the starting price, the end price and the highest and lowest prices seen. The following image shows a graphical plot of candlestick data:

Figure 1: example of a graphical candlestick plot. Each box represents the trading activity in a time period. The top and bottom of a box (the candle) represent the opening and closing value of a product. The top and bottom of the lines (the candlesticks) represent the highest and lowest value seen in that time frame. The red box on May 3rd indicates the value was lower at close than open, so value went down. You do not need to make a graphical plot – you will be making a text based plot.

In the first task, you need to compute candlestick data from the exchange data for a particular product. Here is an example of the fields needed for candlestick data:

Date           Open  High   Low   Close

2023-05-01 100     120    80   110

2023-05-02 110     130   100  120

2023-05-03   90     100   70     80

2023-05-04   95     110   70   100

2023-05-05   80     120   75   115

Note that you will need to do this separately for asks and bids, and separately for different products. So the table above might be the candlestick data for ‘asks on ETH/UDST’, for example.

Here is how you can compute each field:

Open = the average price per unit in the previous time frame. So say we want to compute the value for ETH/USDT asks from the list of items from the order book, which are all asks for ETH/USDT:

Amount        Price                                                Value (price X amount)

10                                                      1                                 10

5                                                     2                                 10

TOTAL                                15                                                     3                                 20

MEAN price (total value / total

price):                                                                            6.67

You can see that the mean price is 6.67.

Close:  the average price per unit in this time frame (same as Open, but for the current time frame) High: highest price seen this time frame

Low: lowest price seen this time frame

You should implement the candlestick data computation using a function which returns the following data type:

std::vector

Note that it returns a vector of Candlestick objects. You will need to define your own Candlestick class that is suitable for representing candlestick data. One Candlestick object represents one candlestick.

TASK 2: Create a text-based plot of the candlestick data


The second task involves creating a text-based plot of the candlestick data. The figure above shows  an example of a graphical plot. You should try and create something like that using text output. We recommend that you approach this by first manually typing out what kind of characters you might use in your plot to represent different things. Use your text editor to do this. E.g. you might use a ‘- ’ to represent the top of a box and a ‘|’ to represent the stalk. Once you know what you are aiming for, you should write C++ function that takes a vector of Candlestick objects as its input and generates a plot from that data. You will need to cope with quite a few problems here – for example, how can you round the data so it is an appropriate range for your text-based plotter? How can you deal with horizontal and vertical positioning? You should attempt to use object-oriented techniques to make  your code as neat and well organised as possible.

TASK 3: Plot a text graph of some other trading data

Task 3 involves plotting a text-based graph of some other trading data. It is up to you to decide what that data is, but it should be somehow derived from the crypto-currency data. Again, you need to plot it using text characters, and you should probably start by manually creating the text graph in your text editor so you know what you are aiming for, as we suggested for the previous task.

What to submit:

A PDF file containing your report, wherein you should describe how you carried out each task.

A zip file containing your code, ideally so it can be easily built and run

A PDF file containing all code. You can concatenate all cpp and h files into a single text file then save as a PDF.

A statement typed into the prompt on the Coursera platform which identifies aspects of your work that were challenging/ original/ creative/ exceptional.

A video demonstrating your code running

Marking criteria

Item

Code style: indentation, descriptive comments                                            5

TASK 1: Compute candlestick data CODE                                                    10

TASK 1: Compute candlestick data DESCRIPTION                                         3

TASK 2: Create a text-based plot of the candlestick data CODE                      10

TASK 2: Create a text-based plot of the candlestick data

DESCRIPTION                                                                                            3

TASK 3: Plot a text graph of some other trading data CODE                           10

TASK 3: Plot a text graph of some other trading data

DESCRIPTION                                                                                            3

Submit correct items: code as text in PDF, report as PDF, zip file of

code and video                                                                                           6

Originality and challenge of implementation                                                 10

Clearly label all sections of the code that you personally wrote                         2

without assistance

TOTAL 62

Note that we will use all the submitted items to evaluate your work.