金字塔决策交易系统

 找回密码
 

微信登录

微信扫一扫,快速登录

搜索
查看: 174|回复: 6

为什么python策略调用history_bars却获取到了未来K线?

[复制链接]

19

主题

151

帖子

151

积分

等级: 免费版

注册:
2023-9-29
曾用名:
发表于 2025-4-16 21:10 | 显示全部楼层 |阅读模式
我在回测时以AU00为基准合约, handle_bar里调用 history_bars('UR00', 1, '5m', ['datetime', 'close'], include_now=True) 在执行到20230209 21:05:00时,
返回的K线数据时标是2023-02-10 09:05:00, 说明返回了未来K. (我金字塔软件上采用的时区是北京时区)
虽然'UR00'无夜盘,但是当时时间(context.now)是20230209 21:05:00 是在2023-02-10之前, 不应该返回未来的K,而应该返回20230209 15:00:00对应的K线
这应该是个BUG,望确认并修改!  

回复

使用道具 举报

20

主题

1万

帖子

1万

积分

Rank: 8Rank: 8

等级: 超级版主

注册:
2021-5-18
曾用名:
FireScript
发表于 2025-4-17 08:48 | 显示全部楼层
截图202504170847589687.png

本地正常。你客户端什么版本的?用最新价版试下呢。
金字塔提供一对一VIP专业技术指导服务,技术团队实时响应您的日常使用问题与策略编写。联系电话:021-20339086
回复

使用道具 举报

19

主题

151

帖子

151

积分

等级: 免费版

注册:
2023-9-29
曾用名:
 楼主| 发表于 2025-4-17 12:09 | 显示全部楼层
技术009 发表于 2025-4-17 08:48
本地正常。你客户端什么版本的?用最新价版试下呢。

你好!  我是include_now=True.  我的版本是最新的:V7.10
回复

使用道具 举报

20

主题

1万

帖子

1万

积分

Rank: 8Rank: 8

等级: 超级版主

注册:
2021-5-18
曾用名:
FireScript
发表于 2025-4-17 14:48 | 显示全部楼层
这个现象我们无法复现。 你最好能提供更多的相关的信息方便我们定位问题。
金字塔提供一对一VIP专业技术指导服务,技术团队实时响应您的日常使用问题与策略编写。联系电话:021-20339086
回复

使用道具 举报

19

主题

151

帖子

151

积分

等级: 免费版

注册:
2023-9-29
曾用名:
 楼主| 发表于 2025-4-17 14:57 | 显示全部楼层
如下是我的代码和日志贴图:
# 本Python代码主要用于策略交易
# 可以自己import我们平台支持的第三方python模块,比如pandas、numpy等。
from PythonApi import *

import pandas as pd
import numpy as np
#  参数定义区,这里定义的参数可以直接在context对象中获取。--(选择实现)
#def parameter()
#    input_par(myvalues1,5,1,20,1)
#    input_par(myvalues2,10,1,20,1)

class GlobalCls:
    def _init_(self):
        self.name = 'global var'
g = GlobalCls()

#PS: 确保g.context已经设置         
def Print(content):
    dt_str = g.context.now.strftime('%Y%m%d %H:%M:%S')
    print("[{}] {}".format(dt_str, content))
   
#----------------------------------------
pd.set_option('display.max_columns', None) #解决显示列省略问题
pd.set_option('display.max_rows', None)
pd.set_option('display.width', 1000)   # 控制,使不换行
pd.set_option('display.float_format', lambda x: '%.2f' % x) #取消科学计数显示
#  在这个方法中编写任何的初始化逻辑。context对象将会在你的算法策略的任何方法之间做传递。--(必须实现)
def init(context):
    # 在context中保存全局变量
    print("------初始化逻辑init(context)-------")
    g.context = context
    g.run_type = context.run_info.run_type
    print(f"context.run_info:{context.run_info}")
    print(f"context.run_info.base_book_id:{context.run_info.base_book_id}")
   
    # print(策略启动) #调试打印输出
   

# before_trading此函数会在每天基准合约的策略交易开始前被调用,当天只会被调用一次。--(选择实现)
def before_trading(context):
    pass


# 你选择的品种的数据更新将会触发此段逻辑,例如日或分钟历史数据切片或者是实时数据切片更新。--(必须实现)
def handle_bar(context):
    # 开始编写你的主要的算法逻辑。
    symbol = 'UR00'
    freq = '5m'
    bars = history_bars(symbol, 1, freq, ['datetime', 'close'], include_now=True)
    Print(f" {symbol} {freq} ret bars' end_stamp:{bars[-1,0]}")
    pass
   
   
# after_trading函数会在每天交易结束后被调用,当天只会被调用一次。 --(选择实现)
def after_trading(context):
    pass
   
#--------------------------------------------------------------

   
截图202504171457131684.png
回复

使用道具 举报

20

主题

1万

帖子

1万

积分

Rank: 8Rank: 8

等级: 超级版主

注册:
2021-5-18
曾用名:
FireScript
发表于 2025-4-17 15:14 | 显示全部楼层
奇怪,我早上回测时候是正常的。  这个问题,我本地也能复现了,我反馈下。
金字塔提供一对一VIP专业技术指导服务,技术团队实时响应您的日常使用问题与策略编写。联系电话:021-20339086
回复

使用道具 举报

19

主题

151

帖子

151

积分

等级: 免费版

注册:
2023-9-29
曾用名:
 楼主| 发表于 2025-4-18 18:16 | 显示全部楼层
若修复好后, 请说一声
回复

使用道具 举报

您需要登录后才可以回帖 登录 | 微信登录

本版积分规则

手机版|小黑屋|上海金之塔信息技术有限公司 ( 沪ICP备13035422号 )

GMT+8, 2025-5-2 06:10 , Processed in 0.156148 second(s), 24 queries .

Powered by Discuz! X3.4

Copyright © 2001-2021, Tencent Cloud.

快速回复 返回顶部 返回列表