欢迎使用金字塔普通技术服务论坛,您可以在相关区域发表技术支持贴。
我司技术服务人员将优先处理 VIP客服论坛 服务贴,普通区问题处理速度慢,请耐心等待。谢谢您对我们的支持与理解。


金字塔客服中心 - 专业程序化交易软件提供商金字塔软件金字塔软件问题提交 → 数据获取问题

   

欢迎使用金字塔普通技术服务论坛,您可以在相关区域发表技术支持贴。
我司技术服务人员将优先处理 VIP客服论坛 服务贴,普通区问题处理速度慢,请耐心等待。谢谢您对我们的支持与理解。    


  共有6913人关注过本帖树形打印复制链接

主题:数据获取问题

帅哥哟,离线,有人找我吗?
yukizzc
  1楼 | 信息 | 搜索 | 邮箱 | 主页 | UC


加好友 发短信
等级:超级版主 帖子:21598 积分:0 威望:0 精华:1 注册:2010/7/31 16:35:30
  发帖心情 Post By:2021/5/6 9:09:02 [显示全部帖子]

具体是什么样的数据不一样建议具体说明下,当天实时数据不会不一样的

 回到顶部
帅哥哟,离线,有人找我吗?
yukizzc
  2楼 | 信息 | 搜索 | 邮箱 | 主页 | UC


加好友 发短信
等级:超级版主 帖子:21598 积分:0 威望:0 精华:1 注册:2010/7/31 16:35:30
  发帖心情 Post By:2021/5/16 23:44:52 [显示全部帖子]

只是均线不一样吗,这种你只有把完整的整个数据都给输出出来看才能知道是哪一个数据不一样了

包括是否两天软件历史数据不一样,有的完整的有的不完整

还有是否两台都是有复权数据,有的有有的没有

 


 回到顶部
帅哥哟,离线,有人找我吗?
yukizzc
  3楼 | 信息 | 搜索 | 邮箱 | 主页 | UC


加好友 发短信
等级:超级版主 帖子:21598 积分:0 威望:0 精华:1 注册:2010/7/31 16:35:30
  发帖心情 Post By:2021/5/17 12:56:41 [显示全部帖子]

你前面图里的bar_close都是一样的啊
如果是最新数据不一样,你直接print history_bar看下价格,具体看下哪里不一样


 回到顶部
帅哥哟,离线,有人找我吗?
yukizzc
  4楼 | 信息 | 搜索 | 邮箱 | 主页 | UC


加好友 发短信
等级:超级版主 帖子:21598 积分:0 威望:0 精华:1 注册:2010/7/31 16:35:30
  发帖心情 Post By:2021/5/17 15:21:50 [显示全部帖子]

你怎么判断的走完k,是用的走完k运行策略的模式吗
那你看下k线图上对照看下数据是否有区别呢

 回到顶部
帅哥哟,离线,有人找我吗?
yukizzc
  5楼 | 信息 | 搜索 | 邮箱 | 主页 | UC


加好友 发短信
等级:超级版主 帖子:21598 积分:0 威望:0 精华:1 注册:2010/7/31 16:35:30
  发帖心情 Post By:2021/5/17 17:12:28 [显示全部帖子]

不同电脑可能接受到数据有前后差,比如a比b快0.1秒接收到新的数据,那可能就不一样。
而且你时间不一样,轮询也就是1秒,很有可能1秒后已经有两笔数据了,这种逻辑上的你只能自己想象下


[此贴子已经被作者于2021/5/17 17:14:13编辑过]

 回到顶部
帅哥哟,离线,有人找我吗?
yukizzc
  6楼 | 信息 | 搜索 | 邮箱 | 主页 | UC


加好友 发短信
等级:超级版主 帖子:21598 积分:0 威望:0 精华:1 注册:2010/7/31 16:35:30
  发帖心情 Post By:2021/5/17 20:34:17 [显示全部帖子]

如果你觉得是数据问题,直接打开k线图看图上数据是否一样就知道了

 

你用的是轮询模式,你以为自己轮询的结果就是走完k,其实不是的,轮询1秒不代表你一定能在走完k时候去执行程序

假设一秒钟行情有100笔,你可以想象你能不错过前面那么多数据吗,加上不同客户端接受到行情可能会有前后差

就好比两个人都在交易,你眨眼瞬间,别人看盘买入,你睁开眼睛这时候也很有可能有一个价格的差异

 

还有你自己盘的走完kk是不是用的电脑时间去判断的,电脑时间有差异也会造成走完k的不确定。

 

建议你要走完k就用软件的模式,不要自己去写


 回到顶部
帅哥哟,离线,有人找我吗?
yukizzc
  7楼 | 信息 | 搜索 | 邮箱 | 主页 | UC


加好友 发短信
等级:超级版主 帖子:21598 积分:0 威望:0 精华:1 注册:2010/7/31 16:35:30
  发帖心情 Post By:2021/5/18 19:32:02 [显示全部帖子]

price = history_bars(order_book_id=contract_id,
                                 bar_count=count,
                                 frequency=frequency,
                                 fields=['open', 'close', 'high', 'low', 'datetime'],
                                 include_now=include_now)
 
print(price)
 
不要去写文件呢,你就这么输出直接两个去对比,不要加任何所谓更新k后的输出,就最简单输出
因为你自己的处理逻辑很有可能是错误的处理

 回到顶部
帅哥哟,离线,有人找我吗?
yukizzc
  8楼 | 信息 | 搜索 | 邮箱 | 主页 | UC


加好友 发短信
等级:超级版主 帖子:21598 积分:0 威望:0 精华:1 注册:2010/7/31 16:35:30
  发帖心情 Post By:2021/5/21 10:31:20 [显示全部帖子]

def handle_bar(context):
    code = 'if00'
    price = history_bars(order_book_id=code,bar_count=1,frequency='1m',fields=['open', 'high', 'low', 'close'],include_now=True)
    print(price)
    print((get_dynainf(code,207),get_dynainf(code,7)))



10:29:31 > (102935.0, 5115.60009765625)
10:29:32 > [[5118.20019531 5119.39990234 5115.60009766 5116.        ]]
10:29:32 > (102936.0, 5116.0)
10:29:33 > [[5118.20019531 5119.39990234 5115.60009766 5115.60009766]]
10:29:33 > (102937.0, 5115.60009765625)
10:29:34 > [[5118.20019531 5119.39990234 5115.20019531 5116.        ]]
10:29:34 > (102938.0, 5116.0)
10:29:35 > [[5118.20019531 5119.39990234 5115.20019531 5115.60009766]]
10:29:35 > (102939.0, 5115.60009765625)
10:29:36 > [[5118.20019531 5119.39990234 5115.20019531 5116.        ]]
10:29:36 > (102940.0, 5116.0)

 回到顶部
帅哥哟,离线,有人找我吗?
yukizzc
  9楼 | 信息 | 搜索 | 邮箱 | 主页 | UC


加好友 发短信
等级:超级版主 帖子:21598 积分:0 威望:0 精华:1 注册:2010/7/31 16:35:30
  发帖心情 Post By:2021/5/21 11:13:42 [显示全部帖子]

from PythonApi import *
import pandas as pd

#  在这个方法中编写任何的初始化逻辑。context对象将会在你的算法策略的任何方法之间做传递。--(必须实现)
def init(context):
    context.df = pd.DataFrame(columns=['code', 'datetime', 'open', 'close', 'dynainf_close','dynainf_time'])
# before_trading此函数会在每天基准合约的策略交易开始前被调用,当天只会被调用一次。--(选择实现)
def before_trading(context):
    pass                                                                            
# 你选择的品种的数据更新将会触发此段逻辑,例如日或分钟历史数据切片或者是实时数据切片更新。--(必须实现)
def handle_bar(context):
    code = 'if00'
    price = history_bars(order_book_id=code,bar_count=1,frequency='1m',fields=['datetime','open','close'],include_now=True)
    context.df = context.df.append({'code':code,'datetime':price[0][0],'open':price[0][1],'close':price[0][2],'dynainf_close':get_dynainf(code,7),'dynainf_time':get_dynainf(code,207)},ignore_index=True)
# after_trading函数会在每天交易结束后被调用,当天只会被调用一次。 --(选择实现)
def after_trading(context):
    pass

# exit函数会在测评结束或者停止策略运行时会被调用。---(选择实现)
def exit(context):
    print('over')
    context.df.to_csv('text.csv')

 回到顶部
帅哥哟,离线,有人找我吗?
yukizzc
  10楼 | 信息 | 搜索 | 邮箱 | 主页 | UC


加好友 发短信
等级:超级版主 帖子:21598 积分:0 威望:0 精华:1 注册:2010/7/31 16:35:30
  发帖心情 Post By:2021/5/21 11:15:37 [显示全部帖子]

你这样用固定轮询去执行,不要用你自己得代码实现得走完k模式去执行,然后把价格和用实时获取最新价和时间得都记录了

然后会存到你软件根目录下text这个文件,然后你去看两个文件,去看同一个dynainf_time这个是行情最新时间时候,价格是多少

另外再工具-行情链接服务器这里,底下的双路数据勾去掉不要使用双路数据


然后两个软件输出的csv文件上传论坛,我们看下


另外handle_bar触发的走完k是你策略选择的基准合约而不是你代码里使用的品种,这点不知道你是否知晓,你运行if那么基准也要选if
[此贴子已经被作者于2021/5/21 11:25:21编辑过]

 回到顶部
总数 11 1 2 下一页