以文本方式查看主题 - 金字塔客服中心 - 专业程序化交易软件提供商 (http://weistock.com/bbs/index.asp) -- 公式模型编写问题提交 (http://weistock.com/bbs/list.asp?boardid=4) ---- 请问,这样的平仓条件如何编写? (http://weistock.com/bbs/dispbbs.asp?boardid=4&id=86620) |
-- 作者:青风 -- 发布时间:2015/10/26 16:13:22 -- 请问,这样的平仓条件如何编写? 以做多为例。
平多条件1:至少要在开多仓一根K线以后才执行平仓操作(貌似图表程序化都是在走完一根K线以后,但我的程序出现了在同一根K线上同时开多仓和平多仓的情况,所以,我加入了这一个条件,但即使我加入了这个条件,在同一根K线上同时开平仓的情况还是存在,我已经头大了。)。 请老师帮助解决这一问题,谢谢。 |
-- 作者:jinzhe -- 发布时间:2015/10/26 16:15:27 -- 把你全部的代码都贴一下,我本地看看信号 |
-- 作者:青风 -- 发布时间:2015/10/26 16:25:10 -- //声明变量 MAB:=EMA(MA(CLOSE,6),6/4);//为避免太频繁,略做平滑处理。 KCT:=ENTERBARS; //交易信号 MABTOUP:=MAB>REF(MAB,1) AND REF(MAB,1)<=REF(MAB,2); MABTODOWN:=MAB<REF(MAB,1) AND REF(MAB,1)>=REF(MAB,2); KD:= MABTOUP; //开多条件 PD:=KCT >=1 AND (ENTERPRICE-l>=6 or h-ENTERPRICE>=3); //平多条件 {固定止盈止损,或者符合KK时平掉} KK:=MAG<REF(MAG,1) AND MABTODOWN; //开空条件 PK:=KCT >=1 AND (h-ENTERPRICE>=6 or ENTERPRICE-l>=3); //平空条件 {固定止盈止损处理,或者符合KD时平掉。} 平空:SELLSHORT(PK OR KD,0,MARKET); //平空信号 开多:BUY(KD AND HOLDING=0,1,MARKET); //开多信号 平多:SELL(PD OR KK,0,MARKET); //平多信号 开空:BUYSHORT(KK AND HOLDING=0,1,MARKET); //开空信号 持仓:holding,linethick0; 资产:asset linethick0; 可用现金:cash(0),linethick0; <!--EndFragment--> |
-- 作者:青风 -- 发布时间:2015/10/26 16:27:10 -- 以上是用在一分钟图上的日内交易策略。 我同时在止盈止损里设置了止损6点,止盈3点。 所以,我在程序里加入了h-ENTERPRICE>=6 or ENTERPRICE-l>=3这样的条件。 为的是防止实际平仓情况已经发生,而图表程序却还没有平仓信号。 |
-- 作者:jinzhe -- 发布时间:2015/10/26 16:34:16 -- mag未定义 |
-- 作者:青风 -- 发布时间:2015/10/26 16:49:04 -- //声明变量 MAB:=EMA(MA(CLOSE,6),6/4);//为避免太频繁,略做平滑处理。 KCT:=ENTERBARS; //交易信号 MABTOUP:=MAB>REF(MAB,1) AND REF(MAB,1)<=REF(MAB,2); MABTODOWN:=MAB<REF(MAB,1) AND REF(MAB,1)>=REF(MAB,2); KD:= MABTOUP; //开多条件 PD:=KCT >=1 AND (ENTERPRICE-l>=6 or h-ENTERPRICE>=3); //平多条件 {固定止盈止损,或者符合KK时平掉} KK:=MABTODOWN; //开空条件 PK:=KCT >=1 AND (h-ENTERPRICE>=6 or ENTERPRICE-l>=3); //平空条件 {固定止盈止损处理,或者符合KD时平掉。} 平空:SELLSHORT(PK OR KD,0,MARKET); //平空信号 开多:BUY(KD AND HOLDING=0,1,MARKET); //开多信号 平多:SELL(PD OR KK,0,MARKET); //平多信号 开空:BUYSHORT(KK AND HOLDING=0,1,MARKET); //开空信号 持仓:holding,linethick0; 资产:asset linethick0; 可用现金:cash(0),linethick0; <!--EndFragment--> |
-- 作者:青风 -- 发布时间:2015/10/26 16:49:27 -- 原程序一大堆,这是简略版,但问题依然存在。 |
-- 作者:jinzhe -- 发布时间:2015/10/26 16:54:03 -- 书写顺序的问题,enterbars在前,buy在后面,也就是enterbars获取的是前一次开仓的值,而不是后面buy之后的值 |
-- 作者:jinzhe -- 发布时间:2015/10/26 16:55:39 -- MAB:=EMA(MA(CLOSE,6),6/4);//为避免太频繁,略做平滑处理。 KCT:=ENTERBARS;
MABTOUP:=MAB>REF(MAB,1) AND REF(MAB,1)<=REF(MAB,2); MABTODOWN:=MAB<REF(MAB,1) AND REF(MAB,1)>=REF(MAB,2);
KD:= MABTOUP; //开多条件 PD:= (ENTERPRICE-l>=6 or h-ENTERPRICE>=3); //平多条件 {固定止盈止损,或者符合KK时平掉} KK:=MABTODOWN; //开空条件 PK:=(h-ENTERPRICE>=6 or ENTERPRICE-l>=3); //平空条件 {固定止盈止损处理,或者符合KD时平掉。}
开多:BUY(KD AND HOLDING=0 ,1,MARKET); //开多信号 平多:SELL((PD OR KK) and enterbars>0,0,MARKET); //平多信号 开空:BUYSHORT(KK AND HOLDING=0,1,MARKET); //开空信号 平空:SELLSHORT((PK OR KD) and enterbars>0,0,MARKET); //平空信号 持仓:holding,linethick0; 资产:asset linethick0; 可用现金:cash(0),linethick0;
写在平仓语句里面就好了 |
-- 作者:青风 -- 发布时间:2015/10/26 17:03:56 -- 试了,还是不行。 |