開始日のリストと終了日のリストがあります。彼らは並べられています...
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)]
開始日は、当社が株式購入のアドバイスを受けた日付を表しています。終了日は、売却のアドバイスを受けた日です。アドバイスのソースはさまざまであり、あるソースからの買いのアドバイスを使用し、別のソースからの売りのアドバイスを使用した場合に何が起こるかをバックテストしています. このように、2 つの一連の日付をペア (または間隔) に分解して、株式のポジションを保持したいと考えています。
したがって、start_dates から日付を取得して、いつ株を購入するかを決定します。11 月 5 日にポジションを購入します。次に end_dates を巡回して、最初の売却アドバイスを探します: 12 月 14 日です。そして、ある情報源からアドバイスされたときにポジションを保持していないときに購入し、別の情報源からポジションを保持しているときに売却することを繰り返します。
ループしている 2 つのリストのどちらの間でフラップしたいと言うかもしれません。
したがって、上記の入力により次が生成されます。
result = (
(datetime.date(2009, 11, 5), datetime.date(2009, 12, 14)),
(datetime.date(2009, 12, 29), None)
)
for ループ内で for ループを使用していますが、もっと良い方法はないのでしょうか。パフォーマンスは、40 年間にわたって何千ものシナリオに適用されるため、興味深いものです。リストの中には、何千もの日付が含まれているものもあります。