系统函数:基于商品价差的通道突破系统多执行问题

老师您好。最近在研究系统函数基于商品价差的通道突破系统,里面的开仓条件是:If(Data0.Marketposition == 0 And CC[1] >= UpperLine[1] And Data0.Vol > 0 And Data1.Vol > 0)理论上每一笔交易两个图层应该都是同时开仓或平仓的,Data1没有成交量的话应该不会开仓(如图一)但是在做回测以及模拟盘的时候发现还是经常会瘸腿(只有Data0开仓或平仓)(如图二),想请教一下老师这是什么原因呢,要怎么调整才能规避这个问题?

建议你检查一下可用资金够不够

回复:老师您好,我是用模拟盘,每次开仓一手,应该不是资金的问题,图表回测和模拟盘跑的时候都会有这个问题,这是个系统自带的案例,我做了好多次测试一直解决不了,尤其是在10秒的线上出现劈叉的概率还挺高的。公式是// 简称: SpreadChannelBreakout_L// 名称: 基于商品价差的通道突破系统多

老师您好,完整的代码如下,如果周期设置的越短(比如10秒线,越容易出错)Params Numeric Lots0(1); // 商品A的头寸 Numeric Lots1(1); // 商品B的头寸 Numeric Length(20); // 通道的周期数 Numeric StopLen(10); // 止损通道的周期数Vars Series<Numeric> OO; // 价差开盘价 Series<Numeric> HH; // 价差最高价 Series<Numeric> LL; // 价差最低价 Series<Numeric> CC; // 价差收盘价 Numeric Factor0; // A商品计算价差的系数 Numeric Factor1; // B商品计算价差的系数 Series<Numeric> UpperLine; // 通道上轨 Series<Numeric> LowerLine; // 通道下轨 Series<Numeric> StopLine; // 止损位Events OnInit() { Numeric count = Max(Length,StopLen); SetBeginBarMaxCount(count - 1); } OnBar(ArrayRef<Integer> indexs) { // 价差计算系数 Factor0 = Lots0*Data0.ContractUnit*Data0.BigPointValue; Factor1 = Lots1*Data1.ContractUnit*Data1.BigPointValue; // 计算价差并输出价差K线 CC = Data0.Close*Factor0 - Data1.Close*Factor1; OO = Data0.Open*Factor0 - Data1.Open*Factor1; HH = Max(OO,CC); LL = Min(OO,CC); PlotNumeric(\"Open\",OO); PlotNumeric(\"High\",HH); PlotNumeric(\"Low\",LL); PlotNumeric(\"Close\",CC); // 计算价差的周期通道上下轨 UpperLine = Highest(HH[1],Length); LowerLine = Lowest(LL[1],Length); PlotNumeric(\"UpperLine\", UpperLine); PlotNumeric(\"LowerLine\", LowerLine); // 开仓 If(Data0.Marketposition == 0 And CC[1] >= UpperLine[1] And Data0.Vol > 0 And Data1.Vol > 0) { Data0.Buy(Lots0, data0.Open); Data1.SellShort(Lots1, Data1.Open); } // 反向平仓 If(Data0.Marketposition == 1 And CC[1] <= LowerLine[1] And Data0.Vol > 0 And Data1.Vol > 0) { Data0.Sell(0, Data0.Open); Data1.BuyToCover(0, Data1.Open); } // 止损 Stopline = Lowest(LL[1], StopLen); If(Data0.MarketPosition == 1 And Data0.BarsSinceEntry > 0 And Data0.Vol > 0 And Data1.Vol > 0) { If(CC[1] <= StopLine[1]) { Data0.Sell(0,Data0.Open); Data1.BuyToCover(0,Data1.Open); } } }//------------------------------------------------------------------------// 编译版本 GS2014.10.25// 版权所有 TradeBlazer Software 2003-2025// 更改声明 TradeBlazer Software保留对TradeBlazer平// 台每一版本的TradeBlazer公式修改和重写的权利//------------------------------------------------------------------------

下单语句呢,有没有超价下单