如何在Python中回溯测试策略

时间:2012-07-23 09:03:06

标签: python stocks trading

我需要能够确定特定的“交易”(由“信号”表示)是否通过指示每个交易的赢或输而产生盈利或亏损。

我需要使用Python检查高低列表中的下一个位置( signal 或入口点或日期+ 1)(列表: {{1} close highs 将具有相同数量的值),以使值增加等于或大于在进入信号之外的某个点处为2.5%。

但是,我还希望Python确定在升值2.5%或更多之前该值是否下降3%或更多。

必须对lows中的每个条目进行此操作。

从本质上讲,我需要限制卖出102.5%和止损97%。

不幸的是,到目前为止我开发的代码似乎没有用。

我缺少什么?

signal

2 个答案:

答案 0 :(得分:2)

profit仅针对highs[-1]计算,loss仅针对lows[-1]计算。当您在每个循环中替换profitloss时,其他所有内容都将被丢弃。

您希望找到条件为true的值的 set 。使用zip将低点和高点放在一起:

for i in signals:
    entry = float(close[i])
    for high, low in zip(high[i + 1:], low[i + 1:]):
        profit = ((high - entry) / entry) * 100
        loss = ((low - entry) / entry) * 100
        if loss > -3:
            if profit >= 2.5:
                print "Win"
            else:
                print "Loss"

答案 1 :(得分:2)

您是否已经检查过python-libraries进行回测?事实上我使用其他库,但有一些非常流行的基于python的解决方案,如“pybacktest”,“PyAlgoTrade”或“UltraFinance”。也许集成这样的库可能对您的用例有利......