金字塔决策交易系统

 找回密码
 

微信登录

微信扫一扫,快速登录

搜索
查看: 701|回复: 4

老师您好!请帮我看看我写的策略为什么没能交易成功?

[复制链接]

60

主题

230

帖子

240

积分

Rank: 4

等级: 专业版

注册:
2022-8-5
曾用名:
发表于 2025-2-14 13:13 | 显示全部楼层 |阅读模式
def init(context):
    # 初始化参数
    context.contract_1 = "90004905"  # 合约1代码
    context.contract_2 = "90004915"  # 合约2代码
    context.amount_per_order = 10000  # 每笔订单金额(元)

def handle_bar(context):
    # 判断卖出开仓的条件(这里需要根据你的具体需求设置)
    # 例如:当某个指标满足条件时执行卖出开仓
    # 这里仅作为示例,设定一个简单的条件
    # 假设当创业板ETF的最新价格大于某个值时卖出开仓
    benchmark_price = get_dynainf("SZ159915", 7)  # 获取创业板ETF的最新价(假设SZ159915是创业板ETF的代码)

    # 卖出开仓条件
    if benchmark_price > 100:  # 示例条件,可以根据实际需求修改
        # 卖出开仓合约1
        sell_open_contract(context.contract_1, context.amount_per_order, context)

        # 卖出开仓合约2
        sell_open_contract(context.contract_2, context.amount_per_order, context)

        # 记录消息
        write_logging(f"卖出开仓成功:{context.contract_1} 和 {context.contract_2}")

def sell_open_contract(contract_id, amount, context):
    # 获取合约的当前价格
    current_price = get_dynainf(contract_id, 7)  # 获取合约最新价(假设7是价格类型)

    if current_price == 0:
        write_logging(f"合约 {contract_id} 无有效价格,无法卖出开仓")
        return

    # 计算可卖手数(假设每手金额为 current_price * 100)
    hands = amount // (current_price * 100)

    # 卖出开仓
    if hands > 0:
        sell_open(contract_id, "Market", 0, hands, 0, account=None,serial_id = 1)
        write_logging(f"卖出开仓 {contract_id} {hands} 手")
    else:
        write_logging(f"金额不足,无法卖出开仓 {contract_id}")

回复

使用道具 举报

21

主题

1万

帖子

1万

积分

Rank: 8Rank: 8

等级: 超级版主

注册:
2021-5-18
曾用名:
FireScript
发表于 2025-2-14 15:21 | 显示全部楼层
是信号没触发还是触发了信号 但是下单失败了?如果是后者有没有具体报错信息?

从代码看 你账号指定为None,这似乎不太恰当,可以不填写的。默认值是你当前登陆账号。指定为None是否会出问题 我们也不确定 没这样写过。你可以改下试下。



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

使用道具 举报

60

主题

230

帖子

240

积分

Rank: 4

等级: 专业版

注册:
2022-8-5
曾用名:
 楼主| 发表于 2025-2-14 21:00 | 显示全部楼层
谢谢老师
回复

使用道具 举报

60

主题

230

帖子

240

积分

Rank: 4

等级: 专业版

注册:
2022-8-5
曾用名:
 楼主| 发表于 2025-3-4 13:57 | 显示全部楼层
老师您好!以下时我修改的,但还是出错,不能下单,请老师帮助修改,因为初学python所以麻烦老师费心!def init(context):
    # 初始化参数
    context.contract_1 = "90004905"  # 合约1代码
    context.contract_2 = "90004915"  # 合约2代码
    context.amount_per_order = 10000  # 每笔订单金额(元)

def handle_bar(context):
    # 判断卖出开仓的条件(这里需要根据你的具体需求设置)
    # 例如:当某个指标满足条件时执行卖出开仓
    # 这里仅作为示例,设定一个简单的条件
    # 假设当创业板ETF的最新价格大于某个值时卖出开仓
    benchmark_price = get_dynainf("SZ159915", 7)  # 获取创业板ETF的最新价(假设SZ159915是创业板ETF的代码)

    # 卖出开仓条件
    if benchmark_price > 100:  # 示例条件,可以根据实际需求修改
        # 卖出开仓合约1
        sell_open_contract(context.contract_1, context.amount_per_order, context)

        # 卖出开仓合约2
        sell_open_contract(context.contract_2, context.amount_per_order, context)

        # 记录消息
        write_logging(f"卖出开仓成功:{context.contract_1} 和 {context.contract_2}")

def sell_open_contract(contract_id, amount, context):
    # 获取合约的当前价格
    current_price = get_dynainf(contract_id, 7)  # 获取合约最新价(假设7是价格类型)

    if current_price == 0:
        write_logging(f"合约 {contract_id} 无有效价格,无法卖出开仓")
        return

    # 计算可卖手数(假设每手金额为 current_price * 100)
    hands = amount // (current_price * 100)

    # 卖出开仓
    if hands > 0:
        sell_open(contract_id, "Market", 0, hands, 0,  ,serial_id = 1)
        write_logging(f"卖出开仓 {contract_id} {hands} 手")
    else:
        write_logging(f"金额不足,无法卖出开仓 {contract_id}")
回复

使用道具 举报

21

主题

1万

帖子

1万

积分

Rank: 8Rank: 8

等级: 超级版主

注册:
2021-5-18
曾用名:
FireScript
发表于 2025-3-4 14:38 | 显示全部楼层
1.下单手数参数必须是int类型
2.期权品种 你最好带上市场代码 QA。

3.下单语句原本参数多了一个空
sell_open(contract_id, "Market",0,volume=hands,serial_id = 1)
金字塔提供一对一VIP专业技术指导服务,技术团队实时响应您的日常使用问题与策略编写。联系电话:021-20339086
回复

使用道具 举报

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

本版积分规则

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

GMT+8, 2025-6-30 21:04 , Processed in 0.125333 second(s), 22 queries .

Powered by Discuz! X3.4

Copyright © 2001-2021, Tencent Cloud.

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