V2EX = way to explore
V2EX 是一个关于分享和探索的地方
现在注册
已注册用户请  登录
推荐学习书目
Learn Python the Hard Way
Python Sites
PyPI - Python Package Index
http://diveintopython.org/toc/index.html
Pocoo
值得关注的项目
PyPy
Celery
Jinja2
Read the Docs
gevent
pyenv
virtualenv
Stackless Python
Beautiful Soup
结巴中文分词
Green Unicorn
Sentry
Shovel
Pyflakes
pytest
Python 编程
pep8 Checker
Styles
PEP 8
Google Python Style Guide
Code Style from The Hitchhiker's Guide
a499492580
V2EX  ›  Python

Python 函数在量化策略中的运用

  •  
  •   a499492580 · 2017-11-24 15:06:35 +08:00 · 1822 次点击
    这是一个创建于 2337 天前的主题,其中的信息可能已经有所发展或是发生改变。

    原创 2017-11-24 mindgo MindGo 量化平台

    关注 MindGo 量化平台微信公众号,获取量化投资教材视频

    读懂量化策略的运行机制,只需要看懂这四个 Python 函数!

    一般而言,量化策略的运行机制:1.账户➔2.时间➔3.数据获取及分析➔.条件判断并下单交易。

    那么每一点的核心分别是什么?搞懂这四段话!(配四个案例)

    1.账户

    量化策略运行的第一步:账户初始化。它就如同是开户操作,任何人想要进入股市交易,他必须先到证券公司去开户,如果没有资金账户,是无法交易股票的。那么量化策略主要通过函数来实现账户初始化,也就是完成开户,并只需要一次即可。

    初始化函数:def initialize(account):,该函数只有唯一一个参数 account,也就是说,量化策略在初始化函数中需要对账户信息初始化,账户信息包括账户持仓、账户可用资金、账户使用资金等等,除此之外,account 作为对象还可能存放变量,但一旦初始化后,都会全部清空,回归到最开始的时候。

    在简单双线策略中,其在 account 对象中设置了 security 变量,也就是贵州茅台的股票代码。 #初始化账户
    def initialize(account):
    #设置要交易的证券(600519.SH 贵州茅台)
    account.security = '600519.SH'

    2.时间 量化策略运行的第二步:时间。中国的上海证券交易所和深圳证券交易所都是有对应的交易时间规定的,那么量化策略在运行过程中也必须尊重这个时间规定,比如:集合竞价时间为 9 点 15 分至 9 点 25 分、股票竞价交易时间为 9 点 30 分至 11 点 30 分和 13 点至 15 点。

    量化策略通过函数来实现准时运行,最常见的是 def handle_data(account,data):函数,该函数可以设置两种模式:日级和分钟级。日级模式下,该函数会定时在每日 9 点 30 分准时运行一次。分钟级模式下,该函数会在竞价交易时间内的每个分钟定时运行一次,也就是一个交易日时长四小时,运行 240 次。 #设置买卖条件,每个交易频率(日 /分钟 /tick )调用一次
    def handle_data(account,data):

    在简单双线策略中,整个策略都是在 def handle_data 函数中运行,函数参数为 account 和 data,其中 account 是账户信息对象,而 data 是储存数据的对象。

    3.据获取及分析

    量化策略运行的第三步:数据获取及分析。行情、财务等等数据都是经过人工清洗整理后储存下来的,具有标准的格式,主要就是为了用户能够方便、统一的去获取这些数据,通过一系列的获取数据函数,用户可以获取到策略所需要的数据,然后进行数据分析,作出买卖决定。

    数据获取函数与初始化函数和时间函数不同,因为数据获取函数是将储存的数据提取,因此其一般的格式:函数名(参数)。

    简单双均线策略中:close = data.attribute_history(account.security, ['close'], 20, '1d'),其中就是运用 data.attribute_history()这个获取数据的函数来获取相应数据,用户只需要填写 4 个关键参数,分别是获取数据的标的、数据类型、数据长度、数据步长。成功获取到数据后,赋值到 close 上,进行数据分析,也就是前一章节的 Python 数学函数做简单数据分析。

    #设置买卖条件,每个交易频率(日 /分钟 /tick )调用一次
    def handle_data(account,data):
    #获取证券过去 20 日的收盘价数据
    close = data.attribute_history(account.security, ['close'], 20, '1d') #计算五日均线价格
    MA5 = close.mean().values()
    #计算二十日均线价格
    MA20 = close.values.mean()
    #如果五日均线大于二十日均线

    4.条件判断并下单交易

    量化策略运行的第四步:条件判断并下单交易。量化策略在完成对数据分析后,往往是需要进行判断,然后下单交易。就如同简单双均线中,策略获取到数据,然后计算 5 日、20 日均线,判断均线金叉则买入,死叉则卖出。

    下单交易往往通过下单函数实现,常用的下单函数有根据资金下单、根据目标股数下单。其中 order_value()函数是根据资金下单交易的函数,内置两个参数,交易标的和交易金额。order_target()函数是根据目标股数下单,内置两个参数,交易标的和目标股数。

    在简单双均线策略中,运用了这两个函数进行下单交易。 #如果五日均线大于二十日均线
    if MA5 > MA20:
    #使用所有现金买入证券
    order_value(account.security,account.cash)
    #如果五日均线小于二十日均线,并且目前有头寸
    if MA5 < MA20 and account.positions_value > 0:
    #卖出所有证券
    order_target(account.security,0)

    目前尚无回复
    关于   ·   帮助文档   ·   博客   ·   API   ·   FAQ   ·   我们的愿景   ·   实用小工具   ·   3501 人在线   最高记录 6543   ·     Select Language
    创意工作者们的社区
    World is powered by solitude
    VERSION: 3.9.8.5 · 26ms · UTC 04:46 · PVG 12:46 · LAX 21:46 · JFK 00:46
    Developed with CodeLauncher
    ♥ Do have faith in what you're doing.