以文本方式查看主题

-  金字塔客服中心 - 专业程序化交易软件提供商  (http://weistock.com/bbs/index.asp)
--  高级功能研发区  (http://weistock.com/bbs/list.asp?boardid=5)
----  1分钟调用TICK数据  (http://weistock.com/bbs/dispbbs.asp?boardid=5&id=56616)

--  作者:deni977
--  发布时间:2013/9/13 14:15:21
--  1分钟调用TICK数据
 在1分钟周期图表下,如何查看当前时间点过去的10个TICK?用什么函数?用VBA可以实现吗?请高手指点为盼。

--  作者:rushtaotao
--  发布时间:2013/9/16 9:44:36
--  
用STKINDI方法
--  作者:deni977
--  发布时间:2013/9/16 23:06:12
--  

我用

STKINDI的方法,或者是callstock 的方法,存在2个问题:

 

1、电脑在接收行情的时候,非常卡,简直是鼠标都不能动

2、在图表历史回测上,只能调用到当天14:00后的数据,再往前的数据调取不到,不知道什么原因??开始以为是数据不全,可以不全数据,或者切换到分笔数据查看,数据是完整的。


--  作者:王锋
--  发布时间:2013/9/17 0:09:01
--  

要看你想取过来做什么了,如果盘中交易的话取最新的10笔比较容易,如果你要历史回测的话,很难


--  作者:deni977
--  发布时间:2013/9/17 6:23:41
--  

先实现简单的吧,就取来盘中交易的就好了,如何实现电脑不卡?我现在用CALLSTOCK函数,调取数据,盘中时卡的鼠标无法动作,行情基本慢了3-5秒,已经没有意义,改成调取5秒数据,也是一样。调取和实现的部份代码如下:

 

(只做股指,程序是调取多秒-5秒过去的11个最高值)

 

TBUF:DYNAINFO(207)-(INTPART(DYNAINFO(207)/100)) *100,nodraw; //当前秒数

 

if (holding <=0 && enterbars >= 1  ) then begin  //调取5秒周期的过去11个周期的最高值
  Fh0:callstock(\'IF00\',vthigh,12,0),nodraw; 
  Fh1:callstock(\'IF00\',vthigh,12,-1),nodraw;  
  Fh2:callstock(\'IF00\',vthigh,12,-2),nodraw;
  Fh3:callstock(\'IF00\',vthigh,12,-3),nodraw;
  Fh4:callstock(\'IF00\',vthigh,12,-4),nodraw;
  Fh5:callstock(\'IF00\',vthigh,12,-5),nodraw;
  Fh6:callstock(\'IF00\',vthigh,12,-6),nodraw;
  Fh7:callstock(\'IF00\',vthigh,12,-7),nodraw;
  Fh8:callstock(\'IF00\',vthigh,12,-8),nodraw;
  Fh9:callstock(\'IF00\',vthigh,12,-9),nodraw;
  Fh10:callstock(\'IF00\',vthigh,12,-10),nodraw;
  Fh11:callstock(\'IF00\',vthigh,12,-11),nodraw;  
  
  if barstatus = 2 then begin                                        //判断当前1分钟有多少次5秒周期最高值突破指标 Preac8a
     if Fh0>Preac8a && Tbuf>=5 then Hcount:=(Hcount+1);
     if Fh1>Preac8a && Tbuf>=10  then Hcount:=(Hcount+1);
     if Fh2>Preac8a && Tbuf>=15  then Hcount:=(Hcount+1);
     if Fh3>Preac8a && Tbuf>=20  then Hcount:=(Hcount+1);
     if Fh4>Preac8a && Tbuf>=25  then Hcount:=(Hcount+1);
     if Fh5>Preac8a && Tbuf>=30  then Hcount:=(Hcount+1);
     if Fh6>Preac8a && Tbuf>=35 then Hcount:=(Hcount+1);
     if Fh7>Preac8a && Tbuf>=40 then Hcount:=(Hcount+1);
     if Fh8>Preac8a && Tbuf>=45 then Hcount:=(Hcount+1);
     if Fh9>Preac8a && Tbuf>=50 then Hcount:=(Hcount+1);
     if Fh10>Preac8a && Tbuf>=55  then Hcount:=(Hcount+1);  
   end 
 end

 

高突破次数:Hcount,nodraw;

 

   …… (省去中间部份代码)

 

 if 平空条件 then begin 

    逃空:SELLSHORT(BARSTATUS<2 && HOLDING<0  ,ORDVOL,limitr,PKprice);   
    SELLSHORT(BARSTATUS=2 && HOLDING<0 && Tbuf>5 && Hcount > 2,ORDVOL,limitr,PKprice);   //实盘中,如果5秒最高突破2次则平空
    DAYTRADE:=(DAYTRADE + 1);  //统计当天交易次数

end

 

原理:作用在行情1分钟固定1秒轮询方式下,做空时,5秒周期最低价向下突破2次就立刻平仓。

 

请指点,如何修正,电脑才不卡?(注意:电脑已经设置只有360内存周期,只连接唯一的期货行情,图表仅有唯一框架,没有附图,程序也做了相应的优化 )

 

 

 


 


--  作者:deni977
--  发布时间:2013/9/17 6:30:38
--  
另外,很不明白,历史回测的时候,只能调取到最后几十根K线的数据5秒数据,再往前就调取不到了(必须缩小图形显示才回多一点),金字塔是什么设计原理?
--  作者:fly
--  发布时间:2013/9/18 9:11:08
--  

1.参与运算的数据多,可考虑使用  快速 将使用的数据周期缩短

 

详见此帖方法3 http://www.weistock.com/bbs/dispbbs.asp?boardid=4&Id=3286

 

2.秒及分钟以上K线,历史回测的就是图上显示的数据

   请参考此处16楼回帖http://www.weistock.com/bbs/dispbbs.asp?boardid=4&id=55104&authorid=0&page=0&star=2

[此贴子已经被作者于2013/9/18 9:48:37编辑过]

--  作者:王锋
--  发布时间:2013/9/18 10:55:16
--  
假期给你做个例子
--  作者:deni977
--  发布时间:2013/9/18 12:10:09
--  
深度感谢和期盼中!
--  作者:王锋
--  发布时间:2013/9/19 22:33:04
--  

首先建立一个自定义函数

 

Function LOADDATADEMO(Formula,N)
    Set Grid = Formula.ParentGrid
    Set MinuteData = Grid.GetMinuteData
   
    if MinuteData.Count >= N then
        LOADDATADEMO=MinuteData.NewPrice(MinuteData.Count-N)
    else
        LOADDATADEMO=-1 \'没有这么多数据返回-1
    End if

End Function

然后PEL公式这样调用即可

 

//只有在最后周期才进行调用的
if ISLASTBAR THEN
BEGIN
dd1:LOADDATADEMO(1);//调取最近1笔
dd10:LOADDATADEMO(10);//调取最近10笔
END;

[此贴子已经被作者于2013/9/19 22:34:11编辑过]