金字塔决策交易系统

 找回密码
 

微信登录

微信扫一扫,快速登录

搜索
123
返回列表 发新帖
楼主: 逍遥

python一次最多能测试多少个品种?

[复制链接]

10

主题

66

帖子

66

积分

等级: 免费版

注册:
2021-7-6
曾用名:
 楼主| 发表于 2023-3-6 16:05 | 显示全部楼层
get_portfolio (j, 2)打印出来的提示是什么?
16:02:09 > 品种信息:<__main__.portfolio object at 0x00000000370CB908>


补充内容 (2023-3-6 16:11):
没有显示持仓信息?
回复

使用道具 举报

0

主题

1万

帖子

1万

积分

Rank: 8Rank: 8

等级: 超级版主

注册:
2021-5-18
曾用名:
gxx978
发表于 2023-3-6 16:13 | 显示全部楼层
你完整代码发下啊。
金字塔提供一对一VIP专业技术指导服务,技术团队实时响应您的日常使用问题与策略编写。联系电话:021-20339086
回复

使用道具 举报

10

主题

66

帖子

66

积分

等级: 免费版

注册:
2021-7-6
曾用名:
 楼主| 发表于 2023-3-6 16:18 | 显示全部楼层
# 本Python代码主要用于策略交易        



# 可以自己import我们平台支持的第三方python模块,比如pandas、numpy等。
from PythonApi import *
import numpy as np
import talib
import math        


#  在这个方法中编写任何的初始化逻辑。context对象将会在你的算法策略的任何方法之间做传递。--(必须实现)
def init(context):
    #入场周期
    context.X = 20
    #出场周期
    context.Y = 10
    #记录建仓的atr
    context.entry = 0
    #记录交易次数
    context.num = 0
    #交易标的
    context.s = context.run_info.base_book_id
    #记录上次开仓价
    context.enterprice = 0        


# 你选择的品种的数据更新将会触发此段逻辑,例如日或分钟历史数据切片或者是实时数据切片更新。--(必须实现)
def handle_bar(context):
    close = history_bars(context.s,context.X+2, '1d','close')
    high = history_bars(context.s,context.X+2, '1d','high')
    low = history_bars(context.s,context.X+2, '1d','low')  
    if len(close) == context.X+2:
        #atr的计算参考这个帖子http://www.weistock.com/bbs/dispbbs.asp?boardid=10&Id=173300
        tr = talib.TRANGE(high,low,close)
        atr = talib.SMA(tr[1:],context.X)
        logger.info('波幅'+str(atr))
        unit = int((get_account(6)*0.01) / (atr[-2] * get_dynainf(context.s,209)))
        #X天的高低点(不包含当天)
        X周期高点 = high[:-1].max()
        X周期低点 = low[:-1].min()
        
        #建立头寸,根据唐奇安通道创新高入场,关键点就是利用波动atr计算仓位数量,portfolio用来进行仓位的控制
        
        portfolio=get_portfolio (context.s, 2)
        print('品种信息:'+str(portfolio)) #############################
        
        if high[-1]>=X周期高点 and portfolio.buy_quantity==0 and portfolio.sell_quantity==0:
            buy_open(context.s, "Market",0 ,unit,serial_id = 1)
            context.entry = atr[-2]
            context.num = 1
            context.enterprice = close[-1]
        if low[-1]<=X周期低点 and portfolio.sell_quantity==0 and portfolio.buy_quantity==0:
            sell_open(context.s, "Market",0 ,unit,serial_id = 2)
            context.entry = atr[-2]
            context.num = 1
            context.enterprice = close[-1]
            
        #加仓,最高价比上次开仓价多0.5个atr(盈利加仓)
        if portfolio.sell_quantity ==0 and portfolio.buy_quantity>0 and high[-1]>context.enterprice + 0.5*context.entry and context.num<4:
            buy_open(context.s, "Market",0 ,unit,serial_id = 3)
            context.num+=1
            context.enterprice = close[-1]
        if portfolio.buy_quantity==0 and portfolio.sell_quantity>0 and low[-1]<context.enterprice - 0.5*context.entry and context.num<4:
            sell_open(context.s, "Market",0 ,unit,serial_id = 4)
            context.num+=1
            context.enterprice = close[-1]
            
        #出场,跌破短周期低点平多
        Y周期高点 = high[-context.Y-1:-1].max()
        Y周期低点 = low[-context.Y-1:-1].min()
        if portfolio.buy_quantity>0 and low[-1] < Y周期低点:
            sell_close(context.s,"Market",0,portfolio.buy_quantity,serial_id = 5)
        if portfolio.sell_quantity>0 and high[-1] > Y周期高点:
            buy_close(context.s,"Market",0,portfolio.sell_quantity,serial_id = 6)
            
        #止损,亏损幅度超过开仓2个atr幅度止损
        if portfolio.buy_quantity>0 and low[-1] < context.enterprice - 2*context.entry:
            sell_close(context.s,"Market",0,portfolio.buy_quantity,serial_id = 7)
        if portfolio.sell_quantity>0 and high[-1] > context.enterprice + 2*context.entry:
            buy_close(context.s,"Market",0,portfolio.sell_quantity,serial_id = 8)
回复

使用道具 举报

3

主题

845

帖子

886

积分

Rank: 9Rank: 9Rank: 9

等级: 管理员

注册:
2021-5-10
曾用名:
发表于 2023-3-6 16:46 | 显示全部楼层
get_portfolio返回是个对象。你对象名是portfolio,你应该对获取的对象进行再次处理。


例如
print('品种信息:'+str(portfolio.pnl))
回复

使用道具 举报

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

本版积分规则

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

GMT+8, 2025-8-28 04:09 , Processed in 0.184221 second(s), 20 queries .

Powered by Discuz! X3.4

Copyright © 2001-2021, Tencent Cloud.

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