#回测平台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分钟买,第二天卖相关推荐

  1. 通联数据回测平台的测试

    5.1 回测平台函数及参数介绍 5.1.1设置回测参数 1.start 与 end(设置回测区间) 其类型为字符串或datetime start='2017-01-01' end='2018-01-0 ...

  2. 搭建系统|继承backtrader的本地量化回测平台如何玩转多股轮动策略!

    前言 一个完整的量化交易系统离不开人机交互功能的应用,特别是在回测阶段,我们需要不断更改参数因子.更换交易策略以应对当前的市场.因此创建完整的.功能键全的GUI用户界面至关重要. 市面上也出现了很多相 ...

  3. python回测平台接口_Acqusta TQuant

    TradeApi是个抽象的接口,用户需要从其他的接口中得到DataApi的实例.在不同的系统中,如回测平台.策略平台等,有不同的实现和创建方法,但是接口都会保持一致,方便用户平滑切换系统. 如从TQu ...

  4. 1、回测平台搭建——思路

    什么是回测平台? 最简单来说,写好了一个策略,从一个txt中读取了数据,放到策略中,得到了一个最后的收益,这个程序就是一个回测平台,用回测平台来概括虽然有些过,但是这就是一个回测平台的雏形. 升级-- ...

  5. 当前时间加30分钟_一位短线高手的复盘手记:尾盘预判第二天涨跌,“收盘前30分钟”才是全天最佳买卖黄金时间!...

    (本文由公众号越声攻略(yslc688)整理,仅供参考,不构成操作建议.如自行操作,注意仓位控制和风险自负.) 投资者若能掌握大盘企稳时的短线选股技巧,就可以在未来行情的发展中游刃有余.短线炒股应该如 ...

  6. 量化回测平台|有现成的不用吗?如何利用聚宽平台回测交易策略

    导览 本文为掘金小册课程加推篇!小册还在持续加推中,敬请期待!!!目前已经加推了20节!!! 超值的43节课程!从目录就能看出来! 1-贯穿小册:Python金融数据分析实战型项目 2-前置基础:量化 ...

  7. 掘金量化回测平台 - 1

    掘金量化平台初探 python 量化分析包括:策略研发.策略回测.仿真交易.实盘交易.实盘盘后优化. 主要想使用掘金的平台来做策略回测和仿真交易两个环节的功能. 对比了下主流的云平台JoinQuant ...

  8. 利用米筐量化回测平台实行量化炒股

    1.主要属性 2.代码 # 可以自己import我们平台支持的第三方python模块,比如pandas.numpy等. import pandas as pd import numpy as np f ...

  9. win10下搭建zipline python3.5量化回测平台环境

    win10下搭建zipline python3.5量化回测平台 1.安装 Anaconda 1.1 下载Anconda 1.2 安装 1.3 Anaconda Prompt 1.4 检查安装 1.5 ...

最新文章

  1. Python爬虫入门教程 14-100 All IT eBooks多线程爬取
  2. 关于keil编译cortex-m3纯汇编时为什么问题使用align地址问题
  3. Git同时使用不同平台代码仓库
  4. 【C++ grammar】抽象、封装与this指针
  5. 微信小程序tabBar导航栏页和其他页执行onLoad与onShow时机;tabBar页获取不到参数问题;navigateTo跳转无效问题;onShow执行两次问题;
  6. Codeforces 471 D MUH and Cube Walls
  7. 数据科学 第 5 章 主成分分析(降维)、相关性
  8. 热力学与统计物理笔记(WIP)
  9. HTML 标签中的连续的英文折断
  10. 多元函数微分学之偏导数
  11. 性能工具之 Goreplay 安装及入门使用
  12. op07数据手册分析
  13. PMP备考错题集-模拟三
  14. 解决问题https访问http加载不出图片资源的顺便在给逻辑做个马杀鸡
  15. 王继伟-国产UMLMDA工具开发实践-UMLChina讲座-音频和幻灯
  16. mysql 概念与命令总结(贼全)
  17. IntellIJ IDEA导入项目后无法运行方法的解决方法!
  18. LXC、LXD、Docker的区别与联系(by quqi99)
  19. 查看话单日志和性能日志有效信息的流程
  20. vmos切换安卓版本_虚拟大师VMOS——手机里的quot;虚拟机quot;

热门文章

  1. 银行联行号cnasp
  2. 瑞士央行:加密货币对于发行国家数字货币过于“原始”
  3. 一份很良心的JAVA内功修炼手册No.31
  4. 2022年辐射加热器元件市场前景分析及研究报告
  5. FFmpeg RTMP转RTP
  6. supervise 守护进程
  7. json解析函数c语言,C语言解析json类型数据
  8. 文档-操作手册与用户手册的区别
  9. python画图在哪里_如何在python里画图
  10. pycharm使用中的快乐与懵逼