全部 TBQuant功能 TBL语言 TB开户 问答专区 其他
多图层用for语句循环交易提示信号闪烁
leileiTB 分享到
2022-09-17 21:33

 

 

 

这样子固定下来就不会闪烁,请问这是怎么了???

 

 

简化代码:
//------------------------------------------------------------------------
// 简称: DualMA
// 名称: 双均线交易系统
// 类别: 公式应用
// 类型: 内建应用
//------------------------------------------------------------------------
Params
    Numeric FastLength(5);// 短期指数平均线参数
    Numeric SlowLength(20);// 长期指数平均线参数
    Numeric length(20);
Vars
    Array<Numeric> AvgValue1; 
    Array<Numeric> AvgValue2;
    Array<Numeric> arr;
    Array<Integer> id;
    Array<String> symb;
    Numeric i;
    
Events
    OnBar(ArrayRef<Integer> indexs)
    {
        //---------计算各个品种的斜率并存入数组----------  
        For i=0 To DataSourceSize-1   
        {
            arr[i] = data[i].close[1]-data[i].close[10]; //将每一个品种,存入一个数组当中。 
            id[i]= i;                 //将品种数据源号,存入数组。这两个数组,用于冒泡排序。
            symb[i] = Data[i].SymbolName;
         }
         Na1Sort2(arr, id, 0, DataSourceSize-1, False);//一维数组排序带下标
         
         
         Numeric i;
        Range[i = 0:datasourcesize-1]
        {
            ArrayInsert(data[i].AvgValue1,0,AverageFC(data[i].Close,FastLength));
            ArrayInsert(data[i].AvgValue2,0,AverageFC(data[i].Close,SlowLength));
        }
        
        For i=0 to DataSourceSize-1
        {
            Commentary("品种:"+data[i].SymbolName+",id[0]:"+Text(id[0]));
            Commentary("MA1:"+text(data[i].AvgValue1[0]));
            Commentary("MA2:"+text(data[i].AvgValue2[0]));
            If(i==id[0])
            {
                data[i].buy(0,data[i].o);
            }
        }
    }
//------------------------------------------------------------------------
// 编译版本    GS2010.12.08
// 版权所有    TradeBlazer Software 2003-2025
// 更改声明    TradeBlazer Software保留对TradeBlazer平
//            台每一版本的TradeBlazer公式修改和重写的权利
//------------------------------------------------------------------------

kyover

信号闪烁的原因就是判断条件会随着盘中数据变动发生变化

所以id[1]如果会发生变化,那就可能产生信号闪烁

所以疑问是什么?

2022-09-19 10:17
您未登录,请先 登录注册 后发表评论
顶部