Ubuntu安装mysql用于量化交易
引言
比特币渡劫69000导致市场出现了较大的波动,我的策略也受到了影响,出现了较大的回撤。为了进一步提升收益的稳定性,我决定在当前的组合中添加一个高频的网格策略。由于整个过程涉及到较为频繁的数据交换,所以需要用到mysql。
原子性
一开始我也考虑过reddis之类的内存数据库,速度快不说,原子性也较容易实现。但是仔细思考过数据表的结构之后,我觉得还是关系型数据库比较适合这个策略。
我的思路是将mysql的数据库隔离级别设置为 Serializable,然后在主程序中创建一个长效连接,这样当子线程处理数据时,在 Serializable 的隔离级别下,事务只会串行执行。
理论上这种方法应该可以避免多线程同时访问数据库的并发问题,避免脏读,幻读。虽然可能会降低一点点速度,毕竟做量化交易,速度也很重要。但是考虑到我的数据量很小,我觉得还是可以接受的。
安装mysql
apt install mysql-server
我的系统是ubuntu20.04,mysql的版本是8.0
修改配置文件
/etc/mysql/mysql.conf.d/mysqld.cnf
将监听端口修改成“0.0.0.0”,方便之后用navicat登录
bind-address = 0.0.0.0
然后是隔离级别,添加一行
transaction-isolation = SERIALIZABLE
保存重启
设置远程访问
登录mysql
mysql -u root -p
默认root本地登录无须密码,直接敲回车
创建一个账号
CREATE USER 'username'@'%' IDENTIFIED BY 'password';
授权远程访问
GRANT ALL PRIVILEGES ON *.* TO 'username'@'%';
由于mysql8.0的远程默认登录方式是MySQL使用的是caching_sha2_password验证方式,我安装的navicat还不支持,所以还需要修改验证方式。
ALTER USER 'username'@'%' IDENTIFIED WITH mysql_native_password BY 'password';
刷新权限
FLUSH PRIVILEGES;