以文本方式查看主题 - 金字塔客服中心 - 专业程序化交易软件提供商 (http://weistock.com/bbs/index.asp) -- 公式模型编写问题提交 (http://weistock.com/bbs/list.asp?boardid=4) ---- 如何跳过一次完整的买卖过程 (http://weistock.com/bbs/dispbbs.asp?boardid=4&id=168187) |
-- 作者:amao2003 -- 发布时间:2019/2/13 10:34:40 -- 如何跳过一次完整的买卖过程 代码如下: if c>ma(c,30) then buy if c<ma(c,30) then sell 我想跳过一次完整的买卖过程,即上两条语句,以前有使用 COUNT(c>ma(c,30),BARSLAST(c<ma(c,30)))>=2,但这只能跳过开仓信号,下一个周期还有c>ma(c,30)的话还会执行开仓,如何跳过一次完整的买卖过程呢,请老师帮助 |
-- 作者:FireScript -- 发布时间:2019/2/13 10:44:29 -- 你是要连续2次 跳过 c>ma(c,30)的开仓和c<ma(c,30)的平仓。 没能完全明白你这个需求到底是怎样的情况。可否再详细说明下。 |
-- 作者:amao2003 -- 发布时间:2019/2/13 10:55:33 -- 是的,跳过 c>ma(c,30)的开仓和c<ma(c,30)的平仓,1次就行,谢谢老师 |
-- 作者:FireScript -- 发布时间:2019/2/13 11:09:29 -- 你的意思是上一次开平仓之后跳过中间一次 满足条件的开平仓吗。等到第三次满足c>ma(c,30)再开仓。 |
-- 作者:amao2003 -- 发布时间:2019/2/13 11:26:00 -- 是的,是这个意思,请老师帮助 |
-- 作者:FireScript -- 发布时间:2019/2/13 13:20:23 -- buycond:c>ma(c,30) and holding=0; sellcond:c<ma(c,30) and holding>0; buy(buycond and mod(count(buycond,0),2)=1,1,market); sell(sellcond and mod(count(buycond,0),2)=1,1,market); 这样试下吧。
|
-- 作者:amao2003 -- 发布时间:2019/2/20 15:21:56 -- 老师,我试了这个代码不行,我再跟您说一下我的想法:在一次交易完成(即平仓后)获得很大收益比如1万元,我不想进行在这后面的交易(开仓+平仓),我的代码如下,但实际执行的话没有任何交易发生,该如何实现呢? n:=numprofit(1); m:=ma(c,30); buycond:=cross(c,m); sellcond:=cross(m,c); if buycond and mod(count(buycond,barslast(n>10000)),2)=1 then buy(holding=0,1,limitr,close); if sellcond and mod(count(sellcond,barslast(n>10000)),2)=1 then sell(1,0,limitr,close); |
-- 作者:FireScript -- 发布时间:2019/2/20 15:52:59 -- n:numprofit(1); m:=ma(c,30); buycond:cross(c,m); sellcond:=cross(m,c); mark:if(n>100,1,0); len:BARSLAST(mark=0); if buycond and (mod(count(buycond,len),2)=0 or n<=0) then buy(holding=0,1,limitr,close); if sellcond then sell(1,0,limitr,close); 这样试下。 主要numprofit(1)一开始是0反倒限制了交易。
|