【问题标题】:Order limit backtesting订单限制回测
【发布时间】:2022-10-31 09:59:27
【问题描述】:

我开始研究“回测”,在测试过程中遇到了一个难以理解的情况。

class MyCandlesStrat(Strategy):
    def init(self):
        super().init()
        self.signal1 = self.I(SIGNAL)

    def next(self):
        super().next()
        if self.signal1==1:
            self.buy()
        elif self.signal1==-1:
            self.sell()

上面是策略测试代码,但是我不知道怎么表示信号=0,是不是关闭了订单?

UPD:信号列包含信号。在上面的代码中,只有交易被打开而不被关闭。

0
0
0
1
1
1
1
1
0
-1
-1
-1
-1
-1
-1
0
0
0
1
1
1
1

在网上稍微挖掘之后,我添加了代码 MyCandlesStrat 类(策略): 定义初始化(自我): 超级().init() self.signal1 = self.I(信号)

def next(self):
    super().next()
    if self.signal1 ==1:
        self.position.close()
        self.buy()

    elif self.signal1 ==-1:
        self.position.close()
        self.sell()

    else:
        self.signal1 == 0
        self.position.close()

但这仍然不是我想要的。此代码关闭处理相同的信号并且不

我想了解如何实现“买入并持有,直到信号相同” 或者 “信号相同时卖出并持有” ??

【问题讨论】:

  • 您的查询不够清楚。如果信号来自某个地方,并且有值为 0 的信号,那么另一个 elif 语句不起作用,elif self.signal==0`?
  • 更新我的问题

标签: python python-3.x pandas back-testing


【解决方案1】:

试试这个,它可能对你有用:

if len(self.trades) > 0:
    if self.trades[-1].is_long and <your logic>:
        self.trades[-1].close()
    elif self.trades[-1].is_short and <your logic>:
        self.trades[-1].close()

PD:self.trades 的索引不必是最后一笔交易,您可以决定要关闭哪笔交易

【讨论】:

    猜你喜欢
    • 2011-12-08
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 2020-07-04
    • 2021-06-01
    • 1970-01-01
    • 1970-01-01
    相关资源
    最近更新 更多