全部 TBQuant功能 TBL语言 TB开户 问答专区 其他
交易信号丢失
2022-04-21 15:38

回测报告中的信号丢失。问题如图,回测报告中画红框的品种都存在信号丢失的情况,且两个相同的克隆过来的策略单元信号丢失的部分还不一样。同样的策略放到旗舰版显示正常,放到TBQUANT就出现显示错误了。

另外,通过自查,不是因为分配资金不够或者单元资金亏完而导致的信号丢失。

202****2234028003

如回复图一应该产生以上交易信号,同样的公式没有修改,但是现在本改有的信号全部都没有了。

2022-04-22 14:38
kyover

你上面这个公式tradereview 这个是复盘,不是什么策略,这个是把交易记录复盘显示在bar上

不太清楚你说的什么意思,系统策略也会碰到信号丢失的情况么?如果系统策略不会信号丢失,那就是你公式的问题

2022-04-21 20:47
202****2234028003
@kyover

如回复图一应该产生以上交易信号,同样的公式没有修改,但是现在本改有的信号全部都没有了。 而且每次重新启动软件打开策略报告,都会有不同的策略单元本该有的历史交易信号变没有。

2022-04-22 14:42
kyover
@202****2234028003

为什么要把公式名抹掉?你确定不是你的操作问题么?你如果操作系统公式,也会出现你说的问题吗?如果会,麻烦请详细描述怎么操作的,我来复现看看什么问题。

现在你提供的信息不能确定是软件机制问题,还是你操作哪里有问题

2022-04-22 15:07
202****2234028003
@kyover

Params
    Numeric TRS(10);                        //移动幅度
    Numeric M(250);//周期参数
    Numeric S(2);//加权系数
    Numeric Fund(20000); //投入保证金;
Vars
    Numeric Lots(0);
    Series<Numeric> MA1;
    Series<Numeric> Slow_MA1;
    Series<Numeric> MA2;
    Series<Numeric> Slow_MA2;    
    Series<Numeric> DLH;
    Series<Numeric> MADLH;
    Series<Bool> DK;
    Series<Bool> KK;
    Series<Numeric> HighAfterEntry;//开仓后出现的最高价
    Series<Numeric> LowAfterEntry;//开仓后出现的最低价
    Series<Numeric> liQKA;
    Series<Numeric> DliqPoint;
    Series<Numeric> KliqPoint;
    Series<Numeric> barcoutN;
    Series<Numeric> HH;
    Series<Numeric> LL;
Events
    onBar(ArrayRef<Integer> indexs)
    {    
    
                
        //记录开仓后高低点
        If(BarsSinceentry == 0)
        {
            HighAfterEntry = High;
            LowAfterEntry = Low;
        }else
        {
            HighAfterEntry = Min(HighAfterEntry,High); // 空头止损,更新最低的最高价
            LowAfterEntry = Max(LowAfterEntry,Low);    // 多头止损,更新最高的最低价
        }
        
        Lots=Max(1,IntPart(Fund/(O*ContractUnit*BigPointValue*0.1)));    //计算开仓手数
    
        MA1=SMA((H+L+C)/3,M/S,S);//计算SMA指数加权均线
        Slow_MA1=XAverage(MA1,M/S); //取MAJJ的均值 快线
        MA2=SMA((H+L+C)/3,M,S);//计算长周期SMA指数加权均线
        Slow_MA2=XAverage(MA2,M);//取MAMIN的均值 慢线
    
        DLH=Slow_MA1-Slow_MA2;//计算加权指数波动差
        MADLH=XAverage(DLH,M/S);//取短期均值
        
        DK=(DLH>MADLH and DLH>0) and (MA1>Slow_MA1 and MA2>Slow_MA2 and Slow_MA1>Slow_MA2);//波动差大于周期内均值,短期指数均线大于周期内均值,长期指数均线大于周期内均值,短期指数均线大于长期均值;
        KK=(DLH<MADLH and DLH<0) and (MA1<Slow_MA1 and MA2<Slow_MA2 and Slow_MA1<Slow_MA2);//波动差小于周期内均值,短期指数均线小于周期内均值,长期指数均线小于周期内均值,短期指数均线小于长期均值;
        
        HH=Highest(H,M);
        LL=Lowest(L,M);
        PlotNumeric("SMA",MA1);
        PlotNumeric("MA2",MA2);
         
        If(DK[1] and H>=HH[1] and MarketPosition<>1 ) //开多
        {
            Buy(Lots,Max(Open,HH[1]));
            LowAfterEntry = Max(Open,HH[1]);//保存多头开仓价格;
        }
        If(KK[1] and L<=LL[1] and MarketPosition<>-1) //开空
        {
            SellShort(Lots,Min(Open,LL[1])); 
            HighAfterEntry = Min(Open,LL[1]);//保存空头开仓价格;
        }
    
    
        //移动出场
        If(MarketPosition == 0)   // 自适应参数默认值;
        {
            liQKA = 1; 
            barcoutN=0;
        }Else if(BarsSinceEntry>barcoutN)                     //当有持仓的情况下,liQKA会随着持仓时间的增加而逐渐减小,即止损止盈幅度乘数的减少。
        {
            liQKA = liQKA - 0.1; 
            liQKA = Max(liQKA,0.3);
            barcoutN=BarsSinceEntry;
        }
        if(MarketPosition>0)
        {
        DliqPoint = LowAfterEntry - (Open*TRS/1000)*liQKA; //经过计算,这根吊灯出场线会随着持仓时间的增加变的越来越敏感;
        }
        if(MarketPosition<0)
        {
        KliqPoint = HighAfterEntry + (Open*TRS/1000)*liQKA; //经过计算,这根吊灯出场线会随着持仓时间的增加变的越来越敏感;
        }
    
        If(KliqPoint[1]>0 and MarketPosition<0)PlotNumeric("KliqPoint[1]",KliqPoint[1]);
        if(DliqPoint[1]>0 and MarketPosition>0)PlotNumeric("DliqPoint[1]",DliqPoint[1]);
        
        // 持有多单时
        If(MarketPosition >0 And BarsSinceEntry >0  And Low <= DliqPoint[1] and DliqPoint[1]>0 and DliqPoint[1]>0  and BarsSinceEntry>0) 
        {
        
                Sell(0,Min(Open,DliqPoint[1]));
                DliqPoint=0;
                barcoutN=0; 
    
        }
        // 持有空单时
        If(MarketPosition <0 And BarsSinceEntry >0  And High >= KliqPoint[1] and KliqPoint[1]>0 and KliqPoint[1]>0  and BarsSinceEntry>0)
        {    
            
                BuyToCover(0,Max(Open,KliqPoint[1]));
                KliqPoint=0;
                barcoutN=0;
    
        }
    
        
    }
你加载几个品种试一下就行了 比方说动力煤 加载多了在回测报告那里看会找到类似下图的信号确实的曲线

2022-04-22 22:45
您未登录,请先 登录注册 后发表评论
顶部