新手策略,有一个问题麻烦帮看下
Params Numeric ATRPeriod(14); // ATR周期 Numeric MinVol(5000); // 成交量门槛(手) Numeric DelayBars(1); // 延迟K线数 Numeric DayStart(900); // 日盘开始时间 Numeric NightStart(2100); // 夜盘开始时间 Numeric StopLossRatio(0.5); // 止损比例(ATR倍数) Numeric FixedSlip(1); // 滑点(单位:跳) Vars Numeric VWAPValue(0); // 当日VWAP Numeric TotalVolume(0); // 当日成交量 Bool IsNewDay; // 新交易日标记 Bool BullPinbar; // 多头Pinbar信号 Numeric SignalBar(0); // 信号位置 Bool IsValidEntry; // 入场条件 Numeric ATRValue; // ATR值 Numeric Volume; // 显式声明成交量(内置变量需声明) Bool IsLimitUp; // 涨停标记 Bool IsLimitDown; // 跌停标记Begin // <<< 必须的入口 // --- 主逻辑(只在K线闭合时执行)--- If BarStatus == 2 Then // ==== 新交易日判断(支持夜盘)==== IsNewDay = (Date != Date[1]) And (Time >= NightStart) Or (Time >= DayStart And Time[1] < DayStart And Date == Date[1]); // ==== 涨跌停判断 ==== IsLimitUp = (Close >= Ref(Close, 1) * 1.04) And (High == Low); IsLimitDown = (Close <= Ref(Close, 1) * 0.96) And (High == Low); // ==== VWAP计算(防涨跌停干扰)==== If IsNewDay Or BarStatus == 0 Then VWAPValue = (High + Low + Close) / 3 * Volume; TotalVolume = Volume; Else If CurrentBar > 0 And Not IsLimitUp And Not IsLimitDown Then VWAPValue = VWAPValue[1] + (High + Low + Close) / 3 * Volume; TotalVolume = TotalVolume[1] + Volume; End; End; If TotalVolume > 0 Then VWAPValue = VWAPValue / TotalVolume; Else VWAPValue = 0; End; // ==== Pinbar识别(过滤涨跌停)==== BullPinbar = (Close > Open) And ((Low - Open) >= 2*(Close - Open)) And ((Close - Open) <= 0.3*(High - Low)) And Not IsLimitUp And Not IsLimitDown; // ==== 信号记录(需突破VWAP+成交量过滤)==== If BullPinbar And CrossOver(Close, VWAPValue) And TotalVolume >= MinVol Then SignalBar = CurrentBar; End; // ==== 延迟入场条件(修正函数参数)==== If SignalBar > 0 And CurrentBar >= SignalBar + DelayBars Then Numeric RefVWAP = ValueWhen(SignalBar == CurrentBar, VWAPValue); ATRValue = AvgTrueRange(ATRPeriod); // 修正Lowest/Highest参数(TB语法:周期数, 偏移位置) Bool Cond1 = Lowest(Low, DelayBars + 1)[SignalBar] > RefVWAP; Bool Cond2 = Highest(High, DelayBars + 1)[SignalBar] < Close; If Cond1 And Cond2 Then // 修正下单函数(手数, 价格, 滑点标记) Buy(1, Close + FixedSlip * MinMove * PriceScale, True); // 止损单(手数, 止损价, 启用跟踪) Sell(1, Close - StopLossRatio * ATRValue, True, True); SignalBar = 0; End; End; End; // 主If块结束End // 策略结束一直提示31行barstatus无法识别字符串,请老师看一眼谢谢。