You need to enable JavaScript to run this app.
优惠活动
大模型
产品
解决方案
定价
更多

如何在23:00精准重置所有自定义索引?代码问题求助

代码问题排查与解决方案

问题点分析

  • 条件判断逻辑错误:rest_bar = timestamp(year, month, dayofmonth, 23, 0, 0)仅生成了当天23点的时间戳,但if rest_bar并未判断当前时间是否匹配该时间戳,相当于直接判定时间戳本身为真(永远成立),导致重置逻辑持续触发。
  • 赋值运算符误用:A == 0和D == 0是比较运算符,仅用于判断值是否相等,无法完成赋值重置,正确写法应为A = 0和D = 0。
  • 数组操作逻辑矛盾:若A = B + C得到的是单个数值,后续A[0] + A[1] + A[2]的数组索引操作会直接报错;若A是需维护的累计数组,代码缺少初始化和长度控制逻辑,无法生成有效数组元素。
  • 时间戳生成歧义:部分平台的timestamp()函数需明确传入当前日期的年/月/日参数,否则可能生成固定日期的时间戳,导致时间匹配失败。

可行解决方案

通用修正代码(以量化交易平台场景为例)

# 初始化数组A(首次运行时创建)
if 'A' not in globals():
    A = []

# 计算当期A值并维护数组长度(保留最近3个周期数据)
current_A = B + C
A.append(current_A)
if len(A) > 3:
    A.pop(0)

# 计算D值
D = sum(A) if len(A) >= 3 else 0

# 生成当天23:00的时间戳
from datetime import datetime
now = datetime.now()
target_time = datetime(now.year, now.month, now.day, 23, 0, 0)

# 精准匹配23:00时刻执行重置
if datetime.now().hour == 23 and datetime.now().minute == 0 and datetime.now().second < 5:
    A = []
    D = 0

传统程序化平台适配(如文华财经/通达信)

若使用这类平台的内置语法,可简化时间判断逻辑:

// 假设A为单值变量,若为数组需提前定义长度
A = B + C;
D = A[0] + A[1] + A[2];

// 直接匹配23:00时间
if(TIME == 2300) {
    A = 0;
    D = 0;
}

内容的提问来源于stack exchange,提问作者Louis Jj

相关产品推荐
方舟 Agent Plan

超全模态模型 × Harness 升级,最新支持 Deepseek-V4.1-Flash、GLM-5.3 系列、Doubao-Seedream-5.0-pro、Kimi-K3 (部分), 限时 9.9 元起

最近更新时间:2026.08.01 23:46:00