请问crossover函数的成立逻辑是什么?

老师你好,我发现个问题,就是如果用金叉死叉反手策略,然后我在收盘前平仓的话,我发现第二天开盘第一根k线按逻辑看,是死叉,但是没有开空。我输出死叉看看是否成立,显示是不成立。所以我就很困惑,金叉死叉的逻辑到底是怎样的。我在生猪2403合约五分钟周期测试的截图,老师可以看一下12月1号的开盘情况。明显是k线跟线死叉了,但是不开空,老师指点一下是什么原因。Params //此处添加参数Vars //此处添加变量 Series<Numeric> MA; Series <Numeric> MK; Series<Bool> MAUP; Series<Bool> MADOWN;Defs //此处添加公式函数 Events //此处实现事件函数 //Bar更新事件函数,参数indexs表示变化的数据源图层ID数组 OnBar(ArrayRef<Integer> indexs) { MA=OpenD(0) + OpenD(0)*0.001; Mk=OpenD(0) - OpenD(0)*0.001; Commentary(OpenD(0)=+Text(OpenD(0))); Commentary(MA=+Text(MA)); Commentary(MK=+Text(MK)); PlotNumeric(MA,MA); PlotNumeric(MK,MK); MAUP = CrossOver(High,MA); MADOWN = CrossUnder(Low,MK); Commentary(time: + Text(time)); Commentary(MarketPosition: + Text(MarketPosition)); Commentary(MAUP: + IIFString(MAUP,true,false)); Commentary(MADOWN: + IIFString(MADOWN,true,false)); Commentary(high: + Text(high)); Commentary(low: + Text(low)); If(MarketPosition<>1 && MAUP) { Buy(1,Max(Open,MA)); } If(MarketPosition<>-1 && MADOWN) { SellShort(1,Min(open,MK)); } If(MarketPosition == 1 && Time>=0.145000 && Time < 0.150000) { Sell(0,Open); } If(MarketPosition ==-1&& Time>=0.145000 && Time < 0.150000) { BuyToCover(0,open); } }

MADOWN = CrossUnder(Low,MK); low? 虽然不知道你图上那个位置,你以为是死叉,实际

这个函数是开源的,想知道逻辑直接打开函数代码看里面怎么写的就行了原理很简单,a金叉b,那么上一根bar的a小于b,这一根bar的a大于b