成功的量化交易——量化交易环境(12)

avatar
· Views 208


成功的量化交易——量化交易环境(12)

由于我们有意长期使用期货数据作为更广泛的证券主数据库策略的一部分,我们希望将期货数据存储到磁盘上。因此,我们需要创建一个目录来保存E-Mini合同CSV文件。在Mac/Linux(终端/控制台)中,这是通过以下命令实现的:


cd /PATH/TO/YOUR/quandl_data.py

mkdir -p quandl/futures/ES



注意:用quandl_data.py文件所在的目录替换/PATH/TO/YOUR,这将创建一个名为quandl的子目录,其中包含另外两个子目录,分别用于期货和ES合同。这将帮助我们以一种持续的方式组织我们的下载。为了使用Python实现下载,我们需要导入一些库。我们特别需要requests来下载并且用pandas和matplotlib用于绘图和数据操作:


#!/usr/bin/python 

# -*- coding: utf-8 -*- 

# quandl_data.py 

from __future__ import print_function 

import matplotlib.pyplot as plt 

import pandas as pd 

import requests



代码中的第一个函数将生成希望下载的期货品种列表。我添加了开始和结束年份的关键字参数,将它们设置为2010年和2014年的合理值。当然,您可以选择使用其他时间框架:


def construct_futures_symbols(

symbol, start_year=2010, end_year=2014

):

"""

构造一个期货合约代码列表

用于特定的符号和时间框架。"""

futures = []

# March, June, September and

# December delivery codes

months = ’HMUZ’

for y in range(start_year, end_year+1):

for m in months:

futures.append("%s%s%s" % (symbol, m, y))

return futures



现在,我们需要循环遍历每个品种,从Quandl获取特定契约的CSV文件,然后将其写入磁盘,以便以后访问:

def download_contract_from_quandl(contract, dl_dir):

"""

从Quandl下载一个单独的期货合约,然后

将它存储到磁盘的' dl_dir '目录中。

需要auth_token,它在注册时从Quandl获得。.

"""

# 从契约和auth_token构造API调用

api_call = "http://www.quandl.com/api/v1/d..."

api_call += "OFDP/FUTURE_%s.csv" % contract

# 如果您希望为更多的下载添加一个auth令牌,很简单

# 注释下面的行并用MY_AUTH_TOKEN替换

# 您的验证令牌在下面的行中

params = "?sort_order=asc"

#params = "?auth_token=MY_AUTH_TOKEN&sort_order=asc"

full_url = "%s%s" % (api_call, params)

# 从Quandl下载数据data = requests.get(full_url).text

# 将数据存储到磁盘

fc = open(’%s/%s.csv’ % (dl_dir, contract), ’w’)

fc.write(data)

fc.close()



现在我们把以上两个功能结合起来下载所有需要的合约:


def download_historical_contracts(

symbol, dl_dir, start_year=2010, end_year=2014

):

"""

下载指定品种的所有期货合约

在start_year和end_year之间。

"""

contracts = construct_futures_symbols(

symbol, start_year, end_year

)

for c in contracts:

print("Downloading contract: %s" % c)

download_contract_from_quandl(c, dl_dir)



最后,我们可以使用主函数将其中一个期货价格添加到pandas数据流中。然后我们可以使用matplotlib来绘制结算价格:

if __name__ == "__main__":

symbol = ’ES’

# 确保你已经创建了这个

# 相对目录

dl_dir = ’quandl/futures/ES’

# 创造开始和结束的年份

start_year = 2010

end_year = 2014

# 将契约下载到目录中

download_historical_contracts(

symbol, dl_dir, start_year, end_year

)

# 通过read_csv打开一个契约

# 然后标出结算价格

es = pd.io.parsers.read_csv(

"%s/ESH2010.csv" % dl_dir, index_col="Date"

)

es["Settle"].plot()

plt.show()


下图是输出结果:


成功的量化交易——量化交易环境(12)

 如有需要,可修改上述代码,从Quandl收集任何期货合约组合。请记住,除非获取更高的API请求,否则代码每天只能发出50个API请求。




【交易学习】

【交易员洞察】

金融寒冬中的一束星火—ALPHA金融人才孵化计划

中国量化交易的现状与未来前景如何

人类历史上最早的泡沫故事——“郁金香热”始末

从个人交易员成长为机构交易员


【基础知识】

小白如何学金融

全球央行货币政策及财政政策解析

金融行业组织架构及岗位分布

什么叫宏观交易员?


【货币交易】

人民币货币市场全景图

详解货币交易术语

保证金账户运作机制


【黄金交易】

世界黄金浮生纪事

中国黄金的前世今生

黄金价格走势及内在机理

면책 조항: 본 게시글에 표현된 견해는 전적으로 작성자의 견해이며 Followme의 공식 입장을 대변하지 않습니다. Followme는 제공된 정보의 정확성, 완전성 또는 신뢰성에 대해 책임을 지지 않으며, 서면으로 명시적으로 언급되지 않는 한 해당 내용을 기반으로 취해진 어떠한 조치에 대해서도 책임을 지지 않습니다.

이 글이 마음에 드시나요? 작성자에게 팁을 보내 감사의 마음을 전하세요.
댓글 0

더 오래된 의견은 없습니다. 소파를 가장 먼저 잡으십시오.

  • tradingContest