以文本方式查看主题 - 金字塔客服中心 - 专业程序化交易软件提供商 (http://weistock.com/bbs/index.asp) -- 公式模型编写问题提交 (http://weistock.com/bbs/list.asp?boardid=4) ---- 手数增加怎样写 (http://weistock.com/bbs/dispbbs.asp?boardid=4&id=88960) |
-- 作者:风中 -- 发布时间:2015/12/29 10:26:16 -- 手数增加怎样写 如果亏损,下次出现信号时候:亏损手数*2 |
-- 作者:jinzhe -- 发布时间:2015/12/29 10:28:12 -- 这个需要做全局变量来记录 首先定义初始手数为1手: variable:ss=1; 然后在平仓语句内判断盈亏,然后亏损之后就加倍手数: if 平多条件 and holding>0 then begin sell(1,0,market); if numprofit(1)<0 then ss:=ss*2; end
if 平空条件 and holding<0 then begin sellshort(1,0,market); if numprofit(1)<0 then ss:=ss*2; end
开仓语句里面的下单手数写ss即可 |
-- 作者:风中 -- 发布时间:2016/1/4 14:36:19 -- |
-- 作者:jinzhe -- 发布时间:2016/1/4 14:47:07 -- 是不是其他也有定义为ss的变量,那么改上面所有的ss即可,比如sss之类的, |
-- 作者:风中 -- 发布时间:2016/1/4 16:16:09 -- 可以了,但是没有在亏损后下次加仓 |
-- 作者:风中 -- 发布时间:2016/1/4 16:16:31 -- |
-- 作者:jinzhe -- 发布时间:2016/1/4 16:23:48 -- 不会这样的,请贴代码 |
-- 作者:风中 -- 发布时间:2016/1/5 13:36:26 -- DIFF :=EMA(CLOSE,S) - EMA(CLOSE,P); DEA :=EMA(DIFF,M); MACD :=2*(DIFF-DEA); 手数:=ss; //交易条件 开多平空条件:=CROSS(MACD,0);//开多平空条件 开空平多条件:=CROSS(0,MACD);//开空平多条件 //交易系统 平空:SELLSHORT(开多平空条件,手数,MARKET); 平多:SELL(开空平多条件,手数,MARKET); 开多:BUY(开多平空条件,手数,MARKET); 开空:BUYSHORT(开空平多条件,手数,MARKET); variable:ss=1; if CROSS(0,MACD) and holding>0 then begin sell(1,0,market); if numprofit(1)<0 then sss:=s*2; end if CROSS(MACD,0) and holding<0 then begin sellshort(1,0,market); if numprofit(1)<0 then sss:=s*2; end |
-- 作者:jinzhe -- 发布时间:2016/1/5 13:44:14 -- variable:sss=1; DIFF :=EMA(CLOSE,S) - EMA(CLOSE,P); |
-- 作者:风中 -- 发布时间:2016/1/5 13:58:21 -- 老师,我整理一下思路, 我的思路是,当MACD死叉的时候开多,金叉的时候开空, 开始自动化后,第一次出现信号后,开一手,盈利的话下次出现信号继续一手,亏损的话,在原来的手数基础上再加开上次手数的2倍, DIFF :=EMA(CLOSE,S) - EMA(CLOSE,P); DEA :=EMA(DIFF,M); MACD :=2*(DIFF-DEA); 手数:=ss; //交易条件 开多平空条件:=CROSS(MACD,0);//开多平空条件 开空平多条件:=CROSS(0,MACD);//开空平多条件 //交易系统 平空:SELLSHORT(开多平空条件,手数,MARKET); 平多:SELL(开空平多条件,手数,MARKET); 开多:BUY(开多平空条件,手数,MARKET); 开空:BUYSHORT(开空平多条件,手数,MARKET); |