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;

测试navicat

发表回复 0

您的邮箱地址受系统保护,并不会公开。 星号栏目为必填项 *


Index