以文本方式查看主题 - 金字塔客服中心 - 专业程序化交易软件提供商 (http://weistock.com/bbs/index.asp) -- 公式模型编写问题提交 (http://weistock.com/bbs/list.asp?boardid=4) ---- [求助]请求各位帮忙看一下! (http://weistock.com/bbs/dispbbs.asp?boardid=4&id=84203) |
-- 作者:vipoo -- 发布时间:2015/8/19 23:37:43 -- [求助]请求各位帮忙看一下! //策略:恒温器系统 //简介:恒温器策略以其能够在震荡和趋势市场中自动调节交易行为而得名。 //类型:中长期通道突破 //周期: //使用市场: //详情介绍网址:http://www.weistock.com/bbs/dispbbs.asp?boardid=10&Id=30423&page=2 //版本:1.0 //修订时间:2012.11.6 //DESIGNED BY ROGARZ //中间变量 INPUT:M(50,5,300,30),N(1.25,0.1,10,0.1),SS(1,1,10000,1),K1(1,0.1,1,0.1),K2(0.7,0.1,1,0.1),K3(4.1,0.1,10,0.1),K4(22,1,50,3) VARIABLE:A=0;//0表示仓位是在趋势模式下下单 1表示在震荡模式下下单 MID : MA(CLOSE,M);//布林中轨 UPPER:MID + N*STD(CLOSE,M);//布林上轨 LOWER:MID - N*STD(CLOSE,M);//布林下轨 今开:=CALLSTOCK(STKLABEL,VTOPEN,6,0); CMI:=ABS(CLOSE-REF(CLOSE,29))/(HHV(HIGH,30)-LLV(L,30))*100;//0-100 取值越大,说明趋势越强,CMI<20震荡模式,反之为趋势 关键价:(HIGH+LOW+CLOSE)/3;//关键价的计算,国外常称作中枢价格(PIVOT POINT) ATR10:=MA(TR,K4); 3日均低价:=MA(L,3),COLORBLUE,LINETHICK6; 3日均高价:=MA(H,3),COLORBLUE,LINETHICK3; 手数:=SS; T1:MAX(今开+K1*ATR10,3日均低价),COLORRED,LINETHICK3; T2:MIN(今开-K2*ATR10,3日均高价),COLORRED,LINETHICK6; T3:MAX(今开+K2*ATR10,3日均低价),COLORGREEN,LINETHICK3; T4:MIN(今开-K1*ATR10,3日均高价),COLORGREEN,LINETHICK6; T5:ENTERPRICE-K3*ATR10,COLORYELLOW,LINETHICK6; T6:ENTERPRICE+K3*ATR10,COLORYELLOW,LINETHICK3; //交易条件 IF C<关键价 THEN BEGIN 趋买市开多平空条件:=C>T1; 趋买市开空平多条件:=C<T2; END IF C>关键价 THEN BEGIN 趋卖市开多平空条件:=C>T3; 趋卖市开空平多条件:=C<T4; END 趋势开多条件:=C>UPPER; 趋势开空条件:=C<LOWER; 趋势平多条件:=C<MID; 趋势平空条件:=C>MID; 震荡多单平仓条件:=C<=T5; 震荡空单平仓条件:=C>=T6; //交易系统 IF CMI<20 THEN BEGIN {震荡模式} IF C<关键价 THEN BEGIN 趋买市开多:BUY(趋买市开多平空条件 AND HOLDING<=0,手数,MARKET); 趋买市平多:SELL(趋买市开空平多条件 AND HOLDING>=0,手数,MARKET); 趋买市开空:BUYSHORT(趋买市开空平多条件 AND HOLDING>=0,手数,MARKET); 趋买市平空:SELLSHORT(趋买市开多平空条件 AND HOLDING<=0,手数,MARKET); A:=1; END IF C>关键价 THEN BEGIN 趋卖市开多:BUY(趋卖市开多平空条件 AND HOLDING<=0,手数,MARKET); 趋卖市平多:SELL(趋卖市开空平多条件 AND HOLDING>=0,手数,MARKET); 趋卖市开空:BUYSHORT(趋卖市开空平多条件 AND HOLDING>=0,手数,MARKET); 趋卖市平空:SELLSHORT(趋卖市开多平空条件 AND HOLDING<=0,手数,MARKET); A:=1; END END IF CMI>=20 THEN BEGIN {趋势模式} IF A:=1 THEN BEGIN //趋势模式下 原震荡模式下 仓位处理 震荡多单平仓:SELL(震荡多单平仓条件 AND HOLDING>0,手数,MARKET); 震荡空单平仓:SELLSHORT(震荡空单平仓条件 AND HOLDING<0,手数,MARKET); A:=0; END IF A:=0 THEN BEGIN 趋势开多:BUY(趋势开多条件 AND HOLDING<=0,手数,MARKET); 趋势平多:SELL(趋势平多条件 AND HOLDING>0,手数,MARKET); 趋势开空:BUYSHORT(趋势开空条件 AND HOLDING>=0,手数,MARKET); 趋势平空:SELLSHORT(趋势平空条件 AND HOLDING<0,手数,MARKET); A:=0; END END 改过之后有震荡,但是米又趋势,但是把趋势放在前面,又没有震荡,请求一下前辈帮忙完善一下!新手求救啊!!!!! |
-- 作者:jinzhe -- 发布时间:2015/8/20 8:48:02 -- IF CMI>=20 THEN BEGIN {趋势模式} IF A=1 THEN BEGIN //趋势模式下 原震荡模式下 仓位处理
震荡多单平仓:SELL(震荡多单平仓条件 AND HOLDING>0,手数,MARKET);
震荡空单平仓:SELLSHORT(震荡空单平仓条件 AND HOLDING<0,手数,MARKET);
A:=0;
END
IF A=0 THEN BEGIN
趋势开多:BUY(趋势开多条件 AND HOLDING<=0,手数,MARKET);
趋势平多:SELL(趋势平多条件 AND HOLDING>0,手数,MARKET);
趋势开空:BUYSHORT(趋势开空条件 AND HOLDING>=0,手数,MARKET);
趋势平空:SELLSHORT(趋势平空条件 AND HOLDING<0,手数,MARKET);
A:=0;
END
END
加粗的是修改的地方,你把判断写成了赋值
|