以文本方式查看主题

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

--  作者:dsyang
--  发布时间:2013/12/31 15:33:26
--  [求助]stkindi调用问题
1.问题1
sp1:=\'cu1403\'; 
INPUT:dotime(2);
macd_sp1:=stkindi(sp1,\'macd.macd1\',0,dotime,0);
macd_sp1_1:=stkindi(sp1,\'macd.MACD1\',0,dotime,-1);
macd_sp1_2:=stkindi(sp1,\'macd.MACD1\',0,dotime,-2);
 我 的目地是调用,sp1(商品1,可自己选择代码),想取到macd数据5分钟,最后一根,倒数第二根,倒数第三根 的macd.macd1的数据
但是 输出来变成
2013/12/31 15:26:47  -0.#QNAN
2013/12/31 15:26:47  -1.#QNAN
2013/12/31 15:26:47  -0.#QNAN
这个是怎么回事。很多时候 都是 #QNAN
1.问题2
上面的最后一个参数0,-1,-2  是不是表示最后一根,倒数第二根,倒数第三根。
如果是新的一根K线出来,是不是 还是一样表示最后一根,倒数第二根,倒数第三根。

--  作者:jinzhe
--  发布时间:2013/12/31 15:40:44
--  

输出代码写错了,你输出代码是怎么写的?


--  作者:dsyang
--  发布时间:2013/12/31 15:53:12
--  
MSGOUT(1,numtostr(macd_sp1_1,5));
MSGOUT(1,numtostr(macd_sp1,5));
MSGOUT(1,numtostr(macd_sp1_2,5));
输出 要看数值是不是我 macd 取出来的值

--  作者:dsyang
--  发布时间:2013/12/31 15:53:44
--  
上面的最后一个参数0,-1,-2  是不是表示最后一根,倒数第二根,倒数第三根。
如果是新的一根K线出来,是不是 还是一样表示最后一根,倒数第二根,倒数第三根。

--  作者:王锋
--  发布时间:2013/12/31 15:58:20
--  

sp1:=\'cu1403\';

金字塔是没有这种品种代码的,你可以按下F2,看看动态牌上的代码是什么样的格式


--  作者:RogarZ
--  发布时间:2013/12/31 17:08:07
--  
仔细阅读下 函数说明  参照函数说明的写法 书写
--  作者:dsyang
--  发布时间:2014/1/2 12:05:59
--  

macd_sp1:=stkindi(sp1,\'macd.macd1\',0,dotime,0);
macd_sp1_1:=stkindi(sp1,\'macd.MACD1\',0,dotime,-1);
macd_sp1_2:=stkindi(sp1,\'macd.MACD1\',0,dotime,-2);
这个取值的问题,就是要把数据窗口打开才能正确显示,真的太不爽了。如果没有打开数据窗口就显示乱码。这个软件真的要优化一下。我一下子要取5个或10个商品那要打开10个窗口。
把这里面的数据 代入我的定定义函数,算出来的值,都是0,怎么回事啊!我一般用逐K线模式。序列模拟试试也是一样的结果!
csp1:=checkmacd(macd_sp1,macd_sp1_1,macd_sp1_2);
MSGOUT(1,numtostr(csp1,2));
值都是0 ,请问一下是什么问题啊!我都快搞崩溃了!

Function checkmacd(Formula,sn1,sn2,sn3)
    \'系统会在逐K线模式解释公式时的每个周期都会调用此函数一遍,因此设计时应该注重程序的执行效率,不要重复的执行一些没必要的代码
    checkmacd=0
    if sn1>0 and sn2<0 then checkmacd=1
    if sn1>0 and sn2>0 and sn3<0 then checkmacd=1
    if sn1<0 and sn2>0 then checkmacd=-1
    if sn1<0 and sn2<0 and sn3>0 then checkmacd=-1
    

End Function


--  作者:jinzhe
--  发布时间:2014/1/2 13:08:28
--  

sp1:=\'cu1403\'; 

改成

sp1:=\'cu03\';


--  作者:dsyang
--  发布时间:2014/1/2 14:21:31
--  
这个早改了。数据也能取得到了

sp1:=\'cu1403\'; 

改成

sp1:=\'cu03\';


--  作者:dsyang
--  发布时间:2014/1/2 14:22:24
--  
现在是这个问题了!


macd_sp1:=stkindi(sp1,\'macd.macd1\',0,dotime,0);
macd_sp1_1:=stkindi(sp1,\'macd.MACD1\',0,dotime,-1);
macd_sp1_2:=stkindi(sp1,\'macd.MACD1\',0,dotime,-2);
这个取值的问题,就是要把数据窗口打开才能正确显示,真的太不爽了。如果没有打开数据窗口就显示乱码。这个软件真的要优化一下。我一下子要取5个或10个商品那要打开10个窗口。
把这里面的数据 代入我的定定义函数,算出来的值,都是0,怎么回事啊!我一般用逐K线模式。序列模拟试试也是一样的结果!
csp1:=checkmacd(macd_sp1,macd_sp1_1,macd_sp1_2);
MSGOUT(1,numtostr(csp1,2));
值都是0 ,请问一下是什么问题啊!我都快搞崩溃了!

Function checkmacd(Formula,sn1,sn2,sn3)
    \'系统会在逐K线模式解释公式时的每个周期都会调用此函数一遍,因此设计时应该注重程序的执行效率,不要重复的执行一些没必要的代码
    checkmacd=0
    if sn1>0 and sn2<0 then checkmacd=1
    if sn1>0 and sn2>0 and sn3<0 then checkmacd=1
    if sn1<0 and sn2>0 then checkmacd=-1
    if sn1<0 and sn2<0 and sn3>0 then checkmacd=-1
    

End Function