//开始编写属于您自己的交易指标吧!GO!
//该模型为简单示范模型,用户需根据自己交易经验,修改完善后再实际应用!!!
//author: fjasmin
input: t20(20,15,60,1);//参数名,缺省值,最小值,最大值,步长
input: t50(50,20,60,1);
input: t10(10,10,30,1);
input: atrlen(20,15,30,1);
input: posnum(1,1,20,1);
//声明变量
nt:=1;//调试信息带有时间戳
buyorderthisbar:=0;//当前BAR有过交易
variable: _debug = 1; //是否输出前台的交易指令
variable: _tdebug = 1;
				//是否输出后台的交易指令
variable: _debugout = 0;  //是否输出后台交易的调试信息
variable: myentryprice = 0;//开仓价格
variable: myxitprice = 0;//平仓价格
variable: turtleunits = 0;//交易单位
variable: position = 0;//仓位状态
//0表示没有仓位,1表示持有多头,-1表示持有空头
variable: t50hi=close;
variable: t50lo=close;
variable: t20hi=close;
variable: t20lo=close;
variable: t10hi=close;
variable: t10lo=close;
//需要准备计算的变量
t50hi=:ref(hhv(h,t50),1);
t50lo=:ref(llv(h,t50),1);
t20hi=:ref(hhv(h,t20),1);//
t20lo=:ref(llv(h,t20),1);//
t10hi=:ref(hhv(h,t10),1);
t10lo=:ref(llv(h,t10),1);
avgtr:=ref(ma(tr,atrlen),1);
//开始执行时,初始化数据
if barpos = 1 then begin 
 //position : = 0;
 
 end //IFN
 //如果是当时没有持仓的状态
if position=0 and barpos > t20 and h>l then begin 
				//建立多头进场条件
			
				long:=h>t20hi;
			
				//多头进场
				if long then begin 
				myentryprice:=if (open>t20hi+mindiff,open,t20hi+mindiff);
				buy(_debug,posnum,limitr,myentryprice);
				position:=1;
				turtleunits:=1;
				n:=avgtr;
				buyorderthisbar:=1;
			
				end//IF
			
				//建立空头进场条件
				short:=l<t50lo;
			
			
				//空头进场
				if short and position = 0 then begin
				myentryprice:=if(open<t20lo-mindiff,open,t20lo-mindiff);
				buyshort(_debug,posnum,limitr,myentryprice);
				position:=-1;
				turtleunits:=1;
				n:=avgtr;
				buyorderthisnbar:=1;
				end
			
				//不要转跳,让程序检查同一根K线是否可以加仓
				//goto continueline;
			
				//如果当前持有多头仓位的状态
				if position=1 and barpos>t20 and h>l then begin 
				//多头加仓条件
				while (high>myentryprice+0.5*n) and turtleunits < 4 do begin
				myentryprice:=if(open>myentryprice+0.5*n,open,myentryprice+0.5*n);
				myentryprice:=ceiling(myentryprice/mindiff)*mindiff;
				buy(_debug,posnum,limitr,myentryprice);
				turtleunits:=turtleunits+1;
				buyorderthisbar:=1;
			
				end//while循环结束
			
			
				//建立多头离场条件
				longx1:=(low<t10lo);
			
				if longx1 and buyorderthisbar=0 then begin 
				myexitprice:=if(open<t10lo-mindiff,open,t10lo-mindiff);
				sell(_debug,0,limitr,myexitprice);
				position:=0;
				turtleunits:=0;
				end
			
			
				//建立多头止损条件
				longx2 := (low<myentryprice-2*n);
			
				if longx2 and position = 1 and buyorderthisbar=0 then begin 
				myexitprice:=if(open<myentryprice-2*n,open,myentryprice-2*n);
				myexitprice:=floor(myexitprice/mindiff)*mindiff;
				sell(_debug,0,limitr,myexitprice);
				position:=0;
				turtleunits:=0;
				end
			
				goto  continueline;
end //if
//如果当前持有空头仓位的状态
//显示账号信息:
continueline@ mycount:asset,linethick0;//显示我的资产
available_cash:cash(0),linethick0;//可用现金
pos:holding,linethick0;
toaldaytrade1:totaldaytrade,linethick0;//总交易次数
if _debugout>0 then begin 
				debugfile2('c:debugfile.txt','barpos=%.of',barpos,nt);
				debugfile2('c:debugfile.txt','t20hi=%.2f',t20hi,nt);
				debugfile2('c:debugfile.txt','n=%.2f',n,nt);
				debugfile2('c:debugfile.txt','close=%.2f',c,nt);
				debugfile2('c:debugfile.txt','position=%.2f',position,nt);
				debugfile2('c:debugfile.txt','turtleunits=%.of',turtleunits,nt);
				debugfile2('c:debugfile.txt','myentryprice=%.of',myentryprice,nt);
				debugfile2('c:debugfile.txt','myexitprice=%.of',myexitprice,nt);
end
the current position:holding,colorgray,linethick0;//当前持仓
the current captal: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;
}