金字塔决策交易系统

 找回密码
 

微信登录

微信扫一扫,快速登录

搜索
楼主: 100021030

python逻辑相关问题

[复制链接]

37

主题

9972

帖子

6万

积分

Rank: 8Rank: 8

等级: 超级版主

注册:
2021-5-18
曾用名:
wenarm
发表于 2024-12-31 09:45 | 显示全部楼层
100021030 发表于 2024-12-31 09:12
咨询两个时间问题,
一是,想取目前持仓得开仓价格和开仓时间,get_portfolio只能取到开仓成本,但是没法 ...

1. 如果只是当日订单的话可以直接通过order对象的订单时间判断。如果是老仓没有接口可以获得开仓时间的。
持仓成本可以直接使用portfolio对象的buy_avg_open_price和buy_avg_holding_price

2. 订单时间不是k线时间,如果想对齐k线,可以判断当前订单时间距离k线时间最近的k线时间点(第一个大于订单时间的k线时间点就是的)
金字塔提供一对一VIP专业技术指导服务,技术团队实时响应您的日常使用问题与策略编写。联系电话:021-20339086
回复

使用道具 举报

7

主题

108

帖子

108

积分

Rank: 2

等级: 标准版

注册:
2024-11-26
曾用名:
 楼主| 发表于 2025-1-2 10:34 | 显示全部楼层
我用了,get_traders 函数,取得trader对象,我其实是想算成交后走过了几根k线。
但是算了很久,取出来的时间一直不对,每次取得时间都会漏掉最后一笔,而且取得第一笔会是none。
感觉是取值顺序问题,但是感觉代码又没问题。
求指导,谢谢
        condi4 = dif[-1] > dea[-1] and dif[-2] < dea[-2]            
        if  condi4 :
            buy_open(item, "market", volume=2,serial_id = 1)
            #市价开多基准合约2股,下单序列1
            traders = get_traders (item)
            print(traders)
            if not(traders==None):
                #print('22222222222222222222222222')
                #print(len(traders))
                ele=''
                for element in traders:
                    if(element.position_effect=='open'):
                        ele=element
                        print(element.side)
                        #print(element.trade_price)
                    
                #print('333333333333333333333333333')

                print(str(ele.trade_price))
                starttime =ele.datetime
截图202501021032563462.png
截图202501021033104162.png
回复

使用道具 举报

21

主题

1万

帖子

1万

积分

Rank: 8Rank: 8

等级: 超级版主

注册:
2021-5-18
曾用名:
FireScript
发表于 2025-1-2 10:50 | 显示全部楼层
你直接用 history_bars_date  取指定周期的数据。取数据时候起始位置固定好,不要改动。

下单/成交时候记录下,最新数据长度。 后面需要判断过去了几个K,再读取最新的数据长度 做个差值就行了。


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

使用道具 举报

7

主题

108

帖子

108

积分

Rank: 2

等级: 标准版

注册:
2024-11-26
曾用名:
 楼主| 发表于 2025-1-2 13:57 | 显示全部楼层
        bar_date_2m = history_bars_date('item','20241023','20250112','2m',['datetime','open','close','high','low'],True,True,True)
        condi4 = dif[-1] > dea[-1] and dif[-2] < dea[-2]            
        if  condi4 :
            buy_open(item, "market", volume=2,serial_id = 1)
            xxxx=????len
想了半天,这个全局变量还是不会设置,能否给个示例,怎么在开仓后计算长度
然后我之后要用距现在走了几根线,是不是用context.now取现在时间,再求长度相减
求给示例,谢谢
回复

使用道具 举报

7

主题

108

帖子

108

积分

Rank: 2

等级: 标准版

注册:
2024-11-26
曾用名:
 楼主| 发表于 2025-1-2 14:40 | 显示全部楼层
求示例呀,谢谢大神了
回复

使用道具 举报

21

主题

1万

帖子

1万

积分

Rank: 8Rank: 8

等级: 超级版主

注册:
2021-5-18
曾用名:
FireScript
发表于 2025-1-2 14:46 | 显示全部楼层

context.xxxx= len(lenbar_date_2m)

这样就行了呀。直接赋值 只会是一个局部变量,根本无法保留下去的。

还有 你这个品种代码这样也不对啊:

history_bars_date('item','20241023','20250112','2m',['datetime','open','close','high','low'],True,True,True)

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

使用道具 举报

7

主题

108

帖子

108

积分

Rank: 2

等级: 标准版

注册:
2024-11-26
曾用名:
 楼主| 发表于 2025-1-2 15:28 | 显示全部楼层
主要不会记录下单/成交时候,最新数据长度。 这个怎么记录
回复

使用道具 举报

21

主题

1万

帖子

1万

积分

Rank: 8Rank: 8

等级: 超级版主

注册:
2021-5-18
曾用名:
FireScript
发表于 2025-1-2 15:41 | 显示全部楼层
最新数据长度不需要记录,直接获取就行了,然后做差值。还有这种方式,只能运行中有效。程序暂停后,这些记录都不落地的。

len(bar_date_2m)-context.xxxx

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

使用道具 举报

7

主题

108

帖子

108

积分

Rank: 2

等级: 标准版

注册:
2024-11-26
曾用名:
 楼主| 发表于 2025-1-2 16:31 | 显示全部楼层
回撤可以用吗
回复

使用道具 举报

7

主题

108

帖子

108

积分

Rank: 2

等级: 标准版

注册:
2024-11-26
曾用名:
 楼主| 发表于 2025-1-2 17:15 | 显示全部楼层
你说的这个实现方式,只能执行得时候才有用嘛,回测可以用你上面写的方式实现嘛
回复

使用道具 举报

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

本版积分规则

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

GMT+8, 2025-6-7 19:52 , Processed in 0.159032 second(s), 21 queries .

Powered by Discuz! X3.4

Copyright © 2001-2021, Tencent Cloud.

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