回测平台小例子BKT:收盘前2分钟买,第二天卖
#回测平台BKT受后台服务限制,速度稳定性上可能有问题。
dobkttest<-function(begintime="20130829",endtime="20140829",strategyname="autotest")
{
library(WindR)
w.start(0,FALSE);
bktnote=paste(strategyname,Sys.time(),"Go");
#begintime="20130329";
#endtime="20140329";
dates<-w.tdays(begintime,endtime)$Data$DATETIME;
if(length(dates)<10)
{
print(dates);
print("w.tdays error.....");
return(1);
}
out<-w.bktstart(strategyname,begintime,endtime,'Period=1m;InitialFund=3000000');
if(out$ErrorCode!=0)
{
print(out);
print("Error on w.bktstart!");
return (2);
}
bktid <- out$Data$BktId;#回测的id
codes <- '600000.sh';
print(paste('bktid=',bktid,'codes=',codes,'begintime=',begintime,'endtime=',endtime));
for(i in c(1:length(dates))){
print(paste('do i=',i, dates[i]));
#查仓位
out<-w.bktquery('position',paste(dates[i],'09:30:00'))
if(out$ErrorCode!=0)
{
print(out);
print("Error on w.bktquery--position!");
return (3);
}
positions <-out$Data;
#每天收盘前2分钟买,开盘2分钟卖
if(! is.null(positions))
{#有持仓则卖出
out<-w.bktorder(paste(dates[i],' 09:30:00'),positions$SecurityCode,'sell',positions$SecurityVolume);
if(out$ErrorCode!=0)
{
print(out);
print("Error on w.bktorder sell!");
return (6);
}
}
#查资金
out<-w.bktquery('Capital',paste(dates[i],'09:30:00'))
if(out$ErrorCode!=0)
{
print(out);
print("Error on w.bktquery--Capital!");
return (4);
}
totalfund<-out$Data$AvailableFund;
if(is.null(totalfund) || is.nan(totalfund) )
{
print("totalfund is invalid");
print(out);
return(5.5);
}
out<-w.wsi(codes,'close',paste(dates[i]," 14:58:00"),paste(dates[i]," 14:59:00"));
if(out$ErrorCode!=0)
{
if(out$ErrorCode == -40520007) #no data available
{
print(out);
next;
}
print(out);
print("Error on w.wsi!");
return (5);
}
price <- out$Data$close;
volume <- totalfund / sum(price) *0.9;
if(is.null(volume) || is.nan(volume) )
{
print("volume is invalid");
print(out);
next;
#return(5.5);
}
if(volume<100)
{
print(paste("volume",volume));
next;
}
out<-w.bktorder(paste(dates[i],' 14:59:00'),codes,'buy',floor(volume/100)*100);
if(out$ErrorCode!=0)
{
print(out);
print("Error on w.bktorder buy!");
return (6);
}
}
w.bktend();
print('BKT has finished!');
return(1);
}
dobkttest(begintime='20130912')
回测平台小例子BKT:收盘前2分钟买,第二天卖相关推荐
- 通联数据回测平台的测试
5.1 回测平台函数及参数介绍 5.1.1设置回测参数 1.start 与 end(设置回测区间) 其类型为字符串或datetime start='2017-01-01' end='2018-01-0 ...
- 搭建系统|继承backtrader的本地量化回测平台如何玩转多股轮动策略!
前言 一个完整的量化交易系统离不开人机交互功能的应用,特别是在回测阶段,我们需要不断更改参数因子.更换交易策略以应对当前的市场.因此创建完整的.功能键全的GUI用户界面至关重要. 市面上也出现了很多相 ...
- python回测平台接口_Acqusta TQuant
TradeApi是个抽象的接口,用户需要从其他的接口中得到DataApi的实例.在不同的系统中,如回测平台.策略平台等,有不同的实现和创建方法,但是接口都会保持一致,方便用户平滑切换系统. 如从TQu ...
- 1、回测平台搭建——思路
什么是回测平台? 最简单来说,写好了一个策略,从一个txt中读取了数据,放到策略中,得到了一个最后的收益,这个程序就是一个回测平台,用回测平台来概括虽然有些过,但是这就是一个回测平台的雏形. 升级-- ...
- 当前时间加30分钟_一位短线高手的复盘手记:尾盘预判第二天涨跌,“收盘前30分钟”才是全天最佳买卖黄金时间!...
(本文由公众号越声攻略(yslc688)整理,仅供参考,不构成操作建议.如自行操作,注意仓位控制和风险自负.) 投资者若能掌握大盘企稳时的短线选股技巧,就可以在未来行情的发展中游刃有余.短线炒股应该如 ...
- 量化回测平台|有现成的不用吗?如何利用聚宽平台回测交易策略
导览 本文为掘金小册课程加推篇!小册还在持续加推中,敬请期待!!!目前已经加推了20节!!! 超值的43节课程!从目录就能看出来! 1-贯穿小册:Python金融数据分析实战型项目 2-前置基础:量化 ...
- 掘金量化回测平台 - 1
掘金量化平台初探 python 量化分析包括:策略研发.策略回测.仿真交易.实盘交易.实盘盘后优化. 主要想使用掘金的平台来做策略回测和仿真交易两个环节的功能. 对比了下主流的云平台JoinQuant ...
- 利用米筐量化回测平台实行量化炒股
1.主要属性 2.代码 # 可以自己import我们平台支持的第三方python模块,比如pandas.numpy等. import pandas as pd import numpy as np f ...
- win10下搭建zipline python3.5量化回测平台环境
win10下搭建zipline python3.5量化回测平台 1.安装 Anaconda 1.1 下载Anconda 1.2 安装 1.3 Anaconda Prompt 1.4 检查安装 1.5 ...
最新文章
- Python爬虫入门教程 14-100 All IT eBooks多线程爬取
- 关于keil编译cortex-m3纯汇编时为什么问题使用align地址问题
- Git同时使用不同平台代码仓库
- 【C++ grammar】抽象、封装与this指针
- 微信小程序tabBar导航栏页和其他页执行onLoad与onShow时机;tabBar页获取不到参数问题;navigateTo跳转无效问题;onShow执行两次问题;
- Codeforces 471 D MUH and Cube Walls
- 数据科学 第 5 章 主成分分析(降维)、相关性
- 热力学与统计物理笔记(WIP)
- HTML 标签中的连续的英文折断
- 多元函数微分学之偏导数
- 性能工具之 Goreplay 安装及入门使用
- op07数据手册分析
- PMP备考错题集-模拟三
- 解决问题https访问http加载不出图片资源的顺便在给逻辑做个马杀鸡
- 王继伟-国产UMLMDA工具开发实践-UMLChina讲座-音频和幻灯
- mysql 概念与命令总结(贼全)
- IntellIJ IDEA导入项目后无法运行方法的解决方法!
- LXC、LXD、Docker的区别与联系(by quqi99)
- 查看话单日志和性能日志有效信息的流程
- vmos切换安卓版本_虚拟大师VMOS——手机里的quot;虚拟机quot;