以文本方式查看主题 - 金字塔客服中心 - 专业程序化交易软件提供商 (http://weistock.com/bbs/index.asp) -- 公式模型编写问题提交 (http://weistock.com/bbs/list.asp?boardid=4) ---- 请问如果在条件满足时读到某一个指标值,而这个值要在程序运行过程中另一条件满足时保持不变。 (http://weistock.com/bbs/dispbbs.asp?boardid=4&id=66686) |
-- 作者:ZHUZHU -- 发布时间:2014/6/27 11:13:51 -- 请问如果在条件满足时读到某一个指标值,而这个值要在程序运行过程中另一条件满足时保持不变。 如我现在有KD条件,PD条件和MA30指标 现在我要在KD条件时,读MA30值,且MA30值要是KD条件刚满足时的MA30值,PD条件满足时MA30值要不变的,PD条件时MA30值置0,
|
-- 作者:FexTel -- 发布时间:2014/6/27 11:16:34 -- 可以学习使用下VARIABLE等全局变量 例如: VARIABEL:MA30=0;
IF KD THEN MA30:=
IF PD THEN MA30:=0; |
-- 作者:ZHUZHU -- 发布时间:2014/6/27 12:06:27 -- VARIABLE:KDact=0,KKact=0,KDA1=0,KKB1=0; IF KD THEN KDact:=act; IF KK THEN KKact:=act; IF KD THEN KDA1:=A1; IF KK THEN KKB1:=B1; IF PD THEN KDact:=0; IF PK THEN KKact:=0; IF PD THEN KDA1:=0; IF PK THEN KKB1:=0; 是不是这样, 可是KDact,KKact,KDA1,KKB1运行过程中是变化的,我想要的是条件满足时固定下来呀
|
-- 作者:FexTel -- 发布时间:2014/6/27 13:21:37 -- 1,某个条件满足不就会赋值,赋值户不就固定了么!您简单的来个例子看下 [此贴子已经被作者于2014/6/27 13:22:15编辑过]
|
-- 作者:ZHUZHU -- 发布时间:2014/6/27 14:02:21 -- 试下这个类子,开仓后ACT是变动的,而不是开仓时候的ACT值 VARIABLE:KDact=0,KKact=0,KDA1=0,KKB1=0; k1:=100; act:=k1*STKINDI(\'\',\'bias.bais1\',0,1,-1),LINETHICK0; MA30:=MA(act,30),LINETHICK0; KD:abs(act)>abs(MA30) and act>0 AND ma30>0 ,NOAXIS; //开多条件 PD:=abs(act)<abs(MA30) ,NOAXIS;//平多条件 KK:abs(act)>abs(MA30) and act<0 AND ma30<0,NOAXIS; //开空条件 PK:=abs(act)<abs(MA30) ,NOAXIS;//平空条件 IF KD THEN KDact:=act; IF KK THEN KKact:=act; IF PD THEN KDact:=0; IF PK THEN KKact:=0; 1KDact:KDact,LINETHICK0;//满足KD条件时的act值 1KKact:KKact,LINETHICK0;//满足KK条件时的act值 开多:BUY( KD AND HOLDING=0 ,1,THISCLOSE);//开多信号 开空:BUYSHORT(KK AND HOLDING=0 ,1,THISCLOSE);//开空信号 平多:SELL(PD,abs(HOLDING),THISCLOSE);//平多信号 平空:SELLSHORT(PK ,abs(HOLDING),THISCLOSE) ;//平空信号 |
-- 作者:yukizzc -- 发布时间:2014/6/27 14:09:40 -- IF KD THEN KDact:=act; //你KD条件一直有成立,你这里加个holding的条件保持和你开仓语句的条件一样去看看
|
-- 作者:ZHUZHU -- 发布时间:2014/6/27 14:29:11 -- 是的,因为我的开仓条件一直成立,所以他才变,但我要固定他,是不是可以这样处理: 条件成立我就开始计数N,然后我再用KDact:=REF(act,N); 不知可否,这个条件成立时的计数怎么计?
|
-- 作者:yukizzc -- 发布时间:2014/6/27 14:43:32 -- 你在后面加个holding=0的判断条件不就好了,这样就保持和你开多信号一致。
|
-- 作者:ZHUZHU -- 发布时间:2014/6/27 15:31:12 -- 您这个做法只对单品种有效,如果对多品种,就没有作用,因为这时可能有的品种有,有的品种没有持仓 |
-- 作者:FexTel -- 发布时间:2014/6/27 15:36:08 -- 1,VARIABLE:A=0; MA30:MA(C,30);
IF 条件 then a:=MA30;
//方法是这样,关键在你条件的控制 |