以文本方式查看主题

-  金字塔客服中心 - 专业程序化交易软件提供商  (http://weistock.com/bbs/index.asp)
--  公式模型编写问题提交  (http://weistock.com/bbs/list.asp?boardid=4)
----  如何引用周期,不产生未来,求编写代码  (http://weistock.com/bbs/dispbbs.asp?boardid=4&id=142031)

--  作者:xiangquzi
--  发布时间:2016/11/1 8:48:03
--  如何引用周期,不产生未来,求编写代码
要求:1编写15分钟引用60分钟周期 2 编写60分钟的ma5 ma10 20 40均线 最好参考以下方法,要求写出完整代码,多谢 鉴于许多人需要夸周期引用数据,尤其是小周期引用大周期的数据或者指标者居多,而通常情况下,这种小引大的方式容易出现未来数据,从而影响计算结果和条件判断,因此,我给出下面算法,大家可以验证一下,是否可以解决未来数据问题。 //利用下面算法可以解决在1分钟周期下引用5分钟MA均线产生未来数据的问题 //下面例子以在1分钟周期下引用5分钟周期下的MA5均线为例作为讲解,大家可以学习方法然后扩展到任意周期任意指标; { 算法的原理是:利用MA均线的算法可知,将前4根5分钟K线的收盘价相加,然后再加上当前1分钟的收盘价, 取得这5根K线收盘价总和之后,除以5,即是当根1分钟K线收盘那一时间点所对应的5分钟K线下的MA5均线。 这个算法解决了下面具体问题,通常情况下,例如13.53分这根K线,在1分钟周期下引用5分钟周期数据时,引用的其实是引用的13.55分 这个时间点的5分钟数据,这种情况下将出现未来数据,系统把54分和55分这两分钟的数据也归到均线中去。 所以利用下面的算法将不再产生未来数据。 } //取上4个五分钟整点K线的和,也就是求前4根5分钟K线收盘价的和; M5:=IF(MOD(MINUTE,5)=0,CLOSE,0); SUMMIN5MA4:=REF(SUM(M5,20),MOD(MINUTE,5)); //把四个5分钟K线的收盘价和当前1分钟的收盘价相加,再除以5,也就得出了此刻所对应的5分钟下的MA5了; //这里分两种情况,一种是对于5分钟整点位置的均线也就是相当于直接调用5分钟下的MA5;另一种是对于不 //能够被5整除的K线,我们应当按照把四个5分钟K线的收盘价和当前1分钟的收盘价相加再除以5的方法来计算; IF MOD(MINUTE,5)>0 THEN BEGIN MIN5MA5A:=(SUMMIN5MA4+CLOSE)/5; END; ELSE BEGIN MIN5MA5B:="MA.MA1#MIN5"; END; //JG就是我们所要求的无未来数据的5分钟下的MA5均价数值; JG:IF(MOD(MINUTE,5)=0,MIN5MA5B,MIN5MA5A); //我们来跨周期调用一下5分钟下的MA5均线看看是否相同;如果“MIN5MA5A”始终与“MIN5MA5对比”相等,则目的达到; MIN5MA5对比:"MA.MA1#MIN5";
--  作者:jinzhe
--  发布时间:2016/11/1 8:50:33
--  
好好的分个段, 你这发的没法看
--  作者:xiangquzi
--  发布时间:2016/11/1 9:03:36
--  
要求:1用15分钟引用60分钟周期 2 目的是要60分钟的ma5 ma10 20 40均线(避免小周期调用大周期出现未来现象) 最好参考以下方法,要求写出完整代码,多谢 方法: 鉴于许多人需要夸周期引用数据,尤其是小周期引用大周期的数据或者指标者居多,而通常情况下,这种小引大的方式容易出现未来数据,从而影响计算结果和条件判断,因此,我给出下面算法,大家可以验证一下,是否可以解决未来数据问题。 //利用下面算法可以解决在1分钟周期下引用5分钟MA均线产生未来数据的问题 //下面例子以在1分钟周期下引用5分钟周期下的MA5均线为例作为讲解,大家可以学习方法然后扩展到任意周期任意指标; 方法具体链接如下 http://www.weistock.com/bbs/dispbbs.asp?boardid=10&Id=15388
--  作者:xiangquzi
--  发布时间:2016/11/1 9:04:16
--  
谢谢,请编写源码
--  作者:xiangquzi
--  发布时间:2016/11/1 9:20:22
--  
请回复,谢谢,已经分段了,具体可以参考链接的方法,来实现,跨周期引用避免未来,谢谢,请写源码
--  作者:xiangquzi
--  发布时间:2016/11/1 9:32:28
--  
以下是引用jinzhe在2016-11-1 8:50:33的发言:
好好的分个段, 你这发的没法看

分好了,谢谢
--  作者:jinzhe
--  发布时间:2016/11/1 9:34:18
--  

m5:=stkindi(\'\',\'ma.ma1(5)\',0,5,-1);
c5:=callstock(stklabel,vtclose,5,-5);
s5:=m5*5-c5;
ma5:(s5+c)/5;

 

 

 

m10:=stkindi(\'\',\'ma.ma1(10)\',0,5,-1);
c10:=callstock(stklabel,vtclose,5,-10);
s10:=m10*5-c10;
ma10:(s10+c)/5;

 

 

举了两个例子,你要20就把上面代码里的5改成20,要40就把代码里面的5改成40


--  作者:xiangquzi
--  发布时间:2016/11/1 9:37:30
--  
多谢
--  作者:xiangquzi
--  发布时间:2016/11/1 10:45:35
--  
关于信号闪烁问题,不是收盘后消失未来问题,还想指令价成交,不想收盘价成交,又要求不出信号闪烁,有没有什么好办法,目前用了close 信号经常闪烁
--  作者:jinzhe
--  发布时间:2016/11/1 10:51:09
--  

走完k线下单,

用close同时用固定时间间隔那么是必定闪烁的