以文本方式查看主题

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

--  作者:听涛
--  发布时间:2015/11/7 10:46:58
--  [求助]程序调用问题
看了很久以前的帖子和函数说明 搞不清有疑问 请老师以实例解释一下

#
STKINDI
STKINDIEX
上述3者的区别

请老师用macd指标的跨周期调用解释一下

macd函数有3个值 diff dea 和macd值

我自定义交易周期为8min 在此周期中的macd对应值与下列夸周期值进行比较

3min 5min 10min(因为cyc要使用自定义分钟)15min

设      8min周期的变量为 diff dea 和 macd
         3min周期的变量为 diff3 dea3 和macd3
         5min周期的变量为 diff5 dea5 和macd5
         10min周期的变量为 diff10 dea10 和macd10
         15min周期的变量为 diff15 dea15 和macd15

   我希望能在程序中 随时调用这些值 
例如 every(macd3>ref(macd3,1),5);//3min周期macd值连续5周期上涨
       diff5>0 & diff5>=hhv(diff5,5);//5min周期diff值在0轴之上,且是5周期最大
       macd10>0;//10min周期处于涨势
       diff15>0 & macd15>0 & macd15<10;// 15min周期 diff在0轴上且macd在0-10之间

请您结合实例帮我解释一下 谢谢 
例子中没有设计dea的情况 就不要了 两个变量估计能够让我举一反三了


--  作者:jinzhe
--  发布时间:2015/11/9 8:57:08
--  

在系统系统自带的MACD代码最后面加上下面的这4句话

c1:every(macd1>ref(macd1,1),5);//3min周期macd值连续5周期上涨

c2:diff>0 & diff>=hhv(diff,5);//5min周期diff值在0轴之上,且是5周期最大
c3:macd1>0;//10min周期处于涨势
c4:diff>0 & macd1>0 & macd1<10;// 15min周期 diff在0轴上且macd在0-10之间
 
用户先自己尝试一下,用stkindi引用 3分钟周期上C1,5分钟周期上的C2,10分钟周期上的C3,15分钟周期上的C4

--  作者:听涛
--  发布时间:2015/11/9 9:37:32
--  
以下是引用jinzhe在2015/11/9 8:57:08的发言:

在系统系统自带的MACD代码最后面加上下面的这4句话

c1:every(macd1>ref(macd1,1),5);//3min周期macd值连续5周期上涨

c2:diff>0 & diff>=hhv(diff,5);//5min周期diff值在0轴之上,且是5周期最大
c3:macd1>0;//10min周期处于涨势
c4:diff>0 & macd1>0 & macd1<10;// 15min周期 diff在0轴上且macd在0-10之间
 
用户先自己尝试一下,用stkindi引用 3分钟周期上C1,5分钟周期上的C2,10分钟周期上的C3,15分钟周期上的C4

不明白 
这几个条件都是随机假设的 如果直接在系统macd上修改 条件变量C1-C4怎么用?

在文华上是用
#import 【周期,被调用指标名字】as 新变量名;
在新的程序下,调用不同周期不同指标的参数 直接赋值即可
以下是文华的
#IMPORT[MIN,10,MACD] AS VAR1
DIFF10:VAR1.DIFF;
D10:VAR1.DEA;
M10:VAR1.MACD;
上述程序中我可以随时使用diff10 d10 m10进行条件处理
请您帮我编译成金字塔的 




--  作者:听涛
--  发布时间:2015/11/9 9:40:29
--  
jinzhe老师 请您帮我写一个完整的例子 仔细理解 看说明书要是都能看懂那就不需要老师对吧

这个跟懒不懒没关系的 就是需要一个相对完整的程序 然后才能体会语法和语境

--  作者:jinzhe
--  发布时间:2015/11/9 9:59:51
--  

就如同我上面所说的,

现在原来的代码里面添加C1-C4这4句话

 

 

然后要调用就重新建一个指标

写下面的代码:

条件1:stkindi(\'\',\'macd.c1\',0,17);

条件2:stkindi(\'\',\'macd.c2\',0,2);

条件3:stkindi(\'\',\'macd.c3\',0,18);

条件4:stkindi(\'\',\'macd.c4\',0,3);

[此贴子已经被作者于2015/11/9 10:00:04编辑过]

--  作者:听涛
--  发布时间:2015/11/9 10:16:48
--  
以下是引用jinzhe在2015/11/9 9:59:51的发言:


然后要调用就重新建一个指标

写下面的代码:

条件1:stkindi(\'\',\'macd.c1\',0,17);

条件2:stkindi(\'\',\'macd.c2\',0,2);

条件3:stkindi(\'\',\'macd.c3\',0,18);

条件4:stkindi(\'\',\'macd.c4\',0,3);

[此贴子已经被作者于2015/11/9 10:00:04编辑过]
这样我就明白了。原来是把比较或者过滤条件列入原来指标,然后直接调用。
但是是问题就来了,为什么呢?

具体设计一下环境:
MACD指标 有三个变量DIFF DEA & MACD
新程序XXX要调用MACD中的三个变量实现过滤条件

这个过滤或者比较条件的位置,放在原始指标里和放在新指标里实现后结果是一样的
例如  c1:every(macd1>ref(macd1,1),5);//3min周期macd值连续5周期上涨
第一种情况 
把C1条件写入MACD指标
XXX中以stkindi(\'\',\'macd.c1\',0,17);调用
第二种情况
XXX中以xxx1:stkindi(\'\',\'macd.macd\',0,17);调用macd值
c1:every(xxx1>ref(xxx1,1),5);//实现过滤条件

我理解是因为执行效率问题吗?还是其他的原因请老师解释一下






--  作者:jinzhe
--  发布时间:2015/11/9 10:22:26
--  
第二种只适用于引用当前周期的数据,第一种可以任意周期
--  作者:听涛
--  发布时间:2015/11/9 10:31:48
--  
哦 如果文华的这种条件应该怎么实现呢?
#IMPORT[MIN,5,MACD] AS VAR1 //调用指标名称为MACD的指标 周期为5分钟
DIFF5:VAR1.DIFF;
D5:VAR1.DEA;
M5:VAR1.MACD;

#IMPORT[MIN,10,MACD] AS VAR1 //调用指标名称为MACD的指标 周期为10分钟
DIFF10:VAR1.DIFF;
D10:VAR1.DEA;
M10:VAR1.MACD;

#IMPORT[MIN,15,MACD] AS VAR1 //调用指标名称为MACD的指标 周期为15分钟
DIFF15:VAR1.DIFF;
D15:VAR1.DEA;
M15:VAR1.MACD;


当前周期是3分钟K线
一共4个不同周期的调用

新程序中 DIFF(当前周期) DIFF5(5分钟周期) DIFF10(10分钟周期) DIFF15(15分钟周期)
过滤条件cond1:DIFF>DIFF5 & DIFF5>DIFF10 & DIFF10>DIFF15;

请jinzhe老师用程序解释一下 如果周期太多请您简化

--  作者:jinzhe
--  发布时间:2015/11/9 10:49:28
--  

当前周期diff:stkindi(\'\',\'macd.diff\',0,datatype);

5分钟:stkindi(\'\',\'macd.diff\',0,2);

其他周期请按照函数说明自行修改周期参数