//仅供初学者参考或测试用。
input:PosNum(1,1,100,1);
input:zqcs(3,1,12,1);
input:ZYL(5,1,10,0.5);
input:sacs(5,1,10,1);
input:sa0cs(1,0.1,2,0.01);
{ 1 .全局变量 }
ThisBar := 0 ;
VARIABLE : CC=0;
VARIABLE : BB=0;
VARIABLE : kcj=0;
VARIABLE : pcj=0;
VARIABLE : kcs=0;
SA:=SAR(3,sacs, 15);
SA0:=SAR(3,sa0cs, 10);
SA1:=SAR(3,1,10);
SA2:=SAR(3,0.5,10);
QG:=HHV(REF(HIGH,1),zqcs);
QD:=LLV(REF(LOW,1),zqcs);
QG1:=MAX(QG,SA0);
QD1:=MIN(QD,SA0);
HD:=if(islastbar,mindiff*3,mindiff);
FDYK1:OPENPROFITPER/POSNUM,LINETHICK0;
FDYK:=REF(FDYK1,1),LINETHICK0;
SAS:IF(FDYK<=-0.5,SA,if(FDYK>=ZYL,SA,SA2));
VARIABLE : SAS=SA2;
IF BB=0 AND CC<>0 AND FDYK<=-0.35 THEN BEGIN
SAS:=SA;
BB:=1;
END
IF BB=0 AND CC<>0 AND FDYK>=ZYL THEN BEGIN
SAS:=SA;
BB:=1;
END
IF BB=1 AND CC=0 THEN BEGIN
SAS:=SA2;
BB:=0;
END
KD:=HIGH>=SA1 AND HIGH>=QG1 AND QG1>=SA2; //开多条件
PD:=LOW<=SAS; //平多条件
KK:=LOW<=SA1 AND LOW<=QD1 AND QD1<=SA2; //开空条件
PK:=HIGH>=SAS; //平空条件
IF CC=-1 AND PK THEN BEGIN
平空:SELLSHORT(1,1,LIMITR,MAX(SAS,OPEN)+HD);
CC:=0;
THISBAR:=-1;
END //平空信号
IF CC=1 AND PD THEN BEGIN
平多:SELL(PD,1,LIMITR,MIN(SAS,OPEN)-HD);
CC:=0;
THISBAR:=1;
END //平多信号
IF CC=0 AND KD AND THISBAR=0 THEN BEGIN
开多:BUY(1,1,LIMITR,MAX(QG1,MAX(SA1,OPEN))+HD);
CC:=1;
THISBAR:=1;
END //开多信号
IF CC=0 AND KK AND THISBAR=0 THEN BEGIN
开空:BUYSHORT(1,1,LIMITR,MIN(QD1,MIN(SA1,OPEN))-HD);
CC:=-1;
THISBAR:=-1;
END //开空信号
////////////////////////////////////////////////////////////////////////
{12 . 显示账户状态 }
资产:asset,noaxis,colorgray,precision0;
持仓:holding,linethick0;
盈亏比:payoffrate,color0000ff,nodraw,precision2;
胜率:ceiling(percentwin*100),color0000ff,linethick0,precision0;
日交易数:totaldaytrade,linethick0;
日盈亏:asset-ref(asset,barslast(date<>ref(date,1))+1),linethick0,precision0;
利用抛物转向指标SAR设计模型非常简洁,指标只有三个参数SAR(N,S,M),N为计算周期,S为步长,M为步长极限值。另外,指标不含未来,可以直接用HIGH>=SAR或LOW<=SAR写开平仓条件,信号不闪不漂移。这个模型中用了4个不同的SAR指标,用浮动盈亏幅度OPENPROFITPER来切换不同的SAR指标,根据盈亏情况来平仓。
理论上这个模型适用于所有品种、所有周期,针对不同品种选择适当的周期,很多品种都能获得正收益。
至少比金字塔自带的模型要好一点。

此主题相关图片如下:qq图片jid.png

但是要实盘的话,还是要考虑更多的因素,如资金管理,仓位管理,交易滑点等,这种简单的模型是不可以实盘的。
要是初学者用于小周期测试的话,把HD:=if(islastbar,mindiff*3,mindiff);
改为HD:=if(islastbar,mindiff*3,mindiff*0);否则信号会失真;
另外,把
{
VARIABLE : SAS=SA2;
IF BB=0 AND CC<>0 AND FDYK<=-0.35 THEN BEGIN
SAS:=SA;
BB:=1;
END
IF BB=0 AND CC<>0 AND FDYK>=ZYL THEN BEGIN
SAS:=SA;
BB:=1;
END
IF BB=1 AND CC=0 THEN BEGIN
SAS:=SA2;
BB:=0;
END}
这一段注释掉。这一段是SAS:IF(FDYK<=-0.5,SA,if(FDYK>=ZYL,SA,SA2));的另一种写法。
我也用鸡蛋显示 了一下效果,曲线是向下的15分钟,与楼主的显示 差别很大。思路是挺好的。