L2聚宽量化交易系统怎样实现股票量化策略呢?说到这个问题,首先大家先想想,我们进行股票量化投资无非就是为了更高效的把握股票盈利的机会,但是往往在量化过程中,对聚宽量化交易系统的操作不了解,减少了自己量化思维。那么,在L2聚宽量化交易系统如何进行精准的量化策略分析?
首先,聚宽量化交易系统是基于L2数据接口开发出来的系统,那么就是在开发数据接接口的基础上,满足各个性能的要求,就比如交易接口开发文档:
一:数据类型的开发需求
交易所 | 数据类型 |
上交所 | 十档行情快照(Level-2) |
委托队列(Level-2) | |
逐笔成交(Level-2) | |
深交所 | 十档行情快照(Level-2) |
逐笔委托(Level-2) | |
委托队列(Level-2) | |
逐笔成交(Level-2) | |
沪深交易所 | 期权、可转债 |
二:消息类型开发需求:
消息 | 说明 |
TickRecord | 逐笔成交 |
OrderRecord | 逐笔委托 |
OrderQueueRecord | 委托队列 |
StockQuoteRecord | 股票十档行情 |
三:TickRecord (逐笔成交)开发要求:
字段名 | 类型 | 备注 |
stock_exchange | uint32 | 证券市场,1-SH,2-SZ |
stock_code | string | 证券代码 |
created_at | int64 | 成交日期时间戳(毫秒) |
code | string | 成交编号 |
price | uint32 | 成交单价 |
volume | uint64 | 成交数量 |
amount | uint64 | 成交金额 |
tx_dir | uint32 | 交易方向:0-未知,1-买方成交,2-卖方成交 |
tx_kind | uint32 | 交易类型:0-成交,1-撤单 |
buy_order_seq | string | 买方委托序号 |
sell_order_seq | string | 卖方委托序号 |
开发代码示例:
假如L2聚宽量化交易系统选用vn.py中的双均线策略demo,它的量化策略代码如下:
from vnpy.app.cta_strategy import (
CtaTemplate,
StopOrder,
TickData,
BarData,
TradeData,
OrderData,
BarGenerator,
ArrayManager,
)
class DemoStrategy(CtaTemplate):
"""演示用的简单双均线"""
# 策略作者
author = "Smart Trader"
# 定义参数
fast_window = 10
slow_window = 20
# 定义变量
fast_ma0 = 0.0
fast_ma1 = 0.0
slow_ma0 = 0.0
slow_ma1 = 0.0
# 添加参数和变量名到对应的列表
parameters = ["fast_window", "slow_window"]
variables = ["fast_ma0", "fast_ma1", "slow_ma0", "slow_ma1"]
def __init__(self, cta_engine, strategy_name, vt_symbol, setting):
""""""
super().__init__(cta_engine, strategy_name, vt_symbol, setting)
# K线合成器:从Tick合成分钟K线用
self.bg = BarGenerator(self.on_bar)
# 时间序列容器:计算技术指标用
self.am = ArrayManager()
def on_init(self):
"""
当策略被初始化时调用该函数。
"""
# 输出个日志信息,下同
self.write_log("策略初始化")
# 加载10天的历史数据用于初始化回放
self.load_bar(10)
def on_start(self):
"""
当策略被启动时调用该函数。
"""
self.write_log("策略启动")
# 通知图形界面更新(策略最新状态)
# 不调用该函数则界面不会变化
self.put_event()
def on_stop(self):
"""
当策略被停止时调用该函数。
"""
self.write_log("策略停止")
self.put_event()
def on_tick(self, tick: TickData):
"""
通过该函数收到Tick推送。
"""
self.bg.update_tick(tick)
def on_bar(self, bar: BarData):
"""
通过该函数收到新的1分钟K线推送。
"""
am = self.am
Market市场代码: 0—深圳,1—上海
Stockcode:证券代码;
start :指定的范围开始位置;
count:要请求的 K 线数目,最大值为 800
比如以下语句表示获取获取股票深证的000001股票最近的10条1分钟数据;
api.get_security_bars(7, 0, '000001', 0, 10)
L2聚宽量化交易系统获取的接口一般返回list结构,如果需要转化为pandas Dataframe接口,可以使用 api.to_df 进行转化 如:
api.to_df(api.get_security_bars(7, 0, '000001', 0, 10)) # 返回普通list后转DataFrame;再进一步的调研函数程序,查询到个股的具体数据情况,就完成量化策略选股的操作了。