金字塔决策交易系统

 找回密码
 

微信登录

微信扫一扫,快速登录

搜索
12
返回列表 发新帖
楼主: Jack

python 代码中如何实现最近1分钟最低价就是最近10分钟的最低价

[复制链接]

14

主题

214

帖子

299

积分

Rank: 9Rank: 9Rank: 9

等级: 管理员

注册:
2021-5-18
曾用名:
发表于 2023-3-27 16:36 | 显示全部楼层
#  在这个方法中编写任何的初始化逻辑。context对象将会在你的算法策略的任何方法之间做传递。--(必须实现)
def init(context):
    #交易标的
    context.s =  context.run_info.base_book_id
    context.low10 = 10
    context.low1 = 1

# 你选择的品种的数据更新将会触发此段逻辑,例如日或分钟历史数据切片或者是实时数据切片更新。--(必须实现)
def handle_bar(context):
    low1=history_bars(context.s,context.low1,'1m','Low',True,False,True)
    low10=history_bars(context.s,context.low10,'1m','Low',True,False,True)
    if low1==low10:
        return 1
    else:
        return 0
    pass
金字塔提供一对一VIP专业技术指导服务,技术团队实时响应您的日常使用问题与策略编写。联系电话:021-20339086
回复

使用道具 举报

20

主题

76

帖子

76

积分

等级: 免费版

注册:
2022-2-11
曾用名:
 楼主| 发表于 2023-3-27 17:23 | 显示全部楼层
技术007 发表于 2023-3-27 16:36
#  在这个方法中编写任何的初始化逻辑。context对象将会在你的算法策略的任何方法之间做传递。--(必须实现) ...

看看这个是否对 因为返回的是数组 所以需要处理数组得出最高最低价
def 最新一分钟最高价等于最新十分钟最高价(context):
    十分钟最高价数组 = history_bars(context.标的合约, 10, '3s', 'high', True, True, True)   # 返回的数组本身就是一个列表,只需要对其进行遍历就可以了。
    最新十分钟最高价 = max(十分钟最高价数组)
    一分钟最高价数组 = history_bars(context.标的合约, 1, '3s', 'high', True, True, True)
    最新一分钟最高价 = max(一分钟最高价数组)
    if 最新一分钟最高价 == 最新十分钟最高价:
        return 1
    else:
        return 0
回复

使用道具 举报

14

主题

214

帖子

299

积分

Rank: 9Rank: 9Rank: 9

等级: 管理员

注册:
2021-5-18
曾用名:
发表于 2023-3-28 09:26 | 显示全部楼层
逻辑是对的。软件里自带的Python的海龟策略,就有求最高价,最低价的示例,摘抄出来,供您参考。


def get_extreme(array_high_price_result, array_low_price_result):
    #抛开最新价格的价格序列
    np_array_high_price_result = np.array(array_high_price_result[:-1])
    np_array_low_price_result = np.array(array_low_price_result[:-1])
    #序列最大值
    max_result = np_array_high_price_result.max()
    #最小值
    min_result = np_array_low_price_result.min()
    #返回一个两个元素的list
    return [max_result, min_result]

def handle_bar(context):
    #当前合约的价值
    total_value = get_account(6,'')
    #context.open_observe_time+1个bar的每日最高价
    high_price = history_bars(context.s,context.high_observe_time, 'self', 'high')
    low_price_for_atr = history_bars(context.s,context.high_observe_time, 'self', 'low')
   
    low_price_for_extreme = history_bars(context.s,context.close_observe_time, 'self', 'low')
    close_price = history_bars(context.s,context.open_observe_time, 'self', 'close')
    close_price_for_atr = close_price

    #得到最高价的max
    maxx = get_extreme(high_price, low_price_for_extreme)[0]
    #得到最低价的min
    minn = get_extreme(high_price, low_price_for_extreme)[1]
金字塔提供一对一VIP专业技术指导服务,技术团队实时响应您的日常使用问题与策略编写。联系电话:021-20339086
回复

使用道具 举报

20

主题

76

帖子

76

积分

等级: 免费版

注册:
2022-2-11
曾用名:
 楼主| 发表于 2023-3-30 10:15 | 显示全部楼层
我来研究下 谢谢
回复

使用道具 举报

20

主题

76

帖子

76

积分

等级: 免费版

注册:
2022-2-11
曾用名:
 楼主| 发表于 2023-3-31 15:03 | 显示全部楼层
下面1是调试正确 的代码 下面2是自己修改的下面3是自己使用的  但是却反应运行超时 请帮助查看原因谢谢!
1.1.png
1.2.png
1.3.png
回复

使用道具 举报

19

主题

1万

帖子

1万

积分

Rank: 8Rank: 8

等级: 超级版主

注册:
2021-5-18
曾用名:
FireScript
发表于 2023-3-31 15:24 | 显示全部楼层
运行超时 是报handle_bar运行超时?

上图1.3的代码你加一些print 看下是运行到哪里报错的。另外是一运行就报错,还是运行中偶发的,相对而言 他们性质不太一样,排查的方向也不一样。
金字塔提供一对一VIP专业技术指导服务,技术团队实时响应您的日常使用问题与策略编写。联系电话:021-20339086
回复

使用道具 举报

20

主题

76

帖子

76

积分

等级: 免费版

注册:
2022-2-11
曾用名:
 楼主| 发表于 2023-3-31 15:32 | 显示全部楼层
技术009 发表于 2023-3-31 15:24
运行超时 是报handle_bar运行超时?

上图1.3的代码你加一些print 看下是运行到哪里报错的。另外是一运行 ...

是handle_bar 运行超时
是一运行就超时 本来代码是可以正常运行的 加了一个函数和条件就直接超时了

补充内容 (2023-3-31 15:34):
已经调整为2分钟还不行,还超时  看看代码和使用哪里是否错了 吧
回复

使用道具 举报

19

主题

1万

帖子

1万

积分

Rank: 8Rank: 8

等级: 超级版主

注册:
2021-5-18
曾用名:
FireScript
发表于 2023-3-31 15:39 | 显示全部楼层
在你定义的函数内部,加调试语句。你看下能运行到哪一步。或者你直接代码放上来。就是你自己运行出错的那个代码,给出一个能重现问题的代码。
金字塔提供一对一VIP专业技术指导服务,技术团队实时响应您的日常使用问题与策略编写。联系电话:021-20339086
回复

使用道具 举报

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

本版积分规则

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

GMT+8, 2024-11-16 18:58 , Processed in 0.283694 second(s), 24 queries .

Powered by Discuz! X3.4

Copyright © 2001-2021, Tencent Cloud.

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