金字塔决策交易系统

 找回密码
 

微信登录

微信扫一扫,快速登录

搜索
查看: 481|回复: 4

py脚本运行出错

[复制链接]

179

主题

269

帖子

269

积分

Rank: 9Rank: 9Rank: 9

等级: 管理员

注册:
2021-5-18
曾用名:
发表于 2024-5-16 15:32 | 显示全部楼层 |阅读模式
py脚本运行出错
回复

使用道具 举报

179

主题

269

帖子

269

积分

Rank: 9Rank: 9Rank: 9

等级: 管理员

注册:
2021-5-18
曾用名:
 楼主| 发表于 2024-5-16 15:33 | 显示全部楼层

py脚本运行出错
截图202405161533154695.png
回复

使用道具 举报

34

主题

9006

帖子

5万

积分

Rank: 8Rank: 8

等级: 超级版主

注册:
2021-5-18
曾用名:
wenarm
发表于 2024-5-16 15:36 | 显示全部楼层
把29行相关的代码贴出来。
金字塔提供一对一VIP专业技术指导服务,技术团队实时响应您的日常使用问题与策略编写。联系电话:021-20339086
回复

使用道具 举报

179

主题

269

帖子

269

积分

Rank: 9Rank: 9Rank: 9

等级: 管理员

注册:
2021-5-18
曾用名:
 楼主| 发表于 2024-5-16 15:37 | 显示全部楼层
# 本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,'self','close',include_now=True)
    high = history_bars(context.s,context.X+2,'self','high',include_now=True)  
    low = history_bars(context.s,context.X+2,'self','low',include_now=True)   
    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)
        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)
        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)
   
回复

使用道具 举报

34

主题

9006

帖子

5万

积分

Rank: 8Rank: 8

等级: 超级版主

注册:
2021-5-18
曾用名:
wenarm
发表于 2024-5-16 15:48 | 显示全部楼层
本地测试没有问,建议你尝试排查下相关品种本地是否有数据.
金字塔提供一对一VIP专业技术指导服务,技术团队实时响应您的日常使用问题与策略编写。联系电话:021-20339086
回复

使用道具 举报

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

本版积分规则

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

GMT+8, 2024-11-16 05:42 , Processed in 0.282518 second(s), 26 queries .

Powered by Discuz! X3.4

Copyright © 2001-2021, Tencent Cloud.

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