基於數字貨幣的量化交易平臺搭建——數字採集部分——DAY1
阿新 • • 發佈:2019-02-08
1. 寫在前面
特此申明:在2017年9月4日國家命令禁止加密貨幣的交易,該程式僅用於研究,不構成任何買賣建議或輔助加密貨幣交易,請大家正視交易加密貨幣所帶來的風險(不要老是想著梭哈,贏了會所嫩模,天台站不下那麼多人,再這麼下去天台要排號跳樓了),請大家合法合規進行理財投資,遵守國家法律法規。
最近工作一直比較忙,很久以前打算開始搭的量化交易平臺今天才開始動工,希望我能在最短時間內搭建完成。另外本人工作也非專業系統開始,末流程式設計師,對Django和Python僅處於初學,請大神勿噴,平臺僅用於個人娛樂,有興趣的同學可以私信我一起開發。
我們計劃程式分為三個部分,第一部分為資料採集,第二部分為回測平臺,第三部分為實盤交易平臺。
系統版本:
python 3.6.4
Django 2.05
用最新的Django版本,我其實內心也很慌,可能會踩很多坑,就這樣吧,初生牛犢不怕虎。
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!")
這個方法僅僅作為測試使用,很開心的發現,測試居然跑通了
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
資料庫中生成了相應的表
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