I have started to do the same thing a few months ago.
You can test your strategies pretty much in any platform: I have tried:
backtrader - www.backtrader.com - python based, open source, with great documentation and community support, helpful author and some great features. If you have basic python then thiswould be my recommendation.
ninjatrader - free to download and good for the beginner with easy to use visuals - you can get this with backtrader too but you will need a bit more unix/python knowledge.
Wealthlab - similar to ninjatrader but comes with a strategy library so that you can get started straight away.
Gekko - Java nodejs based. really good platform to get up and running quickly and so far the only one where you can setup live bots, although backtrader user bartosh seems to have devleoped a branch using ccxt but I have not tested it. I left this option because I wanted to go down the python route.
I think the trickiest bit for most crypto bot enthusiasts is getting the data, so here is my ccxt script that will pull in the data from poloniex (you can change this - please refer to: https://github.com/ccxt/ccxt)
this particular one uses input format for ninjatrader.
Getting Data:
Best place to get it is ccxt - each exchange has different attributes but I have found that poloniex gives me the longest historical duration for most coins for 5m, 15m and 1d timeframes.
Here is a script you can use to pull info for poloniex:
import ccxt
import datetime
import time
import math
import pandas as pd
# DATA FEED FROM EXCHANGE
symbol = str('ETH/USDT')
timeframe = str('1d')
exchange = str('poloniex')
exchange_out = str(exchange)
start_date = str('2014-01-01 00:00:00')
get_data = True
def to_unix_time(timestamp):
epoch = datetime.datetime.utcfromtimestamp(0) # start of epoch time
my_time = datetime.datetime.strptime(timestamp, "%Y-%m-%d %H:%M:%S") # plugin your time object
delta = my_time - epoch
return delta.total_seconds() * 1000
# CSV File Name
symbol_out = symbol.replace("/", "")
filename = '{}-{}-{}.csv'.format(exchange_out, symbol_out, timeframe)
out_filename = '{}-{}-{}-out.csv'.format(exchange_out, symbol_out, timeframe)
# Get our Exchange
exchange = getattr(ccxt, exchange)()
exchange.load_markets()
hist_start_date = int(to_unix_time(start_date))
data = exchange.fetch_ohlcv(symbol, timeframe, since=hist_start_date)
header = ['Timestamp', 'Open', 'High', 'Low', 'Close', 'Volume']
df = pd.DataFrame(data, columns=header)
df['Timestamp'] = pd.to_datetime(df['Timestamp'], unit='ms')
df['Timestamp'] = df['Timestamp'].dt.strftime('%Y%m%d %H%M')
#Precision
df[['Volume']] = df[['Volume']].astype(int)
# Save it
df.to_csv(filename, index= False,header=False, sep=';')
Backtest rookies is a great site to get you started - the author also seems to be a really nice guy: https://backtest-rookies.com.
Here is a great list of a lot of other quant stuff:
https://github.com/EliteQuant/EliteQuant/blob/master/README.md#cryptocurrency
Good luck!
EDIT: 7/3/18: One more to add - Zorro - https://zorro-project.com/. programmable using c-lite, fast, good tutorials https://www.financial-hacker.com/ - free version available for low trading volumes and able to download historical data from a number of sources.
EDIT: 12/4/19: This is a great link A list of online resources for quantitative modeling, trading, portfolio management.
https://github.com/EliteQuant/EliteQuant