基于数字货币的量化交易平台搭建——数字采集部分——DAY1

1. 写在前面

特此申明:在2017年9月4日国家命令禁止加密货币的交易,该程序仅用于研究,不构成任何买卖建议或辅助加密货币交易,请大家正视交易加密货币所带来的风险(不要老是想着梭哈,赢了会所嫩模,天台站不下那么多人,再这么下去天台要排号跳楼了),请大家合法合规进行理财投资,遵守国家法律法规。

最近工作一直比较忙,很久以前打算开始搭的量化交易平台今天才开始动工,希望我能在最短时间内搭建完成。另外本人工作也非专业系统开始,末流程序员,对Django和Python仅处于初学,请大神勿喷,平台仅用于个人娱乐,有兴趣的同学可以私信我一起开发。

我们计划程序分为三个部分,第一部分为数据采集,第二部分为回测平台,第三部分为实盘交易平台。

系统版本:
python 3.6.4
Django 2.05

用最新的Django版本,我其实内心也很慌,可能会踩很多坑,就这样吧,初生牛犊不怕虎。

源码地址:https://github.com/zhangpei529/TradeSystem

2. 数据采集部分

由于以前并没有使用django做相应的任务调度,仅常用crontab进行任务调度。百度很多,django_apscheduler对数据采集程序进行调度。
前期数据采集主要是基于火币Pro,后期可能会接入币安等平台数据。(嗯嗯,那啥,火币麻烦看到结下广告费)

2.1 包安装

pip install apscheduler
pip install django_apscheduler

2.2 相应配置

settings.py

INSTALLED_APPS = [
    'django.contrib.admin',
    'django.contrib.auth',
    'django.contrib.contenttypes',
    'django.contrib.sessions',
    'django.contrib.messages',
    'django.contrib.staticfiles',
    'RegressionTesting.apps.RegressiontestingConfig',
    'DataAcquisition.apps.DataacquisitionConfig',
    'django_apscheduler',
]

views.py


from apscheduler.schedulers.background import BackgroundScheduler
from django_apscheduler.jobstores import DjangoJobStore, register_events, register_job

scheduler = BackgroundScheduler()
scheduler.add_jobstore(DjangoJobStore(), "default")


@register_job(scheduler, "interval", seconds=2)
def test_job():
    print("I'm a test job!")


register_events(scheduler)

scheduler.start()
print("Scheduler started!")

这个方法仅仅作为测试使用,很开心的发现,测试居然跑通了

基于数字货币的量化交易平台搭建——数字采集部分——DAY1_第1张图片

2.3 数据采集表结构分析

下图为火币Pro的K线数据返回结果

  "data": [
{
    "id": K线id,
    "amount": 成交量,
    "count": 成交笔数,
    "open": 开盘价,
    "close": 收盘价,当K线为最晚的一根时,是最新成交价
    "low": 最低价,
    "high": 最高价,
    "vol": 成交额, 即 sum(每一笔成交价 * 该笔的成交量)
  }
]

因此我们创建相应的model
models.py

import time


# 存储当前实时价格
class KLineDataRealTime(models.Model):
    k_id = models.CharField(max_length=20)
    amount = models.CharField(max_length=20)
    count = models.CharField(max_length=20)
    open = models.CharField(max_length=20)
    close = models.CharField(max_length=20)
    high = models.CharField(max_length=20)
    vol = models.CharField(max_length=20)
    time = models.DateTimeField(default=time.time())


# 存储历史所有价格
class KLineData(models.Model):
    k_id = models.CharField(max_length=20)
    amount = models.CharField(max_length=20)
    count = models.CharField(max_length=20)
    open = models.CharField(max_length=20)
    close = models.CharField(max_length=20)
    high = models.CharField(max_length=20)
    vol = models.CharField(max_length=20)
    time = models.DateTimeField(default=time.time())

执行以下命令创建表

python manage.py makemigrations
python manage.py migrate

数据库中生成了相应的表
基于数字货币的量化交易平台搭建——数字采集部分——DAY1_第2张图片

2.4 火币Pro的REST API接入程序

导入火币REST API的Utils.py程序取名为HuoBiUtils.py(大家自行搜索接入)
将以下代码写入settings.py文件夹中方便统一进行管理

ACCESS_KEY = ""
SECRET_KEY = ""

修改HuoBiUtils.py文件

ACCESS_KEY = ""
SECRET_KEY = ""

修改为

import TradeSystem.settings as settings

ACCESS_KEY = settings.ACCESS_KEY
SECRET_KEY = settings.SECRET_KEY

你可能感兴趣的:(基于数字货币的量化交易平台搭建——数字采集部分——DAY1)