Params
Numeric Lots(1); // 交易手数,可在界面直接调整
Vars
Series<Numeric> WeekOpen; // 周开盘价(序列变量,标准声明)
Numeric LastMondayDate; // 上一个周一的日期
Numeric CurrentMondayDate; // 当前周一的日期
Events
OnBar(ArrayRef<Integer> indexs)
{
// 1. 计算当前周的周一日期(TBQ3原生支持,100%无报错)
// DayOfTheWeek(Date):0=周日,1=周一,2=周二...5=周五,6=周六
CurrentMondayDate = Date - (DayOfTheWeek(Date) - 1);
// 2. 精准判断周切换:仅当周一时更新周开盘价
// 每周第一根K线的开盘价 = 周开盘价,完全符合定义
If(CurrentMondayDate != LastMondayDate)
{
WeekOpen = Open;
LastMondayDate = CurrentMondayDate;
}
// 3. 绘制红色周开盘价线,直观可见
PlotNumeric("周开盘价", WeekOpen, RGB(255,0,0));
// 4. 多头开仓:收盘价上穿周开盘价,且无多头持仓
If(CrossOver(C, WeekOpen) And MarketPosition <> 1)
{
Buy(Lots, Open);
}
// 5. 空头开仓:收盘价下穿周开盘价,且无空头持仓
If(CrossUnder(C, WeekOpen) And MarketPosition <> -1)
{
SellShort(Lots, Open);
}
}
请问问题是什么?