什么是ptrade量化原理?

Source

ptrade量化原理其实是在进行tushare量化实盘交易前,需要先进行回测和模拟,以确定策略是否有效,才能及时的改进回测框架的完善,便于交易者及时的捕抓市场热点,再执行股票量化策略。不过,tushare量化是基于一些股票数交易口来构建回测框架,以便验证是否实盘。tushare量化回测框架如下:

1、Zipline:事件驱动框架:国外很流行。缺陷是不适合国内市场。

2、PyAlgoTrade :事件驱动框架,最新更新日期为16年8月17号。支持国内市场,应用python

2.7开发,最大的bug在于不支持3.5的版本,以及不支持强大的pandas。

3、pybacktest:以处理向量数据的方式进行回测,最新更新日期为2个月前,更新不稳定。

4、TradingWithPython:基于pybacktest,进行重构。

5、ultra-finance:在github的项目两年前就停止更新了,最新的项目在谷歌平台,无奈打不开网址,感兴趣的话,请自行查看吧。

6、RQAlpha:事件驱动框架,适合A股市场,自带日线数据。是米筐的回测开源框架,相对而言,这个平台更能适应于普通投资者。

tushare量化回测框架执行部分程序的开发原理:

(1)查询各类历史数据:

签名

int Init();

功能

API 初始化

参数

返回值

授权成功的交易账户数量

返回值< 1 时, 无需调用 Deinit 接口, 也不能调用其它接口, 否则会出错!

签名

void Deinit();

功能

API 反初始化

参数

返回值

签名

int Logon(const char* Ip, short Port, const char* Version, short Yybid, const char* Account, const char* TradeAccount,

const char* JyPassword, const char* TxPassword,

char* ErrorInfo);

功能

登录交易账户

参数

Ip

券商交易服务器IP, 注意区分普通和两融

Port

券商交易服务器端口, 注意区分普通和两融

Version

客户端的版本号, 一般为空字符串

Yybid

营业部代码, 一般为 0

Account

登录账号,一般为券商的资金账号或客户号

注: 两融账号需要额外添加 .C 结尾, 如 123456 变为 123456.C

TradeAccount

交易账号, 一般与登录账号相同, 但无需额外添加 .C 结尾

可登录券商软件, 查看股东列表, 股东列表内的资金账号就是交易账号

JyPassword

交易密码

TxPassword

通讯密码, 一般为空字符串或与交易密码相同

ErrorInfo

错误信息, 需要分配 256 字节的空间

返回值

调用成功: 客户端 Id

调用失败: 返回 <= 0

签名

void Logoff(int ClientId);

功能

登出交易账户

参数

ClientId

客户端Id

返回值

签名

void QueryData(int

ClientId, int Category,

char* Result, char*

ErrorInfo);

功能

查询各类交易数据

参数

ClientId

客户端Id

Category

查询信息类别

0: 资金, 1: 股份, 2: 当日委托, 3: 当日成交, 4: 可撤单,

5: 股东代码, 6: 融资余额, 7: 融券余额, 8: 可融证券,

9: 各券商不同, 10-11: 无, 12: 可申购新股查询, 13: 新股申购额度查询,

14: 配号查询, 15: 中签查询

Result

查询结果, 需要分配 1024*1024 字节的空间

格式请参阅[Result 格式]

ErrorInfo

错误信息, 需要分配 256 字节的空间

返回值

无, 查询成功与否通过 ErrorInfo 是否为空字符串来判断

签名

void QueryDatas(int ClientId, int Category[], int Count, char* Result[], char* ErrorInfo[]);

功能

单账户批量查询各类交易数据, 通过下标区分每项查询

参数

ClientId

客户端Id

Category[]

查询信息类别数组, 具体含义请参阅[查询信息类别]

Count

查询项数, 即数组长度

Result[]

查询结果数组, 每项结果需要分配 1024*1024 字节的空间

格式请参阅[Result 格式]

ErrorInfo[]

错误信息数组, 每项错误信息需要分配 256 字节的空间

返回值

无, 第 i 项查询成功与否通过 ErrorInfo[i]是否为空字符串来判断

签名

void QueryMultiAccountsDatas(int ClientId[], int Category[], int Count,

char* Result[], char* ErrorInfo[]);

功能

多账户批量查询各类交易数据, 通过下标区分每项查询

参数

ClientId[]

客户端Id 数组

Category[]

查询信息类别数组, 具体含义请参阅[查询信息类别]

Count

查询项数, 即数组长度

Result[]

查询结果数组, 每项结果需要分配 1024*1024 字节的空间

委托下单可以通过程序来表示:

@param string $IP 券商交易服务器IP *

@param integer $Version 设置客户端的版本号 *

@param integer $YybID 营业部代码 *

@param string $AccountNo 完整的登录账号 *

@param string $TradeAccount 交易账号,一般与登录帐号相同. *

@param string $JyPassword 交易密码 *

@param string $Port 券商交易服务器端口 *

@param string $TxPassword 通讯密码 *

@param integer $Category 表示委托的种类,0买入 1卖出 *

@param integer $PriceType 表示报价方式,0上海限价委托 深圳限价委托 1(市价委托)深圳对方最优价格 2(市价委托)深圳本方最优价格 3(市价委托) 深圳即时成交剩余撤销 4(市价委托)上海五档即成剩撤 深圳五档即成剩撤 5(市价委托)深圳全额成交或撤销 6(市价委托)上海五档即成转限价 *

@param string $Gddm 股东代码 交易上海股票填上海的股东代码;交易深圳的股票填入深圳的股东代码 * @param string $Zqdm 证券代码 *

@param string $Price 委托价格 *

@param string $Quantity 委托数量 *

/ function SendOrder($IP,$Version,$YybID,$AccountNo,$TradeAccount,$JyPassword,$Port,$TxPassword,$Category,$PriceType,$Gddm,$Zqdm,$Price,$Quantity){ $api = $this->API;

//接口地址 $data = 'IP='.$IP.'&Version='.$Version.'&YybID='.$YybID.'&AccountNo='.$AccountNo.'&TradeAccount='.$TradeAccount.'&JyPassword='.$JyPassword.'&Port='.$Port.'&TxPassword='.$TxPassword.'&Category='.$Category.'&PriceType='.$PriceType.'&Gddm='.$Gddm.'&Zqdm='.$Zqdm.'&Price='.$Price.'&Quantity='.$Quantity; $url = $api.'SendOrder'; $header = ['Content-Type'=>'application/x-www-form-urlencoded'];//默认方式 $res = $this->https_request($url,$header,$data);

//CURL获取数据 return $res;

}

/** * 下委托交易证券(买入或卖出)

不过,在验证实盘时tushare量化原理的自动交易容易被限制时,要先去破解券商网页版的交易接口,或者说应用爬虫爬去操作,才能更快的响应挂单速度。