网格策略账户净仓与信号净仓不一致 麻烦看一下
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)); } } }