量化交易系统的开发

一.架构

我设计的架构图大概如下:

 

二.参考

 

<海龟交易法则>

vnpy

期货职业资格考试丛书

<量化投资策略与技术>

 

三.开发前思考

1.计算机-金融-数学,知识比重为1-3-6
2.用java还是python写都可以,架构方面没太大区别,java的interface用python的abc库一样可以实现。但是java的库比较少
3.对于CTA交易,策略最重要,性能、代码不太重要。高频交易,性能比较重要.策略需要集中信号管理型和资金管理型的优点.
4.经典的策略,比如Hans123和海龟交易法则及其优化方式,需要非常熟悉
5.机器学习只是锦上添花,可以不考虑。
6.实盘交易盈利的策略实现程序化才有价值.
7.没有经历过几次爆仓的交易员是成长不起来的.
8.谨记三条:第一,及时止损;第二,资金仓位管理;第三,纪律最重要,心态就是纪律.
9.回测必须覆盖单边上涨,单边下跌,区间震荡三种走势
10.策略在实盘使用前最好找历史上和期货的最近几天走势类似的回测下

 

四.开发后思考


1.回测框架怎么设计,兼容不同的第三方数据来源,不同的策略回测,下单交易引擎,不同的第三方实盘交易所,不同的数据存储方式
2.回测框架需要考虑稳定,已读,扩展性。
3.均线,海龟,多周期,多种指标信号,布林海盗系统,各种策略最好都回测一遍,熟悉内部实现。
4.交易前需要判断当前是趋势还是震荡盘,趋势需要追涨杀跌,盘整盘做高抛低吸,策略正好相反。
5.趋势盘是容易程序量化抓住的。盘整盘怎么做,比趋势难把握。
6.选择合适的交易周期,1分钟线会频繁的交易,虽然大部分交易是盈利的,但是高昂的手续费会吞噬掉盈利,三分钟
或者长一点的周期,根据交易品种判断,不是一致的。
7.根据哪种指标做动态止盈,绝对值还是,均线,kd,需要考虑。
8.资金管理根据技术信号做,还是固定手数,差别挺大的。建议固定手数。
9.回测是否覆盖了牛市,熊市,猴市。大的震荡,小的震荡。
10.同一时间,多个指标发出买入信号,是否同时加仓,控制加仓过快的问题。
11.最麻烦的,回测数据来源的问题。RQData,JQData,Wind,还是EMQuantApi,数据的质量,脏数据是很头疼的问题。
12.交易系统和券商交易软件计算出来的指标值不同,需要手动算下是数据的问题,还是计算方式,周期不同的问题。
13.语言是用java,c++,还是python,R。大部分量化平台的接口,策略会给python,c++的接口,建议二选一。
14.做CTA,Alpha选股还是套利,高频,需要一步步升级打怪,从易到难.

  • 6
    点赞
  • 36
    收藏
    觉得还不错? 一键收藏
  • 1
    评论
Python是一种非常流行的编程语言,也是量化交易领域中最常用的编程语言之一。Python具有易学易用、开源免费、生态丰富等优点,因此被广泛应用于量化交易系统的开发。Python量化交易系统的开发主要包括以下几个方面: 1. 数据获取:量化交易系统需要获取各种市场数据,包括股票、期货、外汇等市场的实时行情数据、历史行情数据、财务数据等。Python提供了丰富的数据获取工具和库,如pandas-datareader、tushare等。 2. 数据处理:获取到的数据需要进行清洗、整理、计算等处理,以便后续的策略分析和回测。Python中的pandas、numpy等库提供了强大的数据处理功能,可以方便地进行数据清洗、整理和计算。 3. 策略设计:量化交易系统的核心是交易策略的设计。Python提供了丰富的科学计算库和机器学习库,如scikit-learn、TensorFlow等,可以方便地进行策略分析和设计。 4. 回测系统:回测是量化交易系统的重要组成部分,可以通过回测来验证交易策略的有效性。Python中的backtrader、zipline等库提供了强大的回测功能,可以方便地进行回测分析。 5. 交易执行:量化交易系统需要将交易策略转化为实际的交易指令,并通过API接口连接到交易所进行交易。Python中的vnpy、pyalgotrade等库提供了方便的交易执行功能。 以下是一个简单的Python量化交易策略示例,用于计算股票的移动平均线并进行交易决策: ```python import pandas as pd import numpy as np import talib import backtrader as bt class MyStrategy(bt.Strategy): params = ( ('maperiod', 15), ) def __init__(self): self.dataclose = self.datas[0].close self.order = None self.sma = bt.indicators.SimpleMovingAverage( self.datas[0], period=self.params.maperiod) def next(self): if self.order: return if not self.position: if self.dataclose[0] > self.sma[0]: self.order = self.buy() else: if self.dataclose[0] < self.sma[0]: self.order = self.sell() if __name__ == '__main__': cerebro = bt.Cerebro() cerebro.addstrategy(MyStrategy) data = bt.feeds.YahooFinanceData(dataname='AAPL', fromdate=datetime(2010, 1, 1), todate=datetime(2019, 1, 1)) cerebro.adddata(data) cerebro.run() ```

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论 1
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值