Params
Numeric weeksAgo(2); // 默认取2周前的收盘价
Vars
Series<Numeric> weekClose; // 存储每周最后一个交易日的下午收盘价
Series<Numeric> dailyClose; // 每日下午收盘价
Series<Numeric> lastMonday(0); // 记录每周一的日期标识
BoolSeries newWeekFlag(False); // 标记是否进入新周
Begin
//--- 记录每日下午收盘价(15:00)---
If (Time == 1500)
{
dailyClose = Close; // 当前Bar是下午收盘K线
}
Else
{
dailyClose = dailyClose[1]; // 继承前值
}
//--- 判断是否为新周(以周一为起始)---
Numeric currentWeekday = Weekday(Date); // 假设1=周一,7=周日
Numeric prevWeekday = Weekday(Date[1]);
// 检测逻辑:当今天为周一且前一天不是周一(跨越周末)
If (currentWeekday == 1 && prevWeekday > 1)
{
newWeekFlag = True; // 标记新周开始
weekClose = dailyClose[1]; // 记录上周最后一个下午收盘价
}
Else
{
newWeekFlag = False;
weekClose = weekClose[1]; // 维持上周数据
}
//--- 返回指定周数前的收盘价 ---
If (weeksAgo == 0)
{
Return weekClose; // 当前周收盘价(实际为上周记录值)
}
Else If (CurrentBar >= weeksAgo)
{
Return weekClose[weeksAgo]; // 通过序列偏移直接访问历史数据
}
Else
{
Return InvalidNumeric; // 数据不足时返回无效值
}
End
你这编译都没法过 怎么可能用得了
可以过啊
boolseries更新一下语句就能过
你儿豁