以文本方式查看主题

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

--  作者:yuanman
--  发布时间:2017/11/29 8:57:03
--  请老师帮助编写
请老师帮助,这个是阿火所编写的跨周期MACD指标,一分钟周期引用3分钟周期数据的。
EMA12: EMA(C,12),LINETHICK0;
EMA26: EMA(C,26),LINETHICK0;
RUNMODE:1;
EM1:=STKINDI(STKLABEL,\'MACD.EMA12\',0,17,-1);
EM2:=STKINDI(STKLABEL,\'MACD.EMA26\',0,17,-1);
EMA12:=EM1*11/13+C*2/13;
EMA26:=25/27* EM2 +C*2/27;
DIFF:EMA12-EMA26;
DEA1:=STKINDI(STKLABEL,\'MACD.DEA\',0,17,-1);
DEA:DEA1*4/5+DIFF/5;
我要在15分钟周期引用20分钟周期的MACD的数据,请老师给予帮助编写。谢谢

--  作者:wenarm
--  发布时间:2017/11/29 9:09:14
--  
EM1:=STKINDI(STKLABEL,\'MACD.EMA12\',0,11,-1);//在工具--选项--常规中把多分钟改成20.

--  作者:yuanman
--  发布时间:2017/11/30 9:25:01
--  
请教老师;1;其他的几处是否也要这样该?2;红色的-1是什么意思?是按前一根数据计算吗?3;老师说的“在工具--选项--常规中把多分钟改成20.”可我的软件运行的模型中还有其他跨周期数据(如40分钟等)如果按老师说的该了,会不会影响其他模型的运行?4;STKINDI函数中还有一个(21,自定义N分钟线)是否可以这样使用;DEA\';=STKINDI(\'\',\'MACD.DEA\',0,21,20);;和
EM1:=STKINDI(STKLABEL,\'MACD.EMA12\',0,11,-1);是不是一样效果?谢谢!

EMA12: EMA(C,12),LINETHICK0;
EMA26: EMA(C,26),LINETHICK0;
RUNMODE:1;
EM1:=STKINDI(STKLABEL,\'MACD.EMA12\',0,11,-1);
EM2:=STKINDI(STKLABEL,\'MACD.EMA26\',0,11,-1);
EMA12:=EM1*11/13+C*2/13;
EMA26:=25/27* EM2 +C*2/27;
DIFF:EMA12-EMA26;
DEA1:=STKINDI(STKLABEL,\'MACD.DEA\',0,11,-1);
DEA:DEA1*4/5+DIFF/5;

--  作者:FireScript
--  发布时间:2017/11/30 9:37:01
--  

1.其他几处也要这样修改。

2.-1是指引用的是上一个20分钟周期的数据的意思。

3.工具-选项-多分钟那个是会影响其他地方的多分钟引用的。

4.你说的那种直接指定周期数的操作是可以的,但是就没办法设置“-1”的偏移了。2种做法引用的数据周期一样,但是位置上不是同一个20分钟K了。


--  作者:yuanman
--  发布时间:2017/11/30 15:29:42
--  
谢谢老师的耐心解答!使用阿火的这种编写方法,其目的是想解决小周期引用大周期出现大信号漂移问题,如果加-1引用前一根的数据就得不偿失,更没有意义了,可不可以不加-1这样编写哪?
EMA12: EMA(C,12),LINETHICK0;
EMA26: EMA(C,26),LINETHICK0;
RUNMODE:1;
EM1:=STKINDI(STKLABEL,\'MACD.EMA12\',0,21,20;
EM2:=STKINDI(STKLABEL,\'MACD.EMA26\',0,21,20);
EMA12:=EM1*11/13+C*2/13;
EMA26:=25/27* EM2 +C*2/27;
DIFF:EMA12-EMA26;
DEA1:=STKINDI(STKLABEL,\'MACD.DEA\',0,21,20);
DEA:DEA1*4/5+DIFF/5;

还有调整了周期的话,下面这些数据都不用调整吗?
EMA12:=EM1*11/13+C*2/13;
EMA26:=25/27* EM2 +C*2/27;
DIFF:EMA12-EMA26;
DEA1:=STKINDI(STKLABEL,\'MACD.DEA\',0,21,20);
DEA:DEA1*4/5+DIFF/5;
谢谢!

--  作者:FireScript
--  发布时间:2017/11/30 15:41:13
--  

如果不进行偏移的话,那样写也是可以的。

EMA12:=EM1*11/13+C*2/13;

EMA26:=25/27* EM2 +C*2/27;
DIFF:EMA12-EMA26;
DEA1:=STKINDI(STKLABEL,\'MACD.DEA\',0,21,20);
DEA:DEA1*4/5+DIFF/5;

 

 

这里面ema的那个计算和周期都没关系。你只要改STKINDI里面的参数即可。


--  作者:yuanman
--  发布时间:2017/11/30 15:59:46
--  
如果可以这样用的话,数据是及时的了,还会不会出现信号漂移哪?
--  作者:FireScript
--  发布时间:2017/11/30 16:12:33
--  
小周期引用大周期漂移还是可能的,本质如此不好避免。
--  作者:yuanman
--  发布时间:2017/11/30 16:22:04
--  
1;这种写法和下面的这种写法有什么区别吗?2;还是目前金字塔无法解决跨周期漂移问题,不管用什么方法?谢谢
DEA10:=STKINDI(\'\',\'MACD.DEA\',0,18);
DIFF10:=STKINDI(\'\',\'MACD.DIFF\',0,18);
MACD10:=STKINDI(\'\',\'MACD.MACD1\',0,18);


--  作者:FireScript
--  发布时间:2017/11/30 16:42:07
--  

1. 常规的引用就是你上面9楼说的那种啊,不过你填18 好像是10分钟周期了。阿火的那个我没研究。你要问我差别我也没法说清楚。需要你自己实际多测试下效果了。

2.偏移不是无法解决。这东西本质就是如此啊。比如c>o这种判断条件,只有价格在动c就会变得,结果就会动,结果动肯定会涉及到偏移问题了啊。一根K线内o不会变,h,l是单向变。最高价刷新肯定只能是更高价了,最低价刷新肯定是更低的价格。一般在大周期引用小周期的漂移应该比小周期引用大周期严重点。