//被引用
Range[1:1]
{
DIFF=EMA(CLOSE,12) - EMA(CLOSE,26);//短周期与长周期的收盘价的指数平滑移动平均值做差。
DEA =EMA(DIFF,9);//DIFF的M个周期指数平滑移动平均
MACD=2*(DIFF-DEA);//DIFF减DEA的2倍画柱状线
MACDX=MA(MACD,2);
Bool KD1;
Bool KK1;
KD1=DIFF>REF(DIFF,1);
KK1=DIFF<REF(DIFF,1);
K1=EMA(C,3);
K2=EMA(C,5);
K3=EMA(C,8);
K4=EMA(C,10);
K5=EMA(C,12);
K6=EMA(C,15);//定义短期均线组
K7=EMA(C,30);
K8=EMA(C,35);
K9=EMA(C,40);
K10=EMA(C,45);
K11=EMA(C,50);
K12=EMA(C,60);//定义长期均线组
MINN=Min(K1,Min(K2,Min(K3,Min(K4,Min(K5,K6)))));
MAXX=Max(K7,Max(K8,Max(K9,Max(K10,Max(K11,K12)))));
MAXXD=Max(K1,Max(K2,Max(K3,Max(K4,Max(K5,K6)))));
MINNC=Min(K7,Min(K8,Min(K9,Min(K10,Min(K11,K12)))));
Bool KD2;
Bool KK2;
KD2=CrossOver(MINN,MAXX);
KK2=CrossUnder(MAXXD,MINNC);
If (Exact(Upper(Import),\"MACD\"))
{
KD=KD1;
KK=KK1;
}
If (Exact(Upper(Import),\"MA\"))
{
KD=KD2;
KK=KK2;
}
}
TT=M1-M2<=100*X AND M1-M2>=1*X;//高低差
}
OnBarClose(ArrayRef<Integer> indexs)//避免闪烁开仓
{
Range[1:1]
{
/*
KD:VAR.KD;
KK:VAR.KK;
*/
Data0.KD=Data1.KD[1];
Data0.KK=Data1.KK[1];
Hide();
}
//多头开仓1
If (MarketPosition<>1 And Vol>0 And KD And L>M1 And CQ>0 And TT AND (MACD-REF(MACD,1))<2)
{
myPrice=Close;
Buy( 1,myPrice);
Commentary(\"多头开仓\");
}
//空头开仓1
If (MarketPosition<>-1 And Vol>0 And KK And H<M2 And CQ<0 And TT AND (REF(MACD,1)-MACD)<2)
{
myPrice=Close;
SellShort( 1,myPrice);
Commentary(\"空头开仓\");
}
帮忙看下说明原因 我怀疑是不是引用MA上穿下穿的时候 刚好有点摩擦,要穿不穿的时候 被闪烁了,但是我取的上一根K线啊。
第一这不是tbquant语言
第二如果发生信号闪烁消息中心是会通知的,逐一排查对应条件的bool表达式