请教,信号闪烁问题。

最近在调试程序,写了一个简单的开仓策略。

开仓逻辑:【前一根为阳线】且【dt=0】

用模拟账号,云端回测,总是出现信号闪烁。不知道什么原因,求解。


如果在开仓条件中去掉【dt==0】则不会出现闪烁。【我写dt==0的目的:我准备在实盘时,每次下单用FileAppend记录1次交易日志,防止在开仓bar多次记录日志】

【测试平台:TB V3     版本3.2.42】

Vars
    //此处添加变量
    Global Integer dt(0);
Events
    //此处实现事件函数
    
    //初始化事件函数,策略运行期间,首先运行且只有一次
    OnInit()
    {
        PrintClear;
    }
    //Bar更新事件函数,参数indexs表示变化的数据源图层ID数组
    OnBar(ArrayRef<Integer> indexs)
    {
        //dt=0  前一根为阳线时开多
        If(MarketPosition !=1 && BarStatus==2 && Close[1]>Open[1] && dt==0)
        {
            Bool ret = Buy(1, Open);
            String fhz = IIFString(ret, "成功", "失败");
            String str = fhz;
            If(ret)
            {
                Print(str);
                Commentary(str);
                dt = dt + 1;
            }
        }
    }


请教如何消除信号闪烁?
信号闪烁问题
信号闪烁问题
请教:TB自带的海归系统出现信号闪烁的问题
关于信号闪烁问题
信号闪烁问题
信号闪烁问题
请教定时开平仓出现信号闪烁的问题
信号闪烁问题
信号闪烁问题

请问解决了吗?也好奇这个怎么做,按自己理解逻辑,既然全局的变动了,下一次再到if,应该是不成立,防止了进入判断,但也因为这样出现闪烁?也就是永远只能用过去固定数据做判断和计算了吗?

我建议你先看看零基础课程理关于全局变量 图表信号机制 序列变量的教学

解决闪烁的核心逻辑是

IF块的内容不变


理解这个

怎么写都不会闪烁


代码中直接改变了DT

这个是低级错误



是我对程序运行机制理解不够透彻,这机制与普通的编程差别还不小。谢谢

算是量化平台传统的控制开仓次数传统机制

各个品种基本都都这样

和正常写代码有区别


如果基于MarketP、BuySell等图表/虚拟账户为基准

就用序列变量吧

逻辑是一致的


如果基于行情触发等实盘逻辑

研究一下全局变量


两种方式都需要琢磨

没有那种方式好坏

看自己癖好😁

你用global做开仓条件那不是明摆着要闪烁么?

这种错误有点过于低级了哦,零基础课程里都是讲过数据特点的,特别是用来做状态变量的时候

老刘

不是global问题撒...

用全局不是原罪😭

那是哪里的问题呢?

dt值他在改变啊

当然闪烁


但是原罪不在全局

当然

用序列是对的

你再看看他的设计目标和逻辑

和用啥没关系

明显dt不能用global啊

dt定义成series就不会闪烁了