以文本方式查看主题

-  金字塔客服中心 - 专业程序化交易软件提供商  (http://weistock.com/bbs/index.asp)
--  公式模型编写问题提交  (http://weistock.com/bbs/list.asp?boardid=4)
----  麻烦老师帮助修改指标  (http://weistock.com/bbs/dispbbs.asp?boardid=4&id=161990)

--  作者:muxia5568
--  发布时间:2018/3/12 9:50:54
--  麻烦老师帮助修改指标
这是在一分钟引用5分钟MA的均线指标,请老师改成30分钟引用60分钟周期的指标,谢谢老师!
M5:=IF(MOD(MINUTE,5)=0,CLOSE,0);
SUMMIN5MA4:=REF(SUM(M5,20),MOD(MINUTE,5));
IF MOD(MINUTE,5)>0 THEN BEGIN
MIN5MA5A:=(SUMMIN5MA4+CLOSE)/5;
END;
ELSE BEGIN
MIN5MA5B:="MA.MA1#MIN5";
END;

JG:IF(MOD(MINUTE,5)=0,MIN5MA5B,MIN5MA5A);


--  作者:FireScript
--  发布时间:2018/3/12 10:08:14
--  

可以引用指定周期的均线,但是是1分钟引用60分钟还是3 0分钟下引用60分钟 完全取决于你当前图表周期。

 

 

跨周期指标的引用 现在基本使用stk函数

比如,下面,stk第四个参数是调整引用的周期的,具体请参考stk函数说明。

STKINDI(\'\',\'MA.MA1\',0,5,0);//60分钟周期的均线ma1 这里的MA是系统自带的均线指标


--  作者:muxia5568
--  发布时间:2018/3/12 10:48:15
--  
我表述的不清楚。上面的指标也不对,重新说明一下;这个指标上在一分钟周期引用5分钟周期MA数据的,我想用在30分钟周期上引用60分钟周期数据,应该调整哪几个数字,请老师指点。谢谢!
M5:=IF(MOD(MINUTE,5)=0,CLOSE,0);
SUMMIN5MA4:=REF(SUM(M5,20),MOD(MINUTE,5));
IF MOD(MINUTE,20)>0 THEN BEGIN
MIN5MA5A:=(SUMMIN5MA4+CLOSE)/5;
END;
ELSE BEGIN
MIN5MA5B:="MA.MA1#MIN5";
END;

JG:IF(MOD(MINUTE,5)=0,MIN5MA5B,MIN5MA5A);


--  作者:FireScript
--  发布时间:2018/3/12 11:02:38
--  

调整这里的参数是不行的,这段代码的初始思路是什么?绝对不是只是用来一分钟引用五分钟数据的。


--  作者:muxia5568
--  发布时间:2018/3/12 11:52:02
--  
请老师看看,初始思路在这里,我经过验证是对的;http://www.weistock.com/bbs/dispbbs.asp?boardid=10&id=15388
--  作者:yuanman
--  发布时间:2018/3/12 14:13:07
--  
1分钟下取无未来数据的5分钟MA5均线算法实例  发帖心情 Post By:2012/8/22 15:53:56 [只看该作者

      鉴于许多人需要夸周期引用数据,尤其是小周期引用大周期的数据或者指标者居多,而通常情况下,这种小引大的方式容易出现未来数据,从而影响计算结果和条件判断,因此,我给出下面算法,大家可以验证一下,是否可以解决未来数据问题。


//利用下面算法可以解决在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";

[此贴子已经被作者于2012-10-29 9:40:29编辑过]


金字塔—专业程序化交易量化投资平台

客户服务部

-----------------------------------------------------------

欢迎您参加我公司的技术培训,具体培训需求请发邮件到

service@weistock.com

您的宝贵建议或者投诉,请发往邮箱:weiwei@weistock.com

[本帖被加为精华]


--  作者:FireScript
--  发布时间:2018/3/12 16:21:04
--  

A:(STKINDI(\'\',\'MA.MA1(4,10,20,60)\',0,5,-1)*4+c)/5;//引用60分钟线的4周期(偏移一位)的均值,结和当前小周期的收盘价计算五周期均值,原理和董小球的一致。
MA_60:if(ISLASTBAR,STKINDI(\'\',\'MA.MA1\',0,5,0),A);//如果是当前最新K,那就直接引用60分钟的均线,不需要偏移。

 

我这个处理对于历史K我依然是采取过去已经成形的四个60分钟K加上当前的一个30分钟K收盘价计算均值的。


--  作者:muxia5568
--  发布时间:2018/3/12 16:36:51
--  
就是我要的结果,您真棒!谢谢老师!