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无法识别字符串,请老师看一眼谢谢。
这是你自己写的吗? 格式谁教的
全是错误