• C++ Programming for Financial Engineering
    Highly recommended by thousands of MFE students. Covers essential C++ topics with applications to financial engineering. Learn more Join!
    Python for Finance with Intro to Data Science
    Gain practical understanding of Python to read, understand, and write professional Python code for your first day on the job. Learn more Join!
    An Intuition-Based Options Primer for FE
    Ideal for entry level positions interviews and graduate studies, specializing in options trading arbitrage and options valuation models. Learn more Join!

How to proceed with coding this trading application

For my project i am developing a automated trading web application. I wanted to know the programming languages which would help me in doing this. I started reading javascript ,html,java and sql.

The application is supposed to do the following:

  1. Seperate user logins and dashboard for each user
  2. It will continuosly monitor the data in the database and make certain calculations(i have the formula for the calculation to be made). And based on this it will suggest whether to buy or sell.
  3. A detailed report of the trading done will be displayed. Eg: Highest gains,greatest losses etc..
  4. Historically back test the data and generate a report of the trades.
But i don't know how to start with coding all these functionalities.! I am not expecting someone to teach me coding. I only want some to help me with providing a road map of how to develop this. Like which different programming language to use to implement these functionalities and finally integrate it into a single web application. Please take time to provide a specific answer.
 

Daniel Duffy

C++ author, trainer
Python, C#?

I am not expecting someone to teach me coding. I only want some to help me with providing a road map of how to develop this.

By 'road map' you mean a high-level data flow in the system?
 
Yes,but not a very detailed data flow. It will be of help if you can split the project into important stages of development and tell how to implement those stages.
 
I would start by reviewing some commercial and opensource solutions, to determine if it makes sense to build verus buy. This step will also help you better understand how your system should be designed.

If you decide to build, there are a number of ways to approach the problem. I typically start by defining the external data flow/connections/architecture. For example: 1)live data feed, 2) historical data feed, 3) orders/fills, 4) etc. For each of these you may have certain restrictions from your provider (aysnch / synch; protocol: sockets/http/amqp/DDE; format: json, binary, etc). For example: live data may be a proprietary format asynch over amqp; historical my be objects synch over JDBC; and orders/fills may be JSON over sockets.

After this step, I look at the internal process and logical architecture of the system and the internal data flow architecture of the system. At this stage I think it's important to also consider fail over and performance in the design.

My two cents.
 
Yes we are planning to build it.
As of now i want to build an application which will be used to historically backtest a strategy and generate trade alerts. And have some good reporting features. First i will decide over the data provider and provide you information about the fromat in which i will receive the data
 
Something I forgot to mention, and should have lead with, is that your trade hold times will have large impact on your choice of vendors/technologies used in my three bullets above. HFT vs. Day Trading vs. Position/Swing Trading would drive my choice of vendors and technologies.

Where would you say your trading style fits?
 

Daniel Duffy

C++ author, trainer
After this step, I look at the internal process and logical architecture of the system and the internal data flow architecture of the system.

Maybe get a systems analist/designer to help you on this part.
 
Because you want to do a web application, you need backend and frontend thing.

For the backend part, Java/C/C++ plus MySQL should be something in your toolbox. Obviously you can't avoid multithreaded programming thing here. You said you would work with historical data, so data feeds/APIs things are not of an issue (these things are not really hard anyways, you can add them once your app works well with historical data). For the frontend part, JavaScript + HTML should be your friends.

Now comes the harder thing that is the connection between the backend and the frontend. There are different ways to link these two things together, such as AJAX, websocket, etc. To make the whole thing a lot easier, you should be familiar with Node.js and Socket.io.

Once you get all these things in place, the backend will be where the fun begins.
 
I agree with IEOR that the user interface (UI) is another area to consider after sorting out the three data input flows.

The UI can be browser based https and Websockets to handle serving content. A typical browser based UI for this purpose will use a combination of standard http get/post requests, AJAX, and Websockets.

Node.js using Socket.io is one technology stack that can handle this combination. This can be accomplished with Java and other technologies as well. For example, in the Java space, you could use a Servlet 3.0 container (Tomcat 7/8, etc) with Spring 4. You can see a mock up of this particular stack at http://spring.io/blog/2013/10/23/webinar-replay-building-websocket-browser-applications-with-spring

There are a number of different technologies that you can use to fulfill your requirements.
 
thank for your replies, this project is a college project and i am not planning to make it available for commercial purposes. It would be like a paper trading software, with all the functionalities i mentioned.I am planning to make a desktop application now because making web application will cause me to do some more extra work!!
  1. It will continuosly monitor the data in the database and make certain calculations(i have the formula for the calculation to be made). And based on this it will suggest whether to buy or sell.
  2. A detailed report of the trading done will be displayed. Eg: Highest gains,greatest losses etc..
  3. Historically back test the data and generate a report of the trades.
This will be just a sister software where the user will do all the analysis,get the trade alerts,make a trade(paper),get all the trades documented and the performance monitored. As of now,no real trading with this.
Are you guys aware of any open source software with such functionalities.


This s the architechture
ProcessingPhase_zps4bc7eab9.png
 
Here is a 'road map' you need:
- Pick one programming language: C++ with Qt, or Java, or Python. Go learn them inside out.
- Learn relational databases. You need this do design your databases.
- Learn how you can make your selected programming language work with MySQL.
You need to know all these things before some 'road map' will become clearer for you.
 
--I know java and C++ , but what is C++ with Qt..?
--I even know relational databases.
- Learn how you can make your selected programming language work with MySQL.--> For this do y0u have or know any specific material?
 
If your plan is to "continuosly monitor the data in the database", you are implying that there will be "continuous" updates to the database.

You will need to think decide how that process will work.
 
backend: Java and JDBC/Hibernate, C# and ado.net/entity framework
front end: JSP? ASP? HTML
if you are writing web application, apply MVC or MVVM framework (Model-View-*)
 
If your plan is to "continuosly monitor the data in the database", you are implying that there will be "continuous" updates to the database.

You will need to think decide how that process will work.
By continously montioring the data i did not mean tick by tick ..this would be HFT. I am planning to have the price quote displayed realtime(ie tick by tick) and for the trade alerts the data should be updated every 15 mins or half an hour. Is this possible? And would it make my work reduce considerably or it will be of slight change only?
 
Top