金字塔决策交易系统

 找回密码
 

微信登录

微信扫一扫,快速登录

搜索
查看: 488|回复: 13

请老师帮忙看看这段代码

[复制链接]

62

主题

147

帖子

147

积分

等级: 免费版

注册:
2021-7-10
曾用名:
发表于 2025-2-24 21:42 | 显示全部楼层 |阅读模式
PEL文件中代码
// 获取当前时间(K线结束时间)
CURRENT_TIME := TIME;
// 提取当前小时和分钟
HOUR =CURRENT_TIME / 10000;       // 例如 140530 → 14
MINUTE =(CURRENT_TIME / 100) % 100; // 例如 140530 → 5
hour1: HOUR() ;
minute1:MINUTE() ;
IF MINUTE() = 0 OR MINUTE() =15 OR MINUTE() =30 OR MINUTE() = 45 THEN
   kua15:1;           


python文件中代码
hour1=get_indicator(context.s1,wj,'hour1','','self',5)# 多单止损
    minute1=get_indicator(context.s1,wj,'minute1','','self',5)# 多单止损        
    kua15=get_indicator(context.s1,wj,'kua15','','self',5)# 多单止损
    print(minute1[-1])
    print(kua15[-1])   

我想要的效果是0分,15分,30分,45分钟的时候  python读取kua15参数为1
我在测试的时候20分为0,25分为1,30分钟为0  具体是哪里错了  请帮忙修改一下   谢谢                                       

回复

使用道具 举报

3

主题

718

帖子

759

积分

Rank: 9Rank: 9Rank: 9

等级: 管理员

注册:
2021-5-10
曾用名:
发表于 2025-2-24 23:48 | 显示全部楼层
本地测试没有问题。可以在特定的time上得到正确的结果。
截图202502242349057389.png
回复

使用道具 举报

62

主题

147

帖子

147

积分

等级: 免费版

注册:
2021-7-10
曾用名:
 楼主| 发表于 2025-2-25 07:39 来自手机 | 显示全部楼层
print(minute1[-1])     print(kua15[-1])   第一行显示20分钟,第二行显示1。第一行显示30分钟,第二行显示nan
回复

使用道具 举报

20

主题

1万

帖子

1万

积分

Rank: 8Rank: 8

等级: 超级版主

注册:
2021-5-18
曾用名:
FireScript
发表于 2025-2-25 09:05 | 显示全部楼层
本帖最后由 技术009 于 2025-2-25 09:07 编辑

你要提取时分秒 没必要调用PEL,直接在python里实现一个方法处理就行了。注意返回的结果是一个datetime.datetime 对象。你也可以直接返回一个 年月日时分秒的 元组

[Python] 复制代码
def convert_to_datetime(date):
    int_value = int(date)    
    year = int_value // 10000000000
    month = (int_value % 10000000000) // 100000000
    day = (int_value % 100000000) // 1000000
    hour = (int_value % 1000000) // 10000
    minute = (int_value % 10000) // 100
    second = int_value % 100
    return datetime.datetime(year,month ,day, hour, minute, second)


金字塔提供一对一VIP专业技术指导服务,技术团队实时响应您的日常使用问题与策略编写。联系电话:021-20339086
回复

使用道具 举报

62

主题

147

帖子

147

积分

等级: 免费版

注册:
2021-7-10
曾用名:
 楼主| 发表于 2025-2-26 07:42 | 显示全部楼层
now=datetime.datetime.now()
    result = convert_to_datetime(now.strftime("%Y%m%d%H%M%S"))
   
    if (result.minute== 0 or  result.minute== 15 or  result.minute== 30 or  result.minute== 45) and (ti!=context.ti6).all():
        print(result.minute)
        context.ti6 = ti
这段代码输出的结果
22:00:01 > 0
22:15:05 > 15
22:30:00 > 30
22:30:02 > 30
22:45:00 > 45
22:45:01 > 45
都是输出2次结果,我想要的效果是只输出一次结果,谢谢
回复

使用道具 举报

20

主题

1万

帖子

1万

积分

Rank: 8Rank: 8

等级: 超级版主

注册:
2021-5-18
曾用名:
FireScript
发表于 2025-2-26 09:05 | 显示全部楼层
ti定义是什么? 麻烦提供更完整的上下文,这种散件丢过来 无法定位问题的。

金字塔提供一对一VIP专业技术指导服务,技术团队实时响应您的日常使用问题与策略编写。联系电话:021-20339086
回复

使用道具 举报

62

主题

147

帖子

147

积分

等级: 免费版

注册:
2021-7-10
曾用名:
 楼主| 发表于 2025-2-26 12:26 | 显示全部楼层
context.ti6 = 0
是这样定义的
就是检测时间不同了
回复

使用道具 举报

62

主题

147

帖子

147

积分

等级: 免费版

注册:
2021-7-10
曾用名:
 楼主| 发表于 2025-2-26 21:51 | 显示全部楼层
def init(context):
     context.ti6 = 0
def handle_bar(context):
    ti = history_bars(context.s1, context.ma34+1, 'self', 'datetime',True)
     now=datetime.datetime.now()
    result = convert_to_datetime(now.strftime("%Y%m%d%H%M%S"))
   
    if result.minute % 15 == 0 and (ti!=context.ti6).all():
        
        print(result.minute)
        context.ti6 = ti

上面的代码输出的结果是
14:15:00 > 15
14:15:02 > 15
14:30:01 > 30
14:30:02 > 30
14:45:00 > 45
14:45:02 > 45

具体是哪里的问题  谢谢
回复

使用道具 举报

20

主题

1万

帖子

1万

积分

Rank: 8Rank: 8

等级: 超级版主

注册:
2021-5-18
曾用名:
FireScript
发表于 2025-2-27 09:10 | 显示全部楼层
本地测试正常。

你是不是合约池里有2个品种?

金字塔提供一对一VIP专业技术指导服务,技术团队实时响应您的日常使用问题与策略编写。联系电话:021-20339086
回复

使用道具 举报

62

主题

147

帖子

147

积分

等级: 免费版

注册:
2021-7-10
曾用名:
 楼主| 发表于 2025-2-27 13:49 来自手机 | 显示全部楼层
一个品种,运行了一个5分钟周期,一个15分钟周期
回复

使用道具 举报

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

本版积分规则

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

GMT+8, 2025-4-18 14:51 , Processed in 0.262830 second(s), 24 queries .

Powered by Discuz! X3.4

Copyright © 2001-2021, Tencent Cloud.

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