信号闪烁闪得头疼,麻烦帮忙看一下,期待早日解决!


hi 上午好 请问这个豆粕的3250以下 每下跌10个点高抛低吸的策略为什么会信号闪烁

global 保证baseBKVol   basePrice  gridCount 更新 根据运行控制台打印看没啥问题

目前运行开来 账号持仓没有问题(价格达到就触发)   但是信号净仓不准确(一直少信号 价格达到了也不提醒信号)

老是提醒信号闪烁 闪烁得我头疼   麻烦看一下什么原因 非常感谢 ! 期待这您的回复!

///------------------------------------------------------------------------

// 简称: WANGGE_M2

// 名称: 网格豆粕回溯+open

// 类别: 避免闪烁信号 但是指令价(一根30mk达成 随时触发)还未达成

// 每隔间距50  初始基准价startprice   每个网格5手(包括建底仓时)

//------------------------------------------------------------------------

Params

   Numeric gridSpacing (10);  // 网格间距

   Numeric lots (1);

   Numeric startprice(3250);


Vars

   Global Numeric baseBKVol;  // 净多仓

   Global Numeric basePrice;  // 作为衡量的基准价格

   Global Numeric gridCount;  // 用于计算买量的变量


Defs

   // 这里没有需要添加的公式函数


Events

   // 初始化事件函数,策略运行期间,首先运行且只有一次

   OnInit()

   {

       // 初始化变量

       baseBKVol = 0;

       basePrice = 0;

       gridCount = 0;

   }


   // Bar更新事件函数,参数indexs表示变化的数据源图层ID数组

   OnBar(ArrayRef<Integer> indexs)

   {

       // 初始建仓

       If (MarketPosition == 0 and Close[1] <= startprice)   // ??? 要不要再加上 and open<Close[1]  防止跳空 但也限制开仓机会

       {

           gridCount = RoundDown((startprice - Close[1]) / gridSpacing, 0);

           if (gridCount >= 1)

           {

               baseBKVol =lots * gridCount;

               Buy(baseBKVol, Open);

               basePrice = Open;

               Commentary("抄底初始建仓@网格" + Text(gridCount)+",买入建仓价:" + Text(Open) + ",当前净多仓:" + Text(baseBKVol));

               Print("抄底初始建仓@网格" + Text(gridCount)+",买入建仓价:" + Text(Open) + ",当前净多仓:" + Text(baseBKVol));

           }

       }


       // 持仓网格逻辑 下跌买入(严格基于最新basePrice)

       else if (MarketPosition > 0 and Close[1] <= basePrice - gridSpacing)    // ??? 要不要再加上 and open<Close[1]  防止跳空 但也限制开仓机会

       {

           // 计算当前价格与基准价格的差值对应的网格数

           Numeric gridDiff = RoundDown((basePrice - Close[1]) / gridSpacing, 0);

           if (gridDiff >= 1)

           {

               // 根据网格数进行一次性增仓操作

               Buy(lots * gridDiff, Open);

               baseBKVol = baseBKVol + lots * gridDiff;

               basePrice = Open;  

               Commentary("抄底加仓买入@网格" + Text(gridDiff) + ",手数:" + Text(lots * gridDiff) + ",价格:" + Text(basePrice) + ",当前净多仓:" + Text(baseBKVol));

               Print("抄底加仓买入@网格" + Text(gridDiff) + ",手数:" + Text(lots * gridDiff) + ",价格:" + Text(basePrice) + ",当前净多仓:" + Text(baseBKVol));

               //gridDiff = RoundDown((basePrice - Open) / gridSpacing, 0);

           }

       }


       // 上涨卖出(严格基于最新basePrice)

       else if (MarketPosition > 0 and Close[1] >= basePrice + gridSpacing)    // ??? 要不要再加上 and open>Close[1]  防止跳空 但也限制开仓机会

       {

           // 计算当前价格与基准价格的差值对应的网格数(这里是上涨情况)

           Numeric gridDiff = RoundDown((Close[1] - basePrice) / gridSpacing, 0);

           if (gridDiff >= 1 && baseBKVol > 0)

           {

               // 确定卖出数量,不超过持仓量

               Numeric sellVol = Min(lots * gridDiff, baseBKVol);

               Sell(sellVol, Open);

               baseBKVol = baseBKVol - sellVol;

               basePrice = Open;  

               Commentary("抄底减仓卖出@网格" + Text(gridDiff) + ",手数:" + Text(sellVol) + ",价格:" + Text(basePrice) + ",当前净多仓:" + Text(baseBKVol));

               Print("抄底减仓卖出@网格" + Text(gridDiff) + ",手数:" + Text(sellVol) + ",价格:" + Text(basePrice) + ",当前净多仓:" + Text(baseBKVol));

               //gridDiff = RoundDown((Open - basePrice) / gridSpacing, 0);

           }

       }

   }



//------------------------------------------------------------------------

// 编译版本 2025/04/03 144901

// 版权所有 tb282723

// 更改声明 TradeBlazer Software保留对TradeBlazer平台

// 每一版本的TradeBlazer公式修改和重写的权利

//-----------------------------------------------------------------------------------------

附带我上个帖子也没解决 帮忙看一下
信号闪烁问题
量化策略不出信号了,帮忙解决下
如何解决信号闪烁
老师,麻烦帮忙看看这个现象是信号闪烁导致的吗?
闪烁解决方案
请帮忙解决一下旗舰版信号闪烁问题
信号闪烁问题求解决!
闪退闪退闪退
盘中信号还是会闪


这种图表加全局,很难想象你是如何设计的

你这里的baseprice肯定是之前的某个值吧,执行完sell,你变成open,我觉得你是如何保证前后图表一致的


全局global有问题 我替换掉了 目前没啥问题了 非常感谢您!

好