以文本方式查看主题

-  金字塔客服中心 - 专业程序化交易软件提供商  (http://weistock.com/bbs/index.asp)
--  公式模型编写问题提交  (http://weistock.com/bbs/list.asp?boardid=4)
----  根据股票某指标排序选股问题  (http://weistock.com/bbs/dispbbs.asp?boardid=4&id=145802)

--  作者:2879993977
--  发布时间:2017/1/3 15:31:03
--  根据股票某指标排序选股问题

麻烦各位老师帮我看下我的想写的根据股票的SmartQ(计算公式在第二个函数里)的大小,对深圳A股进行排序,选择最SmartQ最大的前20只股票进行买入的程序,

为什么图表回测始终没有成交的数据

 

 

 

//第一个函数DAYCOUNT,周期:日线,交易时间坐标

//DAYCOUNT记录当前为第几个交易日,每10个交易日重新循环一次
VARIABLE:DAYCOUNT=0;
DAYCOUNT:=DAYCOUNT+1;
IF DAYCOUNT>9 THEN BEGIN
   DAYCOUNT:=0;
END
NOWDAY: DAYCOUNT;

 

//第二个函数SmartMoney,周期:1分钟线,交易时间坐标


St: =ABS((CLOSE-OPEN)/OPEN)/SQRT(VOL)*100000;   //计算St因子

I: TODAYBAR;
VARIABLE:STI[240]=0;         //STI数组用来储存每一周期的St因子,下同
VARIABLE:VI[240]=0;
VARIABLE:CI[240]=0;
VARIABLE:VWAPsmart=0;        //初始化聪明钱成交量加权平均价VWAPsmart
VARIABLE:VWAPall=0;          //初始化所有交易成交量加权平均价VWAPall
VARIABLE:SUMQ=0;            
STI[I]:=St;                  //记录当前K线的St
VI[I]:=VOL;                  //记录当前K线的成交量
CI[I]:=CLOSE;                //记录当前K线的收盘价
DAYCOUNT: STKINDI(\'\',\'DAYROUNCOUNT.NOWDAY\',2,6,0);         //DAYCOUNT标记当前为第几个交易日,每10个交易日循环一次

IF I=240 THEN BEGIN
   FOR J=1 TO I DO
   BEGIN
   COUN[J]: =HOD2(STI,240,STI[J]);   //计算第J根K线的St在当前日的St中的排序,赋予COUN[J]
  
   IF COUN[J]<0.2*I THEN BEGIN
      VWAPsmart:= VWAPsmart+CI[J]*VI[J];    //计算St最大的前20%根K线的成交量加权平均价
      A: VWAPsmart;
   END
   VWAPall :=VWAPall+CI[J]*VI[J];    //计算所有SK线的成交量加权平均价
   B: VWAPall;
   END
   Q: VWAPsmart/VWAPall;             //当日的Q因子
  
   VWAPsmart:=0;                     //每日末重新清0
   VWAPall:=0;                       //每日末重新清0
  
   IF DAYCOUNT > 0 THEN BEGIN
     SUMQ:=SUMQ+Q;                   //前九个交易日的Q逐日累加,记为SUMQ
   END
   IF DAYCOUNT=0 THEN
   BEGIN
    SmartQ:SUMQ+Q;
    SUMQ:=0;                         //第十个交易日SUMQ重新清0
   END
END

 

//第三个函数TEST,做回测的函数。周期:1分钟线,交易时间坐标

I: TODAYBAR;
DAYCOUNT: STKINDI(\'\',\'DAYROUNCOUNT.NOWDAY\',0,6,0);


IF I=240 AND DAYCOUNT=0 THEN
BEGIN
   SELL(\'\',0,THISCLOSE);
END
IF I=240 AND DAYCOUNT=0 THEN
BEGIN
   BUY(SELFDATAS(\'SmartMoney\') < 21,1000,THISCLOSE);
END

 

自定义数据排序设置

 


此主题相关图片如下:7k`ez$xjweci{14bt%er7.png
按此在新窗口浏览图片

此主题相关图片如下:32fpghixa1%xxgp7{ddtltv.png
按此在新窗口浏览图片

--  作者:jinzhe
--  发布时间:2017/1/3 15:33:48
--  
你是要选股还是要图表回测?
--  作者:2879993977
--  发布时间:2017/1/3 15:35:07
--  
在这里,SmartQ只有在daycount=0,且K线在当日最后一根时才有值,(当然,实际上这一部分我应该要调整为下一交易日的第一根K线才对)
--  作者:2879993977
--  发布时间:2017/1/3 15:39:01
--  
图表回测
--  作者:2879993977
--  发布时间:2017/1/3 15:40:42
--  

图片点击可在新窗口打开查看此主题相关图片如下:c7$cxnpo~h@$(4`m6{1tf%3.png
图片点击可在新窗口打开查看
回测结果显示没有成交记录
--  作者:jinzhe
--  发布时间:2017/1/3 15:48:55
--  
自定义数据有值没?
--  作者:2879993977
--  发布时间:2017/1/3 15:53:01
--  

图片点击可在新窗口打开查看此主题相关图片如下:bxb479k}7`x_8nnrve6w@t.png
图片点击可在新窗口打开查看
这句话我没理解,是指自定义数据的时候还要自己再导入数据吗
--  作者:jinzhe
--  发布时间:2017/1/3 15:59:16
--  

点修改数据,随便找一只股票,看看该股票有没有对应的排序值


--  作者:2879993977
--  发布时间:2017/1/3 16:00:43
--  

老师,我点了几只股票,都没有排序值

该怎么处理


--  作者:jinzhe
--  发布时间:2017/1/3 16:16:00
--  

说明你的自定义数据代码并没有做排序,代码思路有问题,

你把代码应用到随便一只股票上,看看你要计算的值有没有输出值