您现在的位置:程序化交易>> 期货公式>> 文华财经>> 文华财经知识>>正文内容

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; //今最高价》SSETUP

    DD:=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-今天最低价格)/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<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-今天最低价格)/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<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);

     

 

如果以上指标公式不适用于您常用的行情软件

或者您想改编成选股公式,以便快速选出某种形态个股的话,

可以联系我们相关技术人员 QQ: 262069696  点击在线交流进行 有偿 改编!

 


【字体: 】【打印文章】【查看评论

相关文章

    没有相关内容