金字塔决策交易系统

 找回密码
 

微信登录

微信扫一扫,快速登录

搜索
查看: 433|回复: 3

deepseek的编写有错吗,求助改正

[复制链接]

1

主题

2

帖子

2

积分

Rank: 1

等级: 新手上路

注册:
2025-2-18
曾用名:
发表于 2025-2-18 09:59 来自手机 | 显示全部楼层 |阅读模式
import backtrader as bt
import datetime

class ImprovedMovingAverageCrossStrategy(bt.Strategy):
    params = (
        ('short_period', 5),
        ('long_period', 20),
        ('filter_period', 200),
        ('stop_loss', 0.02),  # 2% stop loss
        ('take_profit', 0.05),  # 5% take profit
    )

    def __init__(self):
        self.short_ma = bt.indicators.SimpleMovingAverage(
            self.data.close, period=self.params.short_period)
        self.long_ma = bt.indicators.SimpleMovingAverage(
            self.data.close, period=self.params.long_period)
        self.filter_ma = bt.indicators.SimpleMovingAverage(
            self.data.close, period=self.params.filter_period)
        self.order = None

    def next(self):
        if self.order:
            return  # 如果有未完成的订单,不执行任何操作

        if not self.position:  # 没有持仓
            if (self.short_ma > self.long_ma) and (self.data.close > self.filter_ma):
                self.order = self.buy()
        else:  # 有持仓
            if self.data.close < self.short_ma:
                self.order = self.sell()
            elif self.data.close >= self.data.close * (1 + self.params.take_profit):
                self.order = self.sell()
            elif self.data.close <= self.data.close * (1 - self.params.stop_loss):
                self.order = self.sell()

    def notify_order(self, order):
        if order.status in [order.Completed, order.Canceled, order.Margin]:
            self.order = None

# 初始化Cerebro引擎
cerebro = bt.Cerebro()

# 添加策略
cerebro.addstrategy(ImprovedMovingAverageCrossStrategy)

# 加载数据
data = bt.feeds.YahooFinanceData(
    dataname='AAPL',
    fromdate=datetime.datetime(2020, 1, 1),
    todate=datetime.datetime(2023, 1, 1),
    timeframe=bt.TimeFrame.Days)
cerebro.adddata(data)

# 设置初始资金
cerebro.broker.set_cash(10000.0)

# 设置佣金
cerebro.broker.setcommission(commission=0.001)

# 运行回测
print('Starting Portfolio Value: %.2f' % cerebro.broker.getvalue())
cerebro.run()
print('Final Portfolio Value: %.2f' % cerebro.broker.getvalue())

# 绘制结果
cerebro.plot()
回复

使用道具 举报

38

主题

9989

帖子

9999

积分

Rank: 8Rank: 8

等级: 超级版主

注册:
2021-5-18
曾用名:
发表于 2025-2-18 10:00 | 显示全部楼层
抱歉这个python不提供改写
金字塔提供一对一VIP专业技术指导服务,技术团队实时响应您的日常使用问题与策略编写。联系电话:021-20339086
回复

使用道具 举报

1

主题

2

帖子

2

积分

Rank: 1

等级: 新手上路

注册:
2025-2-18
曾用名:
 楼主| 发表于 2025-2-18 10:42 来自手机 | 显示全部楼层
技术008 发表于 2025-2-18 10:00
抱歉这个python不提供改写

我想要一套关于我的策略我应该怎么做
回复

使用道具 举报

38

主题

9989

帖子

9999

积分

Rank: 8Rank: 8

等级: 超级版主

注册:
2021-5-18
曾用名:
发表于 2025-2-18 11:15 | 显示全部楼层
简单的直接论坛提出,复杂的需要走一对一编写服务

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

使用道具 举报

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

本版积分规则

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

GMT+8, 2025-4-20 04:59 , Processed in 0.174811 second(s), 21 queries .

Powered by Discuz! X3.4

Copyright © 2001-2021, Tencent Cloud.

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