网格策略账户净仓与信号净仓不一致 麻烦看一下

hi,老师好,下面是个焦煤的自动网格单,1370之下每下跌40个点高抛低吸

问题:1为什么会产生信号闪烁 我用的是close[1]及open  应该不会产生信号闪缩

2 经过价格验证 我感觉账户净仓是对的  信号净仓没变化  那后续账户净仓仍然会执行我的策略高抛低吸  那我就不不管信号净仓?

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

// 简称: WANGGE_JM2

// 名称: 网格焦煤回溯+open

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

// 每隔间距40  JM初始基准价1370   每个网格4手(包括建底仓时)

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

Params

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


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)

   {

       // 初始建仓(保持Close)

       If (MarketPosition == 0 and Close[1] <= 1370)

       {

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

           if (gridCount >= 1)

           {

               baseBKVol = 4 * gridCount;

               Buy(4 * gridCount, Open);

               basePrice = Open;

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

           }

       }


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

       else if (MarketPosition > 0 and Close[1] <= basePrice - gridSpacing)

       {

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

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

           if (gridDiff >= 1)

           {

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

               Buy(4 * gridDiff, Open);

               baseBKVol = baseBKVol + 4 * gridDiff;

               basePrice = Open;  

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

           }

       }


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

       else if (MarketPosition > 0 and Close[1] >= basePrice + gridSpacing)

       {

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

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

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

           {

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

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

               Sell(sellVol, Open);

               baseBKVol = baseBKVol - sellVol;

               basePrice = Open;  

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

           }

       }

   }

帐户净仓与信号净仓数量明显不匹配
关于函数A_GetSignalNetPosition什么是所谓的账户“信号净仓”
在换一台电脑后登录后,为什么我的帐户净仓和信号净仓不致了?请老师帮忙看看
净头寸同步?
信号闪烁闪得头疼,麻烦帮忙看一下,期待早日解决!
模拟测试获取净持仓
网格交易策略 怎么向上加仓
算法代理下单模式默认按照净头寸吗?
求教:同一合约使用净市值,该“净市值”是什么概念,如何计算?
下单与信号不一致

你这个网格变量global那你每次启动不就不同了?

hi 对 这样baseBKVol、 basePrice、gridCount每次会更新成最新的 除了信号闪烁 打印都是对的   账户净仓都是对的  

我刚刚删除了3个Global    现在一个信号都没有了 请问我该怎么办  就差这个网格的更新了   麻烦指导一下  🤝

  Global Numeric baseBKVol;  // 净多仓

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

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

加了global 因模拟在跑  除了信号闪烁 成交、账户净仓都是对的  开平、权益也感觉没啥我呢提         但是信号净仓那不更新  吐血  想跑实盘也不敢跑 就差这个信号闪烁问题 不用global  以下三个变量都不更新了  不知道什么问题导致信号闪烁


Global Numeric baseBKVol;  // 净多仓

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

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