以文本方式查看主题
- 金字塔客服中心 - 专业程序化交易软件提供商 (http://weistock.com/bbs/index.asp)
-- 公式模型编写问题提交 (http://weistock.com/bbs/list.asp?boardid=4)
---- 请问如何把这个两个策略进行合并 (http://weistock.com/bbs/dispbbs.asp?boardid=4&id=50369)
|
-- 作者:just1
-- 发布时间:2013/3/28 14:22:26
-- 请问如何把这个两个策略进行合并
//参数定义 EMA13:=EMA(C,10),COLORWHITE; EMA21:=EMA(C,21),COLORYELLOW; EMA34:=EMA(C,34),COLORFF00FF; EMA60:=MA(C,55),COLORFFCC66; X1:=(C+L+H)/3; X2:=EMA(X1,5); X3:=EMA(X2,4); STICKLINE(X2>X3 AND C>EMA13,LOW,HIGH,0.1,1),COLORRED; STICKLINE(X2>X3 AND C>EMA13,CLOSE,OPEN,3,1),COLORRED; STICKLINE(X2<X3 AND C<EMA13,LOW,HIGH,0.1,1),COLORFFFF52; STICKLINE(X2<X3 AND C<EMA13,CLOSE,OPEN,3,0),COLORFFFF52; BUY1:=FILTER(X2>X3 AND C>EMA13,4); SELL1:=FILTER(X2<X3 AND C<EMA13,4); //使用系列模式时 //{开多} ENTERLONG:BUY1,TFILTER; //{平多}EXITLONG:SELL1 ,TFILTER; // //{开空}ENTERSHORT:SELL1 ,TFILTER; //{平空}EXITSHORT:BUY1 ,TFILTER; //使用逐K线模式时 VARIABLE:DUOKONG=0; TSFS:=0; {停损反手,1-反手 0-不反手} ORDVOL:=1; {开仓手数} ZSDS:=10; {止损点数} //以下变量用于移动止盈,,移动止盈只能保证你尽可能稳健盈利,却不能保证盈利最大化,如果不想使用,可是将总开关设置为0 VARIABLE:YDZY=1; {移动止盈总开关,1为开,0为关} VARIABLE:HIGHPRICE=0,LOWPRICE=0; {保存开仓后的最高价、最低价} VARIABLE:DHCDS=3,KHCDS=3; {多、空单回撤点数} VARIABLE:DYLDS=7,KYLDS=7; {多、空单盈利点数,当盈利点数达到这个标准后,如果回撤达到上面的参数值就平仓} VARIABLE:Z3B1:=1; {赚3保1开关} DUOKONG:=1; //持有空单 IF HOLDING<0 THEN BEGIN IF BUY1 THEN BEGIN //平空单 空平:SELLSHORT(1,0,MKT),ORDERQUEUE; END //止损 IF C-ENTERPRICE>=ZSDS THEN BEGIN 空损:SELLSHORT(1,0,MKT),ORDERQUEUE; END //移动止盈 IF YDZY=1 THEN BEGIN //每周期判断是否创新低 IF L<LOWPRICE THEN BEGIN LOWPRICE:=L; END //如果盈利超过10点之后回撤达到3点,就平仓,保住盈利 IF ENTERPRICE-LOWPRICE>=KYLDS THEN BEGIN IF L-LOWPRICE>=KHCDS THEN BEGIN //回撤超过3点 空赢:SELLSHORT(1,0,MARKET); END END END //赚3保1 IF Z3B1=1 THEN BEGIN IF ENTERPRICE-LOWPRICE>=3 THEN BEGIN IF ENTERPRICE-L<=1.2 THEN BEGIN 空保:SELLSHORT(1,0,MARKET); END END END END //开多单 IF HOLDING=0 THEN BEGIN IF DUOKONG=1 OR DUOKONG=2 THEN BEGIN IF BUY1 THEN BEGIN 多开:BUY(1=1,ORDVOL,MKT); HIGHPRICE:=ENTERPRICE; //将开仓价保存到最高价 END END END //持有多单 IF HOLDING>0 THEN BEGIN IF SELL1 THEN BEGIN {平多单} 多平:SELL(1,0,MKT),ORDERQUEUE; END //多单管理 //止损 IF ENTERPRICE-C>=ZSDS THEN BEGIN 多损:SELL(1,0,MKT),ORDERQUEUE; END //移动止盈 IF YDZY=1 THEN BEGIN //每周期判断是否创新高 IF H>HIGHPRICE THEN BEGIN HIGHPRICE:=H; END //如果盈利超过10点之后回撤达到3点,就平仓,保住盈利 IF HIGHPRICE-ENTERPRICE>=DYLDS THEN BEGIN IF HIGHPRICE-H>=DHCDS THEN BEGIN //回撤超过3点 多赢:SELL(1,0,MARKET); END END END //赚3保1 IF Z3B1=1 THEN BEGIN IF HIGHPRICE-ENTERPRICE>=3 THEN BEGIN IF H-ENTERPRICE<=1.2 THEN BEGIN 多保:SELL(1,0,MARKET); END END END END //开空单 IF HOLDING=0 THEN BEGIN IF DUOKONG=1 OR DUOKONG=3 THEN BEGIN IF SELL1 THEN BEGIN 空开:BUYSHORT(1=1,ORDVOL,MKT); LOWPRICE:=ENTERPRICE; END END END
当前持仓:HOLDING,COLORGRAY,LINETHICK0; 当前资产:ASSET,NOAXIS,COLORGRAY;
|
-- 作者:just1
-- 发布时间:2013/3/28 14:23:04
--
HH1:=IFELSE(H<REF(H,2)&&REF(H,1)<REF(H,2),REF(H,28),0); //满足条件时给HH1赋值为前两个周期的最高价,否则赋值为0 LL1:=IFELSE(L>REF(L,2)&&REF(L,1)>REF(L,2),REF(L,58),0); //满足条件时给LL1赋值为前两个周期的最低价,否则赋值为0 HH2:=VALUEWHEN(HH1>0,HH1); LL2:=VALUEWHEN(LL1>0,LL1); K1:=IFELSE(CLOSE>HH2,-3,IFELSE(CLOSE<LL2,1,0)); //满足条件CLOSE>HH2时K1赋值为-3,满足条件CLOSE<LL2时将K1赋值为1,否则其他情况K1都为0 K2:=VALUEWHEN(K1<>0,K1);//K1不等于0时,取K1的值 K2=1,SPK;//满足条件CLOSE<LL2时,平多反手开空信号 K2=-3,BPK;//满足条件CLOSE>HH2时,平空反手开多信号】
|
-- 作者:jinzhe
-- 发布时间:2013/3/28 14:24:59
--
如何进行整合?
[此贴子已经被作者于2013-3-28 14:25:23编辑过]
|
-- 作者:aaaaaa
-- 发布时间:2013/3/28 14:32:16
--
不好意思 不是进行整合,是把第2个开仓条件换到第1个里面去, 不要第1个的开仓条件了只需要保留第1个的其它条件。谢谢
|
-- 作者:aaaaaa
-- 发布时间:2013/3/28 14:34:57
--
刚才是 just1 帮我发的贴 在此表示感谢
|
-- 作者:jinzhe
-- 发布时间:2013/3/28 14:41:39
--
EMA13:=EMA(C,10),COLORWHITE; EMA21:=EMA(C,21),COLORYELLOW; EMA34:=EMA(C,34),COLORFF00FF; EMA60:=MA(C,55),COLORFFCC66; X1:=(C+L+H)/3; X2:=EMA(X1,5); X3:=EMA(X2,4); STICKLINE(X2>X3 AND C>EMA13,LOW,HIGH,0.1,1),COLORRED; STICKLINE(X2>X3 AND C>EMA13,CLOSE,OPEN,3,1),COLORRED; STICKLINE(X2<X3 AND C<EMA13,LOW,HIGH,0.1,1),COLORFFFF52; STICKLINE(X2<X3 AND C<EMA13,CLOSE,OPEN,3,0),COLORFFFF52; BUY1:=FILTER(X2>X3 AND C>EMA13,4); SELL1:=FILTER(X2<X3 AND C<EMA13,4); HH1:=IFELSE(H<REF(H,2)&&REF(H,1)<REF(H,2),REF(H,28),0); //满足条件时给HH1赋值为前两个周期的最高价,否则赋值为0 LL1:=IFELSE(L>REF(L,2)&&REF(L,1)>REF(L,2),REF(L,58),0); //满足条件时给LL1赋值为前两个周期的最低价,否则赋值为0 HH2:=VALUEWHEN(HH1>0,HH1); LL2:=VALUEWHEN(LL1>0,LL1); K1:=IFELSE(CLOSE>HH2,-3,IFELSE(CLOSE<LL2,1,0)); //满足条件CLOSE>HH2时K1赋值为-3,满足条件CLOSE<LL2时将K1赋值为1,否则其他情况K1都为0 K2:=VALUEWHEN(K1<>0,K1);//K1不等于0时,取K1的值
//使用系列模式时 //{开多} ENTERLONG:BUY1,TFILTER; //{平多}EXITLONG:SELL1 ,TFILTER; // //{开空}ENTERSHORT:SELL1 ,TFILTER; //{平空}EXITSHORT:BUY1 ,TFILTER; //使用逐K线模式时 VARIABLE:DUOKONG=0; TSFS:=0; {停损反手,1-反手 0-不反手} ORDVOL:=1; {开仓手数} ZSDS:=10; {止损点数} //以下变量用于移动止盈,,移动止盈只能保证你尽可能稳健盈利,却不能保证盈利最大化,如果不想使用,可是将总开关设置为0 VARIABLE:YDZY=1; {移动止盈总开关,1为开,0为关} VARIABLE:HIGHPRICE=0,LOWPRICE=0; {保存开仓后的最高价、最低价} VARIABLE:DHCDS=3,KHCDS=3; {多、空单回撤点数} VARIABLE:DYLDS=7,KYLDS=7; {多、空单盈利点数,当盈利点数达到这个标准后,如果回撤达到上面的参数值就平仓} VARIABLE:Z3B1:=1; {赚3保1开关} DUOKONG:=1; //持有空单 IF HOLDING<0 THEN BEGIN IF BUY1 THEN BEGIN //平空单 空平:SELLSHORT(1,0,MKT),ORDERQUEUE; END //止损 IF C-ENTERPRICE>=ZSDS THEN BEGIN 空损:SELLSHORT(1,0,MKT),ORDERQUEUE; END //移动止盈 IF YDZY=1 THEN BEGIN //每周期判断是否创新低 IF L<LOWPRICE THEN BEGIN LOWPRICE:=L; END //如果盈利超过10点之后回撤达到3点,就平仓,保住盈利 IF ENTERPRICE-LOWPRICE>=KYLDS THEN BEGIN IF L-LOWPRICE>=KHCDS THEN BEGIN //回撤超过3点 空赢:SELLSHORT(1,0,MARKET); END END END //赚3保1 IF Z3B1=1 THEN BEGIN IF ENTERPRICE-LOWPRICE>=3 THEN BEGIN IF ENTERPRICE-L<=1.2 THEN BEGIN 空保:SELLSHORT(1,0,MARKET); END END END END //开多单 IF HOLDING=0 THEN BEGIN IF DUOKONG=1 OR DUOKONG=2 THEN BEGIN IF k2=-3 THEN BEGIN 多开:BUY(1=1,ORDVOL,MKT); HIGHPRICE:=ENTERPRICE; //将开仓价保存到最高价 END END END //持有多单 IF HOLDING>0 THEN BEGIN IF SELL1 THEN BEGIN {平多单} 多平:SELL(1,0,MKT),ORDERQUEUE; END //多单管理 //止损 IF ENTERPRICE-C>=ZSDS THEN BEGIN 多损:SELL(1,0,MKT),ORDERQUEUE; END //移动止盈 IF YDZY=1 THEN BEGIN //每周期判断是否创新高 IF H>HIGHPRICE THEN BEGIN HIGHPRICE:=H; END //如果盈利超过10点之后回撤达到3点,就平仓,保住盈利 IF HIGHPRICE-ENTERPRICE>=DYLDS THEN BEGIN IF HIGHPRICE-H>=DHCDS THEN BEGIN //回撤超过3点 多赢:SELL(1,0,MARKET); END END END //赚3保1 IF Z3B1=1 THEN BEGIN IF HIGHPRICE-ENTERPRICE>=3 THEN BEGIN IF H-ENTERPRICE<=1.2 THEN BEGIN 多保:SELL(1,0,MARKET); END END END END //开空单 IF HOLDING=0 THEN BEGIN IF DUOKONG=1 OR DUOKONG=3 THEN BEGIN IF k2=1 THEN BEGIN 空开:BUYSHORT(1=1,ORDVOL,MKT); LOWPRICE:=ENTERPRICE; END END END
当前持仓:HOLDING,COLORGRAY,LINETHICK0; 当前资产:ASSET,NOAXIS,COLORGRAY;
{ KD:=; //开多条件 PD:=; //平多条件 KK:=; //开空条件 PK:=; //平空条件
平空:SELLSHORT(PK,1,THISCLOSE); //平空信号 开多:BUY(KD AND HOLDING=0,1,THISCLOSE); //开多信号 平多:SELL(PD,1,THISCLOSE); //平多信号 开空:BUYSHORT(KK AND HOLDING=0,1,THISCLOSE); //开空信号
} { 信号语句排列规则——先平后开 “费率设置”按钮——用于合理设置模型“费率”,以便在图形上正确输出如下帐户信息:
持仓:holding,linethick0; 资产:asset,noaxis; 可用现金:cash(0),linethick0; }
|
-- 作者:aaaaaa
-- 发布时间:2013/3/28 14:50:22
--
数据专家您好 先对您表示感谢 不过第1个的开仓条件还在里面啊, 我把第1个的开仓条件删除后就无法正常显示了.
|
-- 作者:jinzhe
-- 发布时间:2013/3/28 14:57:48
--
EMA13:=EMA(C,10),COLORWHITE; EMA21:=EMA(C,21),COLORYELLOW; EMA34:=EMA(C,34),COLORFF00FF; EMA60:=MA(C,55),COLORFFCC66; X1:=(C+L+H)/3; X2:=EMA(X1,5); X3:=EMA(X2,4); STICKLINE(X2>X3 AND C>EMA13,LOW,HIGH,0.1,1),COLORRED; STICKLINE(X2>X3 AND C>EMA13,CLOSE,OPEN,3,1),COLORRED; STICKLINE(X2<X3 AND C<EMA13,LOW,HIGH,0.1,1),COLORFFFF52; STICKLINE(X2<X3 AND C<EMA13,CLOSE,OPEN,3,0),COLORFFFF52; BUY1:=FILTER(X2>X3 AND C>EMA13,4); SELL1:=FILTER(X2<X3 AND C<EMA13,4); HH1:=IFELSE(H<REF(H,2)&&REF(H,1)<REF(H,2),REF(H,28),0); //满足条件时给HH1赋值为前两个周期的最高价,否则赋值为0 LL1:=IFELSE(L>REF(L,2)&&REF(L,1)>REF(L,2),REF(L,58),0); //满足条件时给LL1赋值为前两个周期的最低价,否则赋值为0 HH2:=VALUEWHEN(HH1>0,HH1); LL2:=VALUEWHEN(LL1>0,LL1); K1:=IFELSE(CLOSE>HH2,-3,IFELSE(CLOSE<LL2,1,0)); //满足条件CLOSE>HH2时K1赋值为-3,满足条件CLOSE<LL2时将K1赋值为1,否则其他情况K1都为0 K2:=VALUEWHEN(K1<>0,K1);//K1不等于0时,取K1的值
//使用系列模式时 //{开多} ENTERLONG:BUY1,TFILTER; //{平多}EXITLONG:SELL1 ,TFILTER; // //{开空}ENTERSHORT:SELL1 ,TFILTER; //{平空}EXITSHORT:BUY1 ,TFILTER; //使用逐K线模式时 VARIABLE:DUOKONG=0; TSFS:=0; {停损反手,1-反手 0-不反手} ORDVOL:=1; {开仓手数} ZSDS:=10; {止损点数} //以下变量用于移动止盈,,移动止盈只能保证你尽可能稳健盈利,却不能保证盈利最大化,如果不想使用,可是将总开关设置为0 VARIABLE:YDZY=1; {移动止盈总开关,1为开,0为关} VARIABLE:HIGHPRICE=0,LOWPRICE=0; {保存开仓后的最高价、最低价} VARIABLE:DHCDS=3,KHCDS=3; {多、空单回撤点数} VARIABLE:DYLDS=7,KYLDS=7; {多、空单盈利点数,当盈利点数达到这个标准后,如果回撤达到上面的参数值就平仓} VARIABLE:Z3B1:=1; {赚3保1开关} DUOKONG:=1; //持有空单 IF HOLDING<0 THEN BEGIN IF BUY1 THEN BEGIN //平空单 空平:SELLSHORT(1,0,MKT),ORDERQUEUE; END //止损 IF C-ENTERPRICE>=ZSDS THEN BEGIN 空损:SELLSHORT(1,0,MKT),ORDERQUEUE; END //移动止盈 IF YDZY=1 THEN BEGIN //每周期判断是否创新低 IF L<LOWPRICE THEN BEGIN LOWPRICE:=L; END //如果盈利超过10点之后回撤达到3点,就平仓,保住盈利 IF ENTERPRICE-LOWPRICE>=KYLDS THEN BEGIN IF L-LOWPRICE>=KHCDS THEN BEGIN //回撤超过3点 空赢:SELLSHORT(1,0,MARKET); END END END //赚3保1 IF Z3B1=1 THEN BEGIN IF ENTERPRICE-LOWPRICE>=3 THEN BEGIN IF ENTERPRICE-L<=1.2 THEN BEGIN 空保:SELLSHORT(1,0,MARKET); END END END END //开多单 IF HOLDING=0 and k2=-3 THEN BEGIN 平空:sellshort(1,0,market); 多开:BUY(1=1,ORDVOL,MarKeT); HIGHPRICE:=ENTERPRICE; //将开仓价保存到最高价 END //持有多单 IF HOLDING>0 THEN BEGIN IF SELL1 THEN BEGIN {平多单} 多平:SELL(1,0,MarKeT),ORDERQUEUE; END //多单管理 //止损 IF ENTERPRICE-C>=ZSDS THEN BEGIN 多损:SELL(1,0,MarKeT),ORDERQUEUE; END //移动止盈 IF YDZY=1 THEN BEGIN //每周期判断是否创新高 IF H>HIGHPRICE THEN BEGIN HIGHPRICE:=H; END //如果盈利超过10点之后回撤达到3点,就平仓,保住盈利 IF HIGHPRICE-ENTERPRICE>=DYLDS THEN BEGIN IF HIGHPRICE-H>=DHCDS THEN BEGIN //回撤超过3点 多赢:SELL(1,0,MARKET); END END END //赚3保1 IF Z3B1=1 THEN BEGIN IF HIGHPRICE-ENTERPRICE>=3 THEN BEGIN IF H-ENTERPRICE<=1.2 THEN BEGIN 多保:SELL(1,0,MARKET); END END END END //开空单 IF HOLDING=0 and k2=1 THEN BEGIN 平多:sell(1,0,market); 空开:BUYSHORT(1=1,ORDVOL,MarkeT); LOWPRICE:=ENTERPRICE; END
当前持仓:HOLDING,COLORGRAY,LINETHICK0; 当前资产:ASSET,NOAXIS,COLORGRAY;
{ KD:=; //开多条件 PD:=; //平多条件 KK:=; //开空条件 PK:=; //平空条件
平空:SELLSHORT(PK,1,THISCLOSE); //平空信号 开多:BUY(KD AND HOLDING=0,1,THISCLOSE); //开多信号 平多:SELL(PD,1,THISCLOSE); //平多信号 开空:BUYSHORT(KK AND HOLDING=0,1,THISCLOSE); //开空信号
} { 信号语句排列规则——先平后开 “费率设置”按钮——用于合理设置模型“费率”,以便在图形上正确输出如下帐户信息:
持仓:holding,linethick0; 资产:asset,noaxis; 可用现金:cash(0),linethick0; }
|
-- 作者:aaaaaa
-- 发布时间:2013/3/28 15:01:05
--
麻烦专家帮助看一下吧 谢谢!
|
-- 作者:aaaaaa
-- 发布时间:2013/3/28 15:12:58
--
已经看到了,不好意思先不研究了我有事先下线了,非常感谢数据专家的帮助 谢谢!
|