Plus+
Python
Easily Fetch All Historical Trade Ticks from Gemini API using Python

Historical trade ticks are often necessary for training machine learning and other high frequency trading models - the general rule of thumb is: "the more data, the better". Each trade "tick" represents one transaction between a buyer and a seller at a point in time for a price and amount. We will demonstrate how to use the public Gemini API to pull every trade print for any of their available tickers and save the results to a Sqlite database. The reason we use a database in this example instead of Excel is due to the sheer size of the data... easily could be millions of records. For BTC/USD, this will capture trade print data all the way back to October 2015!
As an aside, Sqlite also provides a great user interface to interact directly with the database (https://sqlitebrowser.org/) -- Every line of our Python code is commented so you know exactly what is going on. We will use 3 main functions and less than 110 lines of code to include everything! One function is used to create the database and data structure to store the trade print data. One function is specific to retrieving what is the ID of the last transaction stored in our database. And the last function will query the Gemini rest API and store results 500 at a time into the sqlite database! If you run the code and it fails, it will start capturing from where it left off in the database.
As an aside, Sqlite also provides a great user interface to interact directly with the database (https://sqlitebrowser.org/) -- Every line of our Python code is commented so you know exactly what is going on. We will use 3 main functions and less than 110 lines of code to include everything! One function is used to create the database and data structure to store the trade print data. One function is specific to retrieving what is the ID of the last transaction stored in our database. And the last function will query the Gemini rest API and store results 500 at a time into the sqlite database! If you run the code and it fails, it will start capturing from where it left off in the database.
Plus+ membership required
Create a Plus+ account to view the live codebase.
This article has a fully working, notebook-ready code block. Sign up for Plus+ to access it and the rest of the 20+ premium articles.
Subscribe to Plus+ Browse Plus+ articles