我有开始日期和结束日期的列表。它们被分类。。。在
start_dates = [
datetime.date(2009, 11, 5), datetime.date(2009, 11, 13),
datetime.date(2009, 11, 25), datetime.date(2009, 11, 26),
datetime.date(2009, 12, 4), datetime.date(2009, 12, 7),
datetime.date(2009, 12, 29), datetime.date(2009, 12, 30)]
end_dates = [
datetime.date(2009, 10, 1), datetime.date(2009, 10, 2),
datetime.date(2009, 10, 9), datetime.date(2009, 10, 12),
datetime.date(2009, 11, 4), datetime.date(2009, 12, 14),
datetime.date(2009, 12, 15)]
开始日期代表我们收到购买股票建议的日期。截止日期是我们收到出售建议的日期。建议的来源是不同的,我们正在回溯测试如果我们使用来自一个来源的购买建议,而另一个来源的销售建议会发生什么。因此,我们有两个日期序列,我们想把它们分解成成对的或者间隔的,我们可以在这段时间内持有股票。在
因此,我们将从起始日期开始确定何时买入股票:11月5日我们买入头寸。然后我们在结束日期循环寻找第一个销售建议:12月14日。再说一遍,当我们没有持仓时,当我们从一个来源得到建议时买入,当我们确实持有来自另一个来源的头寸时卖出。在
你可能会说我们想在循环的两个列表中的哪一个。在
因此,上述输入产生:
^{pr2}$我在for循环中使用for循环,不知道是否有更好的方法。性能是有趣的,因为它将在40年的时间跨度内应用于数千个场景;其中一些列表涉及数千个日期。在
编辑
这应该按
len(start_dates)+len(end_dates)
缩放:用法:
^{pr2}$我终于确定了:
感谢那些提问和回答的人。这个小小的谜题毫无道理地成为了我的定心丸,但我想我终于做到了这一点,我应该继续我的生活。它最终真的非常简单-令人惊讶的是,它花了这么多的工作来使它变得如此简单!在
我认为这应该可以得到日期元组,但我不能建议你不使用for循环的方法,因为它可能会变得更复杂。在
不过,逻辑是相当简单和明显的。在
相关问题 更多 >
编程相关推荐