那位老师帮帮忙 该成先平仓后开仓

Params
 Numeric FastLength(5);// 短期指数平均线参数
 Numeric SlowLength(20);// 长期指数平均线参数
Vars
 Series<Numeric> AvgValue1; 
 Series<Numeric> AvgValue2;
Events
 OnBar(ArrayRef<Integer> indexs)
 {
  AvgValue1 = AverageFC(Close,FastLength);
  AvgValue2 = AverageFC(Close,SlowLength);
  PlotNumeric("MA1",AvgValue1);
  PlotNumeric("MA2",AvgValue2);  
  
  
  
  If(MarketPosition <>1 && AvgValue1[1] > AvgValue2[1])
  {
   Buy(0,Open);
  }
  
  If(MarketPosition <>-1 && AvgValue1[1] < AvgValue2[1])
  {
   SellShort(0,Open);
  } 
 }

先平仓后开仓该如何编写。
那位老师帮帮忙 合并修改
实际代码是先买卖后赋值 还是先赋值后买卖 哪样代码会更准确些了
老师好,请教一个问题,如何写当跟BAR上不能交易两次,比如开仓后不能平仓和平仓后不能再开仓?谢谢!
跨周期的问题那位老师帮我看看
老师麻烦帮忙看下该怎样修改
请问老师,毫秒级别的开、损会导致先止后开?
请教老师,我想用挂单价开仓,用对手价平仓如何实现呢?
关于开仓策略与平仓策略对接
保存开仓和平仓时的时间

 If(MarketPosition <>1 && AvgValue1[1] > AvgValue2[1])
  {

Buytocover(0,Open);
   Buy(0,Open);
  }
  
  If(MarketPosition <>-1 && AvgValue1[1] < AvgValue2[1])
  {

sell(0,Open);
   SellShort(0,Open);
  } 
 }

//不一定能起效果,如果要百分百先平仓成交再开仓,需要写订单管理算法交易模块,非常复杂,建议多加保证金,如果保证金只够一手开仓那杠杆也太高了,不建议这样执行程序化交易