Diagram
Components
Let us look at some important components involved.
API Library
We provide AutoTrader API libraries which are written in multiple programming languages. So whichever programming language you have used to code your strategy, use our API library in that language. By using libraries, you will get easy to use functions for performing automation.
These libraries will internally take care of submitting your command (like place/modify/cancel order etc.) to AutoTrader server, and will return you a result. Depending on programming language used, the library may:
- Communicate directly with the server via REST or
- Communicate via AutoTrader-Desktop application (using csv text files)
REST
If we do not provide API library for a language of your choice, then you can use REST.
REST involves sending HTTP get/post requests to our servers directly from your strategy. Almost all modern programming languages support making HTTP requests. Please look at the documentation of your programming language.
AutoTrader Desktop Application
For those who cannot use REST, they can use our supporting desktop application. It is very easy to communicate using this application. You can write your commands to a csv (comma separated value) file, which is nothing but a simple text file. And to receive responses, you can read predefined csv files. This application simply converts the commands received into appropriate REST api requests.
Backend Server
AutoTrader backend server consists of many services that are hosted on Google cloud’s Mumbai data center. All these services are behind firewall. Only a handful of services has public access, which requires authentication. Each service has a role to play & requires a separate documentation, so we will not cover it here.
- Security Service
- Authenticate request to make sure it has come from valid user
- Authorize request to make sure a user/request has access to only his own trading accounts
- AutoTrader Service
- Responsible for enriching request/command with additional information
- Responsible for redirecting the request/command to appropriate service
- Trading Platform Service
- Responsible for executing commands like (place/modify/cancel orders etc.)
- Responsible for executing commands like (fetch orders, fetch positions etc.)
- Mail Service
- Responsible for sending emails