回测平台小例子BKT:收盘前2分钟买,第二天卖
来源:互联网 发布:db2数据库用户 编辑:程序博客网 时间:2024/04/29 20:11
#回测平台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分钟买,第二天卖
- java显示1秒前,1分钟前,2分钟前,3天前
- 前2天在卓越买的书送到了~~~
- malloc第二个小例子
- 集合小例子:第二集
- 美国人打仗的第二天买黄金!
- 小程序组件之时间戳转化为几天前,几小时前,几分钟前
- 第二章 Spring 的一个小例子
- libconfig第二篇----两个小例子
- 高通平台下安卓opencl小例子
- 小白第二天
- 小白第二天
- php 时间相差(x年前,x月前,x天前,x小时前,x分钟前,x秒前)
- 第2天 一个rails小例子
- maven小例子-2
- websocket小例子2
- 【玩单反】什么是BKT按钮
- php论坛中常用的两个时间差(多少分钟前,多少小时前,多少天前)
- Qt Graphics View 框架
- AudioRecord音频录制的IllegalStateException
- list和str比较
- 【学习笔记】【Windows命令行详解手册】【一、Windows命令行基础】
- SElinux流程图
- 回测平台小例子BKT:收盘前2分钟买,第二天卖
- STL,ATL,WTL之间的联系和区别
- Linux经典书籍推荐
- JS解决JSON
- 最新张家界信息价下载,工程造价信息网期刊下载-湖南造价通
- wifi基本知识
- Socket通信基本流程
- linux下yum命令作用及应用
- R数据分析当中的化整为零(Split-Apply-Combine)策略