一般情况下,股票购买接口系统主要是可以运用在股票量化交易系统开发的一个大方向,也就是说,股票购买接口系统是根据这些量化的特点来开发的,就比如使用vn.py进行量化策略,在这方面,对交易者进行量化分析也起到举足轻重的作用。那么,具体又是如何实现的呢?
小编举个例子,量化策略可以将获取的股票数据行情就是通过接口来输入你的策略来优化,一般在在vn.py常使用的IDE是VS Code,这里的IDE没有什么特殊要求,大家在使用股票购买接口系统的时候使用的环境是Pycharm+VN Studio。相比于以前自己在源码基础上的策略开发,以现在这种的开发方式可以更好的进行量化选股。那么,为了方便管理自己的策略代码,需要创建一个strategies的文件夹存放策略代码,这个文件夹的目录位置需要:
如果是按照官方默认配置的话,也就是.vntrader在C:/Users/YourName/下,strategies放在.vntrader的同级目录下即可。但如果把.vntrader放在了其他位置,也需要在它的同级目录下创建strategies文件夹。因为在启动VN Trader的时候,它会在.vntrader文件在所在的目录下查找strategies文件夹,并加载其中的策略代码。之后在strategies文件夹中创建一个命名为demo_strategy.py的文件,并用IDE打开,类似于以下股票交易接口开发文档的调用API接口的功能:
相关函数 | 调用结果 |
Deinit Logoff | 无 |
Init | 返回值为 授权成功的交易账户数量 返回值 < 1 时, 无需调用 Deinit 接口, 也不能调用其它接口, 否则会出错! |
Logon | 调用成功: 返回值为 客户端 Id 调用失败: 返回值 <= 0 |
参数 ErrorInfo 保存错误信息, 需要分配 256 字节的空间 | |
GetExpireDate | 返回值为 API 授权到期日期 |
格式为 yyyymmdd 整数, 如 2018 年 5 月 1 日为 20180501 | |
单项操作 | 调用成功: ErrorInfo 为空字符串 |
QueryData | 调用失败: ErrorInfo 为错误信息 |
QueryHistoryData | 参数 Result 保存操作结果, 需要分配 1024*1024 字节的空间 |
SendOrder | Result 格式为表格数据, 每一行通过换行符\n 分割,每一列通过制表符\t 分割 |
CancelOrder | 例子: |
GetQuote | 股东代码\t 股东名称\t 帐号类别\t 保留信息\n |
Repay | 12345678\t\t0\t 信息 1\n |
87654321\t\t2\t 信息 2 | |
注: 不同券商返回的字段会有所不同 | |
参数 ErrorInfo 保存错误信息, 需要分配 256 字节的空间 | |
批量操作 | 批量操作的参数通过数组方式传入, 用下标区分每项操作 |
QueryDatas | 第 i 项操作调用成功: ErrorInfo[i]为空字符串 |
SendOrders | 第 i 项操作调用失败: ErrorInfo[i]为错误信息 |
CancelOrders | 参数 Result[]保存批量操作结果, Result[i]保存第 i 项操作结果 |
GetQuotes | 每项操作结果需要分配 1024*1024 字节的空间 |
QueryMultiAccountsDatas | 每项操作结果的格式可参阅[Result 格式] |
SendMultiAccountsOrders | 参数 ErrorInfo[]保存批量错误信息, ErrorInfo[i]保存第 i 项错误信息 |
CancelMultiAccountsOrders | 每项错误信息需要分配 256 字节的空间 |
GetMultiAccountsQuotes | |
策略代码编写如下:
假如这里选用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)
数据获取的接口一般返回list结构,如果需要转化为pandas Dataframe接口,可以使用 api.to_df 进行转化 如:
api.to_df(api.get_security_bars(7, 0, '000001', 0, 10)) # 返回普通list后转DataFrame;再进一步的调研函数程序,就完成量化策略选股的操作了。
执行示例:
因此,股票购买接口系统使用vn.py进行量化策略选股的同时,也要注意配置开发环境,在这一方面,如果对于不怎么了解的用户也可以根据自己的需求去找一家正规的系统开发平台,优化自己的量化系统,把握更多的盈利机会,也可以Q下方滴滴我们去做好量化策略的开发很交易系统的完善。