老师你好,我发现个问题,就是如果用金叉死叉反手策略,然后我在收盘前平仓的话,我发现第二天开盘第一根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