全部 智大领峰 TBQuant功能 TBL语言 TB开户 问答专区 高手圈 其他
晚早中盘时间切割
lee25133 分享到
2022-09-16 14:30

老师,你好,我想做日内策略,把晚早中盘时间切割以下。在  ypxz /bpxz(开盘设置的等待区间形成的时间条件) 有这两个条件下没有买卖信号?整体编辑的感觉这个写法好累赘,有其他的编写方法么?本来想用BarsSinceToday 的,但是这个只能过滤夜盘等待的时间,白盘不知道能怎么过滤

Params
    Numeric t1(30);
    Numeric t2(15);
    
Vars
    Series<Numeric> my_H30;
    Series<Numeric> my_L30;
    Series<Numeric> my_RANGRH30;
    Series<Numeric> my_RANGRL30;
    Series<Numeric> my_H15;
    Series<Numeric> my_L15;
    Series<Numeric> range30mH;
    Series<Numeric> range30mL;
    Series<Numeric> range15mH;
    Series<Numeric> range15mL;
    Series<Bool> ypxz(False); //夜盘交易时间限制
    Series<Bool> bpxz(False); //白盘交易时间限制

Events
    
    OnBar(ArrayRef<Integer> indexs)
    {
        range30mH = Highest(H[1],t1);
        range30mL = Lowest(L[1],t1);
        range15mH = Highest(H[1],t2);
        range15mL = Lowest(L[1],t2);
        If(Time>=0.210000 && time<=0.230000) //夜盘
        {
            my_H15 = range15mH;
            my_L15 = range15mL;
            PlotNumeric ("my_H15",my_H15);
            PlotNumeric ("my_L15",my_L15);
            If(Time>=0.210000 && time<=0.213000) ypxz ==true; //该时段不交易
            If(Time>=0.210000 && time<=0.213000) //锁定夜盘t1周期内高点
            {
                my_RANGRH30 = range30mH;
                my_RANGRL30 = range30mL;
            }
            my_H30 = my_RANGRH30;
            my_L30 = my_RANGRL30;
            PlotNumeric ("my_H30",my_H30);
            PlotNumeric ("my_L30",my_L30);
            
            //Entry 夜盘开仓
            If(C>my_H15 && MarketPosition ==0 && ypxz <>true)
            {
                Buy(1,Max(Open,my_H15));
            }
            If(c<my_L15 && MarketPosition ==0 && ypxz <>true)
            {
                SellShort(1,min(O,my_L15));
            }
            
            //Exit  夜盘离场
            If(MarketPosition>0) //持有多单情况下
             {
                 If(Time == 0.2259)
                 {
                     Sell(0,Open);
                     Commentary("限时平多");
                 }
             }
            Else If (MarketPosition<0) //持有空单情况下
            {
                If(Time == 0.2259)  
                {
                    BuyToCover(0,Open);
                    Commentary("限时平空");
                }
            } 
        }
        
        If(Time>=0.090000 && time<=0.150000) //白盘
        {
            my_H15 = range15mH;
            my_L15 = range15mL;
            PlotNumeric ("my_H15",my_H15);
            PlotNumeric ("my_L15",my_L15);
            If(Time>=0.090000 && time<=0.093000) bpxz ==true;//该时段不交易
            If(Time>=0.090000 && time<=0.093000) //锁定t1周期高点
            {
                my_RANGRH30 = range30mH;
                my_RANGRL30 = range30mL;
            }
            my_H30 = my_RANGRH30;
            my_L30 = my_RANGRL30;
            PlotNumeric ("my_H30",my_H30);
            PlotNumeric ("my_L30",my_L30);
            
            //Entry
            If(C>my_H15 && MarketPosition ==0 && bpxz <>true)
            {
                Buy(1,Max(Open,my_H15));
            }
            If(c<my_L15 && MarketPosition ==0 && bpxz <>true )
            {
                SellShort(1,min(O,my_L15));
            }
            
            //Exit
            If(MarketPosition>0) //持有多单情况下
             {
                 If(Time == 0.1459)
                 {
                     Sell(0,Open);
                     Commentary("限时平多");
                 }
             }
            Else If (MarketPosition<0) //持有空单情况下
            {
                If(Time == 0.1459)  
                {
                    BuyToCover(0,Open);
                    Commentary("限时平空");
                }
            } 
        }
    }

 

您未登录,请先 登录注册 后发表评论
顶部