以文本方式查看主题

-  金字塔客服中心 - 专业程序化交易软件提供商  (http://weistock.com/bbs/index.asp)
--  公式模型编写问题提交  (http://weistock.com/bbs/list.asp?boardid=4)
----  怎么样让特定数据不参与告诉的计算?  (http://weistock.com/bbs/dispbbs.asp?boardid=4&id=163774)

--  作者:wxx212
--  发布时间:2018/5/31 16:50:55
--  怎么样让特定数据不参与告诉的计算?
公式一:名称:一线一级

aa:=ma(c,100);
bb:=ma(c,20);

KD:=cross(c,bb) and c>=aa;          //开多条件
PD:=cross(aa,c);          //平多条件
KK:=cross(bb,c) and c<=aa;          //开空条件
PK:=cross(c,aa);          //平空条件
平空:SELLSHORT(PK,1,THISCLOSE);                  //平空信号
开多:BUY(KD AND HOLDING=0,1,THISCLOSE);          //开多信号
平多:SELL(PD,1,THISCLOSE);                       //平多信号
开空:BUYSHORT(KK AND HOLDING=0,1,THISCLOSE);     //开空信号
收益:asset/10000,noaxis,COLORMAGENTA ,LINETHICK6;

公式二:名称:一线2级
盈利2:STKINDI( \'\',\'一线一级.收益\',0,4),noaxis,COLORMAGENTA ,LINETHICK6;
RSV:=(盈利2-LLV(盈利2,9))/(HHV(盈利2,9)-LLV(盈利2,9))*100;
K:SMA(RSV,3,1);
D:SMA(K,3,1);
J:=3*K-2*D;

由于“盈利2”是引用同周期公式一中“收益”的数据,而“收益”是有一部分时间没有仓位的,在公式二中,这部分数据严重失真,怎么样才能够去掉这部分数据!!!

图片点击可在新窗口打开查看此主题相关图片如下:z755e3mstmodfg0cdm_2$g.png
图片点击可在新窗口打开查看


--  作者:wxx212
--  发布时间:2018/5/31 16:52:20
--  
由于“盈利2”是引用同周期公式一中“收益”的数据,而“收益”是有一部分时间没有仓位的,在公式二中,这部分数据参与到公式计算中,使计算结果(KDJ)严重失真,怎么样才能够去掉这部分数据!!!
--  作者:FireScript
--  发布时间:2018/5/31 17:10:19
--  
 最好的办法是在原先代码里面做过滤,判断下holding

result:if(holding=0,0,asset/10000);

最终引用,引用这个result

--  作者:wxx212
--  发布时间:2018/6/1 23:59:23
--  
    这样只是满足 不持仓的时候 RESULT 取0值。在公式二中,只是把不持仓的那段数据变成0,而这个“0”依然是参与到公式二的计算中去的!
我的意思是不持仓的时候KDJ不计算,分开的两段持仓时间内的“盈利”合并成连续计算数值,就像连续月份中的计算差不多(应该没有主力月份那么繁琐)或者像5分钟周期内出现封板情况的时候,把那些封板的数据直接去掉再计算KDJ图片点击可在新窗口打开查看一样。


--  作者:wenarm
--  发布时间:2018/6/3 21:15:10
--  
没办法,你要引用的数据属于序列变量,无法进行特定的过滤