TB策略开仓

程序跑了一下,开了这么多次的仓位,苦思一周解决不了,请帮忙修改一下,能按海龟法则开3次仓就太好了。谢谢老师!//------------------------------------------------------------------------// 简称: TurtleTrader// 名称: 海龟交易系统// 类别: 公式应用// 类型: 内建应用//------------------------------------------------------------------------//------------------------------------------------------------------------// 简称: BOLLQDQD// 名称: BOLLQDQDBOLLQDQD// 类别: 公式应用// 类型: 用户应用// 输出: Void//------------------------------------------------------------------------/*策略说明:基于布林通道的突破系统系统要素:1、基于收盘价计算而来的布林通道2、基于收盘价计算而来的进场过滤器3、自适应出场均线入场条件:1、满足过滤条件,并且价格上破布林通道上轨,开多单2、满足过滤条件,并且价格下破布林通道下轨,开空单出场条件:1、持有多单时,自适应出场均线低于布林通道上轨,并且价格下破自适应出场均线,平多单2、持有空单时,自适应出场均线高于布林通道下轨,并且价格上破自适应出场均线,平空单*/ParamsNumeric nEntries(3); // 最大建仓次数Numeric RiskRatio(1); // % Risk Per N ( 0 - 100)Numeric ATRLength(20); // 平均波动周期 ATR LengthNumeric bollingerLengths(50); // 布林通道参数Numeric Offset(1.25); // 布林通道参数Numeric rocCalcLength(30); // 过滤器参数Numeric liqLength(50); // 自适应出场均线参数Bool LastProfitableTradeFilter(True); // 使用入市过滤条件VarsNumeric MinPoint; // 最小变动单位Series<Numeric> AvgTR; // ATRNumeric N; // N 值Numeric TotalEquity; // 按最新收盘价计算出的总资产Numeric TurtleUnits; // 交易单位// 布林Series<Numeric> MidLine(0); // 布林通道中轨Numeric Band(0);Series<Numeric> upBand(0); // 布林通道上轨Series<Numeric> rocCalc(0); // 过滤器Series<Numeric> liqDays(50); // 自适应出场均线的参数Series<Numeric> liqPoint(0); // 自适应的出场均线Numeric myEntryPrice; // 开仓价格Numeric myExitPrice; // 平仓价格Bool SendOrderThisBar(False); // 当前Bar有过交易Series<Numeric> preEntryPrice(0); // 前一次开仓的价格Series<Bool> PreBreakoutFailure(false); // 前一次突破是否失败EventsOnBar(ArrayRef<Integer> indexs){If(BarStatus == 0){preEntryPrice = InvalidNumeric;PreBreakoutFailure = false;}MinPoint = MinMove*PriceScale;AvgTR = XAverage(TrueRange,ATRLength);N = AvgTR[1];TotalEquity = Portfolio_CurrentCapital() + Portfolio_UsedMargin();TurtleUnits = (TotalEquity*RiskRatio/100) /(N * ContractUnit()*BigPointValue());TurtleUnits = IntPart(TurtleUnits); // 对小数取整// 布林通道中轨MidLine = AverageFC(Close,bollingerLengths);Band = StandardDev(Close,bollingerLengths,2);// 布林通道上轨upBand = MidLine + Offset*Band;// 画线PlotNumeric(MidLine,MidLine);PlotNumeric(upBand,upBand);// 进场过滤器rocCalc = Close - Close[rocCalcLength - 1];Commentary(N=+Text(N));Commentary(preEntryPrice=+Text(preEntryPrice));Commentary(PreBreakoutFailure=+IIFString(PreBreakoutFailure,True,False));// 当不使用过滤条件,或者使用过滤条件并且条件为PreBreakoutFailure为True进行后续操作If(MarketPosition == 0 && ((!LastProfitableTradeFilter) Or (PreBreakoutFailure)))// 自适应出场均线{liqDays = liqLength;}{liqDays = liqDays - 1;liqDays = Max(liqDays,10);}liqPoint = Average(Close,liqDays);// 画线PlotNumeric(liqPoint,liqPoint);{// 突破开仓If(rocCalc[1] > 0 And High >= upBand[1] && TurtleUnits >= 1){// 开仓价格取突破上轨+一个价位和最高价之间的较小值,这样能更接近真实情况,并能尽量保证成交myEntryPrice = min(high,upBand[1] + MinPoint);myEntryPrice = IIF(myEntryPrice < Open, Open,myEntryPrice); // 大跳空的时候用开盘价代替preEntryPrice = myEntryPrice;Buy(TurtleUnits,myEntryPrice);SendOrderThisBar = True;PreBreakoutFailure = False;}}If(MarketPosition == 1) // 有多仓的情况{Commentary(ExitLowestPrice=+Text(upBand[1]));If(liqPoint[1] < upBand[1] And Low <= liqPoint[1]){myExitPrice = max(Low,upBand[1] - MinPoint);myExitPrice = IIF(myExitPrice > Open, Open,myExitPrice); // 大跳空的时候用开盘价代替Sell(0,myExitPrice);    // 数量用0的情况下将全部平仓}Else{If(preEntryPrice!=InvalidNumeric && TurtleUnits >= 1){If(Open >= preEntryPrice + 0.5*N && CurrentEntries < nEntries) // 如果开盘就超过设定的1/2N,则直接用开盘价增仓。{myEntryPrice = Open;preEntryPrice = myEntryPrice;Buy(TurtleUnits,myEntryPrice);SendOrderThisBar = True;}while(High >= preEntryPrice + 0.5*N && CurrentEntries < nEntries) // 以最高价为标准,判断能进行几次增仓{myEntryPrice = preEntryPrice + 0.5 * N;preEntryPrice = myEntryPrice;if(False == Buy(TurtleUnits,myEntryPrice)){break;}SendOrderThisBar = True;}}// 止损指令If(Low <= preEntryPrice - 2 * N && SendOrderThisBar == false) // 加仓Bar不止损{myExitPrice = preEntryPrice - 2 * N;myExitPrice = IIF(myExitPrice > Open, Open,myExitPrice); // 大跳空的时候用开盘价代替Sell(0,myExitPrice); // 数量用0的情况下将全部平仓PreBreakoutFailure = True;}}}}//------------------------------------------------------------------------// 编译版本 GS2010.12.08// 版权所有 TradeBlazer Software 2003-2025// 更改声明 TradeBlazer Software保留对TradeBlazer平//          台每一版本的TradeBlazer公式修改和重写的权利//------------------------------------------------------------------------

这代码没法看,问题也描述得很不清楚,没法回答