用LinearRegSlope函数时有信号闪烁
正好这两天在这折腾信号闪烁和实盘报单的各种情况, 我这里有个取巧的通用方法可以在一根bar上锁住出现的信号不让其闪烁,代码如下
注意: 这个方法只是为了消除信号闪烁,如果通过buy/sell触发实盘报单,可能会出现实盘与虚拟账户头寸不一致的情况影响后续平仓操作,仅供思路参考
//------------------------------------------------------------------------
// 简称: sbx_trade_locksignal
// 名称: 锁定信号的通用办法
// 类别: 策略应用
// 类型: 用户应用
// 输出: Void
//------------------------------------------------------------------------
Params
Vars
Global Integer tickCounter(0);
Global Integer barCounter(0);
Global Bool sigShowUpOnBar(False);
Defs
Events
OnBarOpen(ArrayRef<Integer> indexes) {
// 跳过历史bar
If(QuoteStatus <> Enum_QuoteStatus_RealTime )
Return;
tickCounter = 0;
barCounter = barCounter + 1;
sigShowUpOnBar = False;
}
//Bar更新事件函数,参数indexs表示变化的数据源图层ID数组
OnBar(ArrayRef<Integer> indexs)
{
If(QuoteStatus <> Enum_QuoteStatus_RealTime )
Return;
tickCounter = tickCounter + 1;
If(sigShowUpOnBar)
{
// 满足条件的信号出现后在这个Bar上“锁住”信号
Buy(2, C);
Print("信号锁定 - Bar #" + Text(barCounter) + " - on titck #" + Text(tickCounter));
} Else {
// 实际的交易触发逻辑: 开盘后第5跟和第7跟Bar上收到第二个tick时下买单
If(barCounter == 5 OR barCounter == 7)
If(tickCounter == 2)
{
Buy(2, C);
sigShowUpOnBar = True;
Print("信号出现 - Bar #" + Text(barCounter) + " - on titck #" + Text(tickCounter));
}
}
}测试截图如下

虽然说信号闪烁问题要具体问题具体分析解决,可以看看这个教学视频了解一下原理和常见处理方法,说不定搞清楚了原理自己就解决了
信号闪烁产生原因及处理方法20211104 https://video.tbquant.net/video?id=video239
信号闪烁取决于你怎么使用函数,怎么写代码