这是一段系统的自带的四线交易策略的代码,我加入了全局变量后,发生信号闪烁,请问原因
2023-04-28 10:38

Params

Numeric LEFast(5); //多头入场短均线周期参数

Numeric LESlow(20); //多头入场长均线周期参数

Numeric LXFast(3); //多头出场短均线周期参数

Numeric LXSlow(10); //多头出场长均线周期参数

Numeric SEFast(5); //空头入场短均线周期参数

Numeric SESlow(20); //空头入场长均线周期参数

Numeric SXFast(3); //空头出场短均线周期参数

Numeric SXSlow(10); //空头出场长均线周期参数

Numeric cp(1); //序号

Vars

Series<Numeric> MALEFast; //多头入场短均线

Series<Numeric> MALESlow; //多头入场长均线

Series<Numeric> MALXFast; //多头出场短均线

Series<Numeric> MALXSlow; //多头出场长均线

Series<Numeric> MASEFast; //空头入场短均线

Series<Numeric> MASESlow; //空头入场长均线

Series<Numeric> MASXFast; //空头出场短均线

Series<Numeric> MASXSlow; //空头出场长均线

Events

OnBar(ArrayRef<Integer> indexs)

{

MALEFast=Average(Close,LEFast); //多头入场短均线

MALESlow=Average(Close,LESlow); //多头入场长均线

MALXFast=Average(Close,LXFast); //多头出场短均线

MALXSlow=Average(Close,LXSlow); //多头出场长均线

MASEFast=Average(Close,SEFast); //空头入场短均线

MASESlow=Average(Close,SESlow); //空头入场长均线

MASXFast=Average(Close,SXFast); //空头出场短均线

MASXSlow=Average(Close,SXSlow); //空头出场长均线

//系统入场

if(GetGlobalVar2(\"fg\")==InvalidNumeric)

SetGlobalVar2(\"fg\",0);

If(Marketposition <> 1 And Currentbar >= 100&&GetGlobalVar2(\"fg\")==0)  //两组均线均成多头排列时且当前价高于上根BAR最高价入场

{

If(MALEFast[1] > MALESlow[1] And MALXFast[1] > MALXSlow[1] And High >= High[1] And Vol > 0&&GetGlobalVar2(\"fg\")==0)

{

Buy(0,Max(Open,High[1]));

SetGlobalVar2(\"fg\",cp);

}

}

//系统出场

If(marketposition == 1 And BarsSinceEntry > 0 And Vol > 0&&GetGlobalVar2(\"fg\")==cp)

{

If(MALXFast[1] < MALXSlow[1]&&GetGlobalVar2(\"fg\")==cp ) //小周期多头均线组合成空头排列出场

{

Sell(0,Open);

SetGlobalVar2(\"fg\",0);

}

Else If( MASEFast[1] < MASESlow[1] And MASXFast[1] < MASXSlow[1] And Low <= Low[1]&&GetGlobalVar2(\"fg\")==cp) //两组均线分别空头排列且低于上根BAR最低价出场

{

Sell(0,Min(Open,Low[1]));

SetGlobalVar2(\"fg\",0);

}

}

Commentary(\"状态 \"+text(GetGlobalVar2(\"fg\")));

}

评论区
zhbnew

那么也就不能利用它来做同品种间的不同策略的互斥啦?

2023-04-29 07:48
zhbnew

啊明白了~!

2023-04-29 07:45
顶部