金字塔决策交易系统

 找回密码
 

微信登录

微信扫一扫,快速登录

搜索
查看: 158|回复: 1

求助一下,系统识别不了代码

[复制链接]

5

主题

10

帖子

10

积分

Rank: 1

等级: 新手上路

注册:
2024-10-25
曾用名:
发表于 2024-11-3 21:43 | 显示全部楼层 |阅读模式
技术老师您好,我利用均线 RSI 还有MACD 三指标共振编写的代码系统识别不了,请老师帮忙改进优化一下可以吗
```python
import backtrader as bt; import pandas as pd; import talib;
# 定义策略
class OptimizedStrategy(bt.Strategy):
    params = (
        ('sma_period_short', 5),
        ('sma_period_long', 20),
        ('rsi_period', 14),
        ('atr_period', 14),
        ('stop_loss_multiplier', 2),
        ('trail_offset', 10),
        ('vix_threshold', 20),
        ('position_size', 0.01),  # 每笔交易的资金比例
    );
    def __init__(self):
        self.sma_short = bt.indicators.SimpleMovingAverage(self.data.close, period=self.params.sma_period_short);  # 短期SMA
        self.sma_long = bt.indicators.SimpleMovingAverage(self.data.close, period=self.params.sma_period_long);  # 长期SMA
        self.rsi = bt.indicators.RSI(self.data.close, period=self.params.rsi_period);  # RSI指标
        self.atr = bt.indicators.ATR(self.data.high, self.data.low, self.data.close, period=self.params.atr_period);  # ATR指标
        self.vix = self.data1.close;  # VIX指数数据
        self.order = None;  # 当前订单状态
    def log(self, txt):
        ''' Logging function for this strategy'''
        dt = self.datas[0].datetime.date(0).isoformat();  # 获取日期
        print(f'{dt}, {txt}');  # 打印日志
    def next(self):
        if self.order:
            return;  # 如果有未完成的订单,则不执行任何操作
        if self.vix[0] > self.params.vix_threshold:
            return;  # 高波动时段不交易
        if not self.position:
            # 开多条件
            if (self.sma_short[0] > self.sma_long[0]) and (self.rsi[0] < 30) and (self.data.close[0] > self.data.open[0]):
                size = int(self.broker.getvalue() * self.params.position_size / self.data.close[0]);  # 计算买入数量
                self.buy(size=size);  # 买入
                self.stop_loss = self.data.close[0] - self.atr[0] * self.params.stop_loss_multiplier;  # 设置止损
            # 开空条件
            elif (self.sma_short[0] < self.sma_long[0]) and (self.rsi[0] > 70) and (self.data.close[0] < self.data.open[0]):
                size = int(self.broker.getvalue() * self.params.position_size / self.data.close[0]);  # 计算卖出数量
                self.sell(size=size);  # 卖出
                self.stop_loss = self.data.close[0] + self.atr[0] * self.params.stop_loss_multiplier;  # 设置止损
        else:
            # 止损检查
            if self.position.size > 0:  # 多头仓位
                if self.data.close[0] <= self.stop_loss:
                    self.log(f'STOP OUT, {self.data.close[0]:.2f}');  # 记录日志
                    self.close();  # 平仓
            elif self.position.size < 0:  # 空头仓位
                if self.data.close[0] >= self.stop_loss:
                    self.log(f'STOP OUT, {self.data.close[0]:.2f}');  # 记录日志
                    self.close();  # 平仓

回复

使用道具 举报

20

主题

1万

帖子

1万

积分

Rank: 8Rank: 8

等级: 超级版主

注册:
2021-5-18
曾用名:
FireScript
发表于 2024-11-4 09:08 | 显示全部楼层
你这是其他平台的py代码。需要符合金字塔py框架的规范才能正确识别。

另外py,vba等相关的问题, 我们通常只提供基础的接口方面的技术支持。无法提供具体的编写服务。

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

使用道具 举报

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

本版积分规则

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

GMT+8, 2024-12-27 22:08 , Processed in 0.172766 second(s), 23 queries .

Powered by Discuz! X3.4

Copyright © 2001-2021, Tencent Cloud.

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