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

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有问题 我替换掉了 目前没啥问题了 非常感谢您!

回复: