AUTOFILTER的使用 [赢顺期货]
- 咨询内容:
请帮助看看,下面是同一个模型号,前面是不使用AUTOFILTER,但是自已对持仓是做了控制的。后面使作AUTOFILTER,两者的收益差异是很大,检查一下是第一个持仓控制写法做有问题,还是其他原因导致的?谢谢
/**************** 不使用自动过滤 ****************/
NN:=BARSLAST(DATE<>REF(DATE,1))+1; //当天开盘后的K线数量
HH:=REF(HHV(HIGH,NN),NN); //前一天最高价
LL:=REF(LLV(LOW,NN),NN); //前一天最低价
CC:=VALUEWHEN(DATE<>REF(DATE,1),REF(CLOSE,1)); //前一天收盘价
OO:=VALUEWHEN(DATE<>REF(DATE,1),O); //今日开盘价
HHJ:HHV(H,NN); //今日到当前K线的最高价
LLJ:=LLV(L,NN); //今日到当前K线的最低价
RANGEMIN:=0.2*(OO/100); //设定区间 0.2 * (今日开盘价 / 100)
STARTNOW:=BARPOS;
RFILTER:=(HH-LL)>RANGEMIN; //过滤条件
SSETUP:HH+0.35*(CC-LL); //中轨上顶部区间:ssetup:=昨日最高+0.35*(昨天收盘-昨天最低);
BSETUP:LL-0.35*(HH-CC); //中轨下顶部区间:bsetup:=昨最低-0.35*(昨最高-昨收盘);
SENTER:(1+0.07)/2*(HH+CC)-0.07*LL; //中轨上区间:senter:=((1+0.07)/2)*(昨最高+昨收盘)-0.07*昨天最低;
BENTER:(1+0.07)/2*(CC+LL)-0.07*HH; //中轨下区间:benter:=((1+0.07)/2*(昨最低+昨收盘)-0.07*昨天最高;
ZGS:SENTER+(HHJ-SSETUP)/3; //senter + (今天最高价格-ssetup)/3
ZGX:BENTER-(BSETUP-LLJ)/3; //BENTER-(BSETUP-今天最低价格)/3
SG:=SSETUP+0.25*(SSETUP-BSETUP); //买开位:
XG:BSETUP-0.25*(SSETUP-BSETUP); //卖开位
TT:CROSS(ZGS,L);
AA:=TIME>0900&&TIME<1435&&BARPOS>=271&&RFILTER=1; //STARTNOW>=2 表示从所选择时间区域的第二根K线开始,如2010/4/16开始的话,从17日开始买卖
BB:=HHJ>SSETUP; //今最高价》SSETUPDD:=LLJ0,SPK(BUYVOL);
AA=1&&DD=1&&CROSS(H,ZGX)&&SELLVOL>0,BPK(SELLVOL);
AA=1&&CROSS(H,SG)&&BUYVOL<1&&SELLVOL<1,BK(1);
AA=1&&CROSS(XG,L)&&BUYVOL<1&&SELLVOL<1,SK(1);
((H-SKPRICE>=OO/100)||TIME>=1510)&&SELLVOL>0,BP(SELLVOL);
((BKPRICE-L>=OO/100)||TIME>=1510)&&BUYVOL>0,SP(BUYVOL);/**************** 使用自动过滤 AUTOFILTER; ****************/
NN:=BARSLAST(DATE<>REF(DATE,1))+1; //当天开盘后的K线数量
HH:=REF(HHV(HIGH,NN),NN); //前一天最高价
LL:=REF(LLV(LOW,NN),NN); //前一天最低价
CC:=VALUEWHEN(DATE<>REF(DATE,1),REF(CLOSE,1)); //前一天收盘价
OO:=VALUEWHEN(DATE<>REF(DATE,1),O); //今日开盘价
HHJ:HHV(H,NN); //今日到当前K线的最高价
LLJ:=LLV(L,NN); //今日到当前K线的最低价
RANGEMIN:=0.2*(OO/100); //设定区间 0.2 * (今日开盘价 / 100)
STARTNOW:=BARPOS;
RFILTER:=(HH-LL)>RANGEMIN; //过滤条件
SSETUP:HH+0.35*(CC-LL); //中轨上顶部区间:ssetup:=昨日最高+0.35*(昨天收盘-昨天最低);
BSETUP:LL-0.35*(HH-CC); //中轨下顶部区间:bsetup:=昨最低-0.35*(昨最高-昨收盘);
SENTER:(1+0.07)/2*(HH+CC)-0.07*LL; //中轨上区间:senter:=((1+0.07)/2)*(昨最高+昨收盘)-0.07*昨天最低;
BENTER:(1+0.07)/2*(CC+LL)-0.07*HH; //中轨下区间:benter:=((1+0.07)/2*(昨最低+昨收盘)-0.07*昨天最高;
ZGS:SENTER+(HHJ-SSETUP)/3; //senter + (今天最高价格-ssetup)/3
ZGX:BENTER-(BSETUP-LLJ)/3; //BENTER-(BSETUP-今天最低价格)/3
SG:=SSETUP+0.25*(SSETUP-BSETUP); //买开位:
XG:BSETUP-0.25*(SSETUP-BSETUP); //卖开位
TT:CROSS(ZGS,L);
AA:=TIME>0900&&TIME<1435&&BARPOS>=271&&RFILTER=1; //STARTNOW>=2 表示从所选择时间区域的第二根K线开始,如2010/4/16开始的话,从17日开始买卖
BB:=HHJ>SSETUP; //今最高价》SSETUP
DD:=LLJ=OO/100)||TIME>=1510,BP;
(BKPRICE-L>=OO/100)||TIME>=1510,SP;
AUTOFILTER; - 赢顺技术人员:
在您的过滤模型中,找不到您的开仓条件,请您补齐
- 赢顺客服:
NN:=BARSLAST(DATE<>REF(DATE,1))+1; //当天开盘后的K线数量
HH:=REF(HHV(HIGH,NN),NN); //前一天最高价
LL:=REF(LLV(LOW,NN),NN); //前一天最低价CC:=VALUEWHEN(DATE<>REF(DATE,1),REF(CLOSE,1)); //前一天收盘价
OO:=VALUEWHEN(DATE<>REF(DATE,1),O); //今日开盘价
HHJ:HHV(H,NN); //今日到当前K线的最高价
LLJ:=LLV(L,NN); //今日到当前K线的最低价
RANGEMIN:=0.2*(OO/100); //设定区间 0.2 * (今日开盘价 / 100)//STARTNOW:=BARPOS-1; //这个写法欠妥,暂改为STARTNOW:=BARPOS;
STARTNOW:=BARPOS;
RFILTER:=(HH-LL)>RANGEMIN; //过滤条件
SSETUP:HH+0.35*(CC-LL); //中轨上顶部区间:ssetup:=昨日最高+0.35*(昨天收盘-昨天最低);
BSETUP:LL-0.35*(HH-CC); //中轨下顶部区间:bsetup:=昨最低-0.35*(昨最高-昨收盘);
SENTER:(1+0.07)/2*(HH+CC)-0.07*LL; //中轨上区间:senter:=((1+0.07)/2)*(昨最高+昨收盘)-0.07*昨天最低;
BENTER:(1+0.07)/2*(CC+LL)-0.07*HH; //中轨下区间:benter:=((1+0.07)/2*(昨最低+昨收盘)-0.07*昨天最高;
ZGS:SENTER+(HHJ-SSETUP)/3; //senter + (今天最高价格-ssetup)/3
ZGX:BENTER-(BSETUP-LLJ)/3; //BENTER-(BSETUP-今天最低价格)/3SG:=SSETUP+0.25*(SSETUP-BSETUP); //买开位:
XG:BSETUP-0.25*(SSETUP-BSETUP); //卖开位TT:CROSS(ZGS,L);
AA:=TIME>0900&&TIME<1435&&BARPOS>=271&&RFILTER=1; //STARTNOW>=2 表示从所选择时间区域的第二根K线开始,如2010/4/16开始的话,从17日开始买卖
BB:=HHJ>SSETUP; //今最高价》SSETUP
DD:=LLJ<BSETUP; //今最低价《BSETUP
AA=1&&BB=1&&CROSS(ZGS,L),SPK;
AA=1&&DD=1&&CROSS(H,ZGX),BPK;AA=1&&CROSS(H,SG),BK;
AA=1&&CROSS(XG,L),SK;(H-SKPRICE>=OO/100)||TIME>=1510,BP;
(BKPRICE-L>=OO/100)||TIME>=1510,SP;
AUTOFILTER;///////////////////////////////////////////
NN:=BARSLAST(DATE<>REF(DATE,1))+1; //当天开盘后的K线数量
HH:=REF(HHV(HIGH,NN),NN); //前一天最高价
LL:=REF(LLV(LOW,NN),NN); //前一天最低价CC:=VALUEWHEN(DATE<>REF(DATE,1),REF(CLOSE,1)); //前一天收盘价
OO:=VALUEWHEN(DATE<>REF(DATE,1),O); //今日开盘价
HHJ:HHV(H,NN); //今日到当前K线的最高价
LLJ:=LLV(L,NN); //今日到当前K线的最低价
RANGEMIN:=0.2*(OO/100); //设定区间 0.2 * (今日开盘价 / 100)//STARTNOW:=BARPOS-1; //这个写法欠妥,暂改为STARTNOW:=BARPOS;
STARTNOW:=BARPOS;
RFILTER:=(HH-LL)>RANGEMIN; //过滤条件
SSETUP:HH+0.35*(CC-LL); //中轨上顶部区间:ssetup:=昨日最高+0.35*(昨天收盘-昨天最低);
BSETUP:LL-0.35*(HH-CC); //中轨下顶部区间:bsetup:=昨最低-0.35*(昨最高-昨收盘);
SENTER:(1+0.07)/2*(HH+CC)-0.07*LL; //中轨上区间:senter:=((1+0.07)/2)*(昨最高+昨收盘)-0.07*昨天最低;
BENTER:(1+0.07)/2*(CC+LL)-0.07*HH; //中轨下区间:benter:=((1+0.07)/2*(昨最低+昨收盘)-0.07*昨天最高;
ZGS:SENTER+(HHJ-SSETUP)/3; //senter + (今天最高价格-ssetup)/3
ZGX:BENTER-(BSETUP-LLJ)/3; //BENTER-(BSETUP-今天最低价格)/3SG:=SSETUP+0.25*(SSETUP-BSETUP); //买开位:
XG:BSETUP-0.25*(SSETUP-BSETUP); //卖开位TT:CROSS(ZGS,L);
AA:=TIME>0900&&TIME<1435&&BARPOS>=271&&RFILTER=1; //STARTNOW>=2 表示从所选择时间区域的第二根K线开始,如2010/4/16开始的话,从17日开始买卖
BB:=HHJ>SSETUP; //今最高价》SSETUP
DD:=LLJ<BSETUP; //今最低价《BSETUP
AA=1&&BB=1&&CROSS(ZGS,L)&&BUYVOL>0,SPK(BUYVOL);
AA=1&&DD=1&&CROSS(H,ZGX)&&SELLVOL>0,BPK(SELLVOL);AA=1&&CROSS(H,SG)&&BUYVOL<1&&SELLVOL<1,BK(1);
AA=1&&CROSS(XG,L)&&BUYVOL<1&&SELLVOL<1,SK(1);((H-SKPRICE>=OO/100)||TIME>=1510)&&SELLVOL>0,BP(SELLVOL);
((BKPRICE-L>=OO/100)||TIME>=1510)&&BUYVOL>0,SP(BUYVOL); - 网友回复:
请问根据你的原理,哪一种是您想要的结果?
根据对您的模型的分析,这两个模型之间的差异主要是由于SPK和BPK的信号开仓不同而导致的。
在您的非过滤模型中,SPK和BPK模型由于不满足BUYVOL>0和SELLVOL>0,因此无法开仓
AA=1&&BB=1&&CROSS(ZGS,L)&&BUYVOL>0,SPK(BUYVOL);
AA=1&&DD=1&&CROSS(H,ZGX)&&SELLVOL>0,BPK(SELLVOL);
如果以上指标公式不适用于您常用的行情软件
或者您想改编成选股公式,以便快速选出某种形态个股的话,
- 上一篇:DUALVOL如何编写进指标
- 下一篇:均线模型编写求助
相关文章
-
没有相关内容