以文本方式查看主题 - 金字塔客服中心 - 专业程序化交易软件提供商 (http://222.73.7.161/bbs/index.asp) -- 公式模型编写问题提交 (http://222.73.7.161/bbs/list.asp?boardid=4) ---- 请老师修改 ATR通道交易系统 通不过 (http://222.73.7.161/bbs/dispbbs.asp?boardid=4&id=174763) |
-- 作者:yzhybw -- 发布时间:2020/3/4 21:00:27 -- 请老师修改 ATR通道交易系统 通不过 //策略:ATR通道交易系统 //简介: //类型:中长线 //周期:日线/60min/30min //使用市场:多市场 variable: xstop=0; INPUT:M(20,5,100,5),N(2,0.1,10,1),SS(1,1,10000,1); {计算ATR} TR1 := MAX(MAX((HIGH-LOW),ABS(REF(CLOSE,1)-HIGH)),ABS(REF(CLOSE,1)-LOW)); ATR : MA(TR1,m); MID : MA(CLOSE,M);//中轨 UPPER: MID + N*ATR;//上轨 LOWER: MID - N*ATR;//下轨 {计算Turtle rule-1 跟踪停损价格} tmp1:=llv(low,10); tmp2:=llv(low,20); tmp3:=hhv(high,10); if high>=hhv(high,20) then xstop:=tmp1; {20日新高,建立多头停损价格起点——最近10日低点} else if low>xstop then xstop:=xstop+0.05*atr; {多头延续,每天跟踪停损价格上移ATR的5%} else if low<=tmp2>xstop:=tmp3;{20日新低,建立空头停损价格起点——最近10日高点} else if high xstop:=xstop - 0.05*atr;{空头延续,每天跟踪停损价格下移ATR的5%} StopPrice: xstop;{显示停损价格} 手数:=SS; //条件: 开多条件:=C>UPPER AND HOLDING=0;//上穿上轨开多 开空条件:=C 平多条件:=C0; //下穿中轨平多 平空条件:=C>MID AND HOLDING<0; > IF 开多条件 THEN BUY(1,手数,MARKET); IF 开空条件 THEN BUYSHORT(1,手数,MARKET); IF (平多条件 OR close IF (平空条件 or close>StopPrice) THEN SELLSHORT(1,手数,MARKET); 当前持仓: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); //开空信号 |
-- 作者:wenarm -- 发布时间:2020/3/4 22:12:48 -- if high>=hhv(high,20) then xstop:=tmp1; {20日新高,建立多头停损价格起点——最近10日低点}
最后两行的else if后面的条件,需要你确认关系。错误原因也是这两行的,语法不对,以及条件表达式不对。
开多条件:=C>UPPER AND HOLDING=0;//上穿上轨开多 IF 开多条件 THEN BUY(1,手数,MARKET);
IF 开空条件 THEN BUYSHORT(1,手数,MARKET); IF (平多条件 OR close//这句错误,但是你要表达的意图不知道。也是语法错误。 IF (平空条件 or close>StopPrice) THEN SELLSHORT(1,手数,MARKET); 最后一部分的代码语法错误就不指出了,建议你根据提示填充。这个代码如果是从别的地方找的。建议你从新看下。
[此贴子已经被作者于2020/3/4 22:47:32编辑过]
|