以文本方式查看主题

-  金字塔客服中心 - 专业程序化交易软件提供商  (http://weistock.com/bbs/index.asp)
--  公式模型编写问题提交  (http://weistock.com/bbs/list.asp?boardid=4)
----  为什么图上没有任何开平仓的成交显示  (http://weistock.com/bbs/dispbbs.asp?boardid=4&id=166529)

--  作者:627048
--  发布时间:2018/11/16 13:31:26
--  为什么图上没有任何开平仓的成交显示
//该模型为简单示范模型,用户需根据自己交易经验,修改完善后再实际应用!!!
//适用模式:“走完一根K线以后”
//若用户模式选为“固定时间间隔”,请将"交易条件"中的CLOSE改为OPEN,避免信号闪烁。
//
//中间变量
MA1:=MA(CLOSE,5);
MA2:=MA(CLOSE,10);
MA3:=MA(C,60);
S1:=MA1>REF(MA1,1);
X1:=MA1<REF(MA1,1);
S2:=MA1>REF(MA2,1);
X2:=MA1<REF(MA2,1);
S3:=MA3>REF(MA3,1);
X3:=MA3<REF(MA3,1);
手数:=ss;
//交易条件
开多平空条件:=S1  AND  S2  AND  S3  AND  S1>S2  AND  S2>S3 ;//开多平空条件
开空平多条件:=X1  AND   X2   AND  X3  AND  X1<X2  AND  X2<X3 ;//开空平多条件
//交易系统
平空:SELLSHORT(开多平空条件,手数,MARKET);
平多:SELL(开空平多条件,手数,MARKET);
开多:BUY(开多平空条件,手数,MARKET);
开空:BUYSHORT(开空平多条件,手数,MARKET);
当前持仓:HOLDING,COLORGRAY,LINETHICK0;
当前资产:ASSET,NOAXIS,COLORGRAY;
//注意交易系统先开后平的原则


--  作者:FireScript
--  发布时间:2018/11/16 13:37:32
--  
 S1  AND  S2  AND  S3  AND  S1>S2  AND  S2>S3

这个判断语句是永远不成立的。


这个判断语句是前后矛盾的,s1,s2,s3的值都只有0 和1 种情况,假设s1成立,s2,s3也成立相当于要求他们都是1,同时还要求1大于1,肯定不行的。


--  作者:627048
--  发布时间:2018/11/16 13:46:26
--  
我是这么认为的,S1是5日线上涨的,S2是10日线上涨的,S3是60日线上涨的
买入条件是,3条线都上涨,而且是正排列,这样写错了吗?那要怎么写?谢谢老师!


--  作者:FireScript
--  发布时间:2018/11/16 14:05:45
--  
 问题是你拿s1和s2对比是什么意思,也就是 s1>s2 和s2>s3。你要判断的是ma1 ma2 ma3 而不是s1 s2 s3.

--  作者:627048
--  发布时间:2018/11/16 14:19:12
--  
明白了,我把SI 改成M1后,还是没有成交信号?哪里又错了吗?另外,MA1>MA2  AND  MA2>MA3,我可以写MA1>MA2>MA3吗?
MA1:=MA(CLOSE,A);
MA2:=MA(CLOSE,B);
MA3:=MA(C,D);
S1:=MA1>REF(MA1,1);
X1:=MA1<REF(MA1,1);
S2:=MA1>REF(MA2,1);
X2:=MA1<REF(MA2,1);
S3:=MA3>REF(MA3,1);
X3:=MA3<REF(MA3,1);
手数:=ss;
//交易条件
开多平空条件:=S1  AND  S2  AND  S3  AND  MA1>MA2  AND  MA2>MA3 ;//开多平空条件
开空平多条件:=X1  AND   X2   AND  X3  AND  MA1<MA2  AND  MA2<MA3 ;//开空平多条件
//交易系统
平空:SELLSHORT(开多平空条件,手数,MARKET);
平多:SELL(开空平多条件,手数,MARKET);
开多:BUY(开多平空条件,手数,MARKET);
开空:BUYSHORT(开空平多条件,手数,MARKET);
当前持仓:HOLDING,COLORGRAY,LINETHICK0;
当前资产:ASSET,NOAXIS,COLORGRAY;
//注意交易系统先开后平的原则


--  作者:627048
--  发布时间:2018/11/16 14:23:11
--  
有信号了。谢谢!又出来一个问题,怎么样才能一开一平,而不是连续的开,连续的平。
--  作者:FireScript
--  发布时间:2018/11/16 14:28:42
--  
 做下调整:

平空:SELLSHORT(开多平空条件,手数,MARKET);
开多:BUY(开多平空条件 and holding=0,手数,MARKET);
平多:SELL(开空平多条件,手数,MARKET);
开空:BUYSHORT(开空平多条件 and holding=0,手数,MARKET);

1.一般代码顺序是先平后开
2.加一个holding=0的限制就可以限制连续开仓了。

--  作者:627048
--  发布时间:2018/11/16 15:55:16
--  
还有个问题,能不能,不要连续交易,平仓的同时又开仓?就是说可以加个止损或者止盈吗?一个开仓BUY,可以又多个SELL吗?这个有点搞,买开跟买平开,是一个函数吗?
另外,MA1>MA2  AND  MA2>MA3,我可以写MA1>MA2>MA3吗?

--  作者:FireScript
--  发布时间:2018/11/16 16:12:21
--  
 1.“不要连续交易” 这个是指开平错开不在一个K上?没太明白。我的理解是连续多个K,持续发出同样类型信号。比如连续的K连续开多这种。  可以添加单独的止损止盈代码,可用一个BUY 多个sell。

2.开多 开空 平多 平空 分别是四个函数。范例里面是反手,所以平多和开空条件一致而已。语句不一样的。

3.不可以 只能用and连接。