您现在的位置:程序化交易>> 期货公式>> 金字塔等>> 金字塔知识>>正文内容

模型可以运行,但信号不正确,且无法实现日内平仓,求高手支持 [金字塔]

  • 咨询内容: INPUT:N(1,1,100,1),K1(0.7,0.1,1,0.1),K2(0.7,0.1,1,0.1),NMIN(10,1,100,1),SS(1,1,10000,1);

    C1:="Y01$CLOSE";
    C2:="M01$CLOSE";

    Spread:=C1-C2;

    CYC:=BARSLAST(DATE<>REF(DATE,1))+1;
    Spread[1]:REF(Spread,1);
    HH:HHV(Spread[1],225);
    LL:=LLV(Spread[1],225);
    OO:=valuewhen(date<>ref(date,1),Spread);

    T1:=TIME>OPENTIME(1) AND TIMET2:=TIME>=CLOSETIME(0)-NMIN*100;
    手数:=SS;
    //交易条件


    浮动区间:=HH-LL;//RANGE
    上轨:OO+K1*浮动区间,,COLORYELLOW;
    下轨:OO-K2*浮动区间,,COLORYELLOW;

    //交易条件
    开多条件:=Spread>上轨 AND HOLDING=0;
    开空条件:=Spread<下轨 AND HOLDING=0;
    //交易系统
    开多:BUY(开多条件 AND T1 AND CYC>1 AND TIME<1445,手数,MARKET);
    开空:BUYSHORT(开空条件 AND T1 AND CYC>1 AND TIME<1445,手数,MARKET);


    IF STRCMP(STKLABEL,'YO1') = 0 THEN
    BEGIN
    SELL(T2,手数,MARKET);
    BUY(开多条件 AND T1 AND CYC>1 AND TIME<1445,手数,MARKET);
    BUYSHORT(开空条件 AND T1 AND CYC>1 AND TIME<1445,1,MARKET);
    SELLSHORT(T2,手数,MARKET)
    END

    IF STRCMP(STKLABEL,'M01') = 0 THEN
    BEGIN
    SELL(T2,手数,MARKET);
    BUY(开空条件 AND T1 AND CYC>1 AND TIME<14450,1,MARKET);
    BUYSHORT(开多条件 AND T1 AND CYC>1 AND TIME<1445,1,MARKET);
    SELLSHORT(T2,手数,MARKET)
    end


     

  • 金字塔客服:

    这是根据软件经典的DS日内模型改变的价差套利版本,因为今年行情反向套利机会很多,如七八九月份的豆油豆粕价差反向套利,鉴于此,我就把原先收盘价替换成价差,赌的是日内价差的持续扩大,但编写出来之后发现几个问题

    1,豆粕可以开仓,豆油无法开仓

    2,无法达成日内平仓

    3,信号不准确

    请版主提供一些思路或讲解,谢谢

     

     

  • 用户回复:

    更正一下,函数为

     

    INPUT:N(1,1,100,1),K1(0.7,0.1,1,0.1),K2(0.7,0.1,1,0.1),NMIN(10,1,100,1),SS(1,1,10000,1);

    C1:="Y01$CLOSE";
    C2:="M01$CLOSE";

    Spread:=C1-C2;

    CYC:=BARSLAST(DATE<>REF(DATE,1))+1;
    Spread[1]:REF(Spread,1);
    HH:HHV(Spread[1],225);
    LL:=LLV(Spread[1],225);
    OO:=valuewhen(date<>ref(date,1),Spread);

    T1:=TIME>OPENTIME(1) AND TIMET2:=TIME>=CLOSETIME(0)-NMIN*100;
    手数:=SS;
    //交易条件


    浮动区间:=HH-LL;//RANGE
    上轨:OO+K1*浮动区间,,COLORYELLOW;
    下轨:OO-K2*浮动区间,,COLORYELLOW;

    //交易条件
    开多条件:=Spread>上轨 AND HOLDING=0;
    开空条件:=Spread<下轨 AND HOLDING=0;
    //交易系统


    IF STRCMP(STKLABEL,'YO1') = 0 THEN
    BEGIN
    SELL(T2,手数,MARKET);
    BUY(开多条件 AND T1 AND CYC>1 AND TIME<1445,手数,MARKET);
    BUYSHORT(开空条件 AND T1 AND CYC>1 AND TIME<1445,1,MARKET);
    SELLSHORT(T2,手数,MARKET)
    END

    IF STRCMP(STKLABEL,'M01') = 0 THEN
    BEGIN
    SELL(T2,手数,MARKET);
    BUY(开空条件 AND T1 AND CYC>1 AND TIME<14450,1,MARKET);
    BUYSHORT(开多条件 AND T1 AND CYC>1 AND TIME<1445,1,MARKET);
    SELLSHORT(T2,手数,MARKET)
    end


     

  • 网友回复: T2定义在哪里?

     

  • 网友回复:

    T1:=TIME>OPENTIME(1) AND TIME<CLOSETIME(0)-NMIN*100;
    T2:=TIME>=CLOSETIME(0)-NMIN*100;

     

     

    这是界定了日内阶段开平仓的时间

 

有思路,想编写各种指标公式,程序化交易模型,选股公式,预警公式的朋友

可联系技术人员 QQ: 1145508240  点击这里给我发消息进行 有偿 编写!不贵!点击查看价格!


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

相关文章

    没有相关内容