Я пытаюсь создать скользящий счетчик дней распределения согласно определению на веб-сайте IDB: Количество дней распространения IDB
Количество увеличивается каждый раз, когда существует день распределения ( DD) (определяется как снижение цены закрытия> 0,2% при большем объеме, чем в предыдущий день). Количество уменьшается на единицу каждый раз, когда ДД становится 25 дней. Он также уменьшается на единицу, если максимальная цена превышает 6% от цены, по которой произошел DD. Он также уменьшается на 1, если рынок исправляется (они не определяют это, но я использую коррекцию на 6% ниже цены, по которой произошел DD). Счет сбрасывается до 0, если есть последующий день (определяемый как увеличение> 1% с объемом, превышающим объем предыдущего дня).
Я пытался использовать a для l oop, но не иметь успех с включением различных способов, которые может уменьшить количество.
Часть, которую я не могу понять, - это как сослаться на многочисленные DD и отследить движение цены / дней, так как они возникли, а затем использовать для мониторинга условий сокращения подсчета. ie код ниже, который я попробовал, только уменьшает количество, если цена увеличивается на 6% от ПОСЛЕДНЕГО ДД, но я хочу, чтобы оно уменьшило количество, если цена повышается на 6% выше ЛЮБОГО из ДД, которые <25 дней. </p>
df=pd.read_csv('NYSE OHLC Daily with Volume.csv')
df['ret']=df['Close'].pct_change()
df['volume prior']=df['Volume'].shift()
df['dist day']=np.where((df['ret']<=-0.002) & (df['Volume']>df['volume prior']),1,0)
df['follow through day']=np.where((df['ret']>=0.01) & (df['Volume']>df['volume prior']),1,0)
count=0
counts=[]
last_dd_px=99999
for i in df.index:
if df.loc[i,'follow through day']==1:
count=0
last_dd_px=99999
if df.loc[i,'dist day']==1:
count+=1
last_dd_px=df.loc[i,'Close']
if df.loc[i,'High']>last_dd_px*1.06:
count-=1
counts.append(count)
df['count']=counts
Вот образец исходных данных:
Date Open High Low Close Volume
1 2002-12-03 5229.66 5229.66 5155.86 5164.63 1.407371e+09
2 2002-12-04 5164.63 5191.07 5116.73 5155.43 1.475448e+09
3 2002-12-05 5155.43 5169.81 5097.28 5104.79 1.195581e+09
4 2002-12-06 5104.79 5144.44 5049.91 5131.85 1.206871e+09
5 2002-12-09 5131.85 5131.85 5039.44 5040.71 1.197528e+09
6 2002-12-10 5040.71 5105.21 5039.12 5104.68 1.219813e+09
7 2002-12-11 5104.68 5125.62 5064.50 5105.21 1.215284e+09
8 2002-12-12 5105.21 5117.79 5064.82 5086.92 1.186703e+09
9 2002-12-13 5086.92 5086.92 5025.06 5035.10 1.217508e+09
10 2002-12-16 5035.10 5138.09 5035.10 5138.09 1.191691e+09
11 2002-12-17 5138.09 5138.09 5092.31 5094.74 1.189555e+09
12 2002-12-18 5094.74 5094.74 5024.74 5037.96 1.331305e+09
13 2002-12-19 5037.96 5070.63 4979.49 5001.38 1.319091e+09
14 2002-12-20 5001.38 5069.26 5001.38 5067.14 1.724701e+09
15 2002-12-23 5067.14 5092.63 5043.77 5067.67 1.055395e+09
16 2002-12-24 5067.67 5067.67 5042.19 5044.30 4.423127e+08
17 2002-12-26 5044.30 5100.13 5025.80 5036.59 6.867064e+08
18 2002-12-27 5036.58 5038.81 4950.20 4958.02 7.269339e+08
19 2002-12-30 4958.02 4996.83 4936.56 4986.15 9.938458e+08
20 2002-12-31 4986.15 5011.31 4938.25 5000.00 1.040316e+09
21 2003-01-02 5000.00 5146.55 5000.00 5146.00 1.194199e+09
22 2003-01-03 5146.55 5157.23 5117.37 5148.45 1.092951e+09
23 2003-01-06 5140.52 5252.92 5140.52 5255.39 1.361269e+09
24 2003-01-07 5241.50 5241.50 5182.29 5186.92 1.500679e+09
25 2003-01-08 5190.54 5190.54 5122.97 5124.19 1.397043e+09
26 2003-01-09 5124.19 5211.39 5124.19 5210.34 1.487960e+09
27 2003-01-10 5210.04 5232.17 5165.81 5209.80 1.441510e+09
28 2003-01-13 5209.80 5245.66 5188.83 5209.21 1.334021e+09
29 2003-01-14 5209.21 5233.67 5190.97 5233.66 1.316443e+09
30 2003-01-15 5233.73 5235.25 5163.69 5171.45 1.344880e+09
31 2003-01-16 5171.45 5205.35 5153.70 5165.34 1.425156e+09
32 2003-01-17 5165.34 5165.34 5094.66 5108.51 1.316279e+09
33 2003-01-21 5108.51 5111.93 5016.28 5016.28 1.269116e+09
34 2003-01-22 5016.28 5016.28 4959.19 4962.98 1.513868e+09
35 2003-01-23 4962.98 5006.90 4956.42 4995.66 1.648402e+09
36 2003-01-24 4995.66 4995.66 4873.96 4880.19 1.492447e+09
37 2003-01-27 4880.19 4880.19 4772.28 4786.96 1.399567e+09
38 2003-01-28 4786.98 4847.15 4786.94 4840.99 1.411064e+09
39 2003-01-29 4840.98 4885.58 4780.65 4865.96 1.532650e+09
40 2003-01-30 4865.96 4873.12 4780.99 4784.44 1.463341e+09
41 2003-01-31 4784.43 4874.43 4769.79 4868.68 1.468897e+09
42 2003-02-03 4868.68 4903.28 4868.68 4884.79 1.183141e+09
43 2003-02-04 4884.79 4884.79 4791.49 4824.46 1.379707e+09
44 2003-02-05 4824.47 4882.49 4803.36 4807.86 1.387379e+09
45 2003-02-06 4807.86 4807.86 4742.86 4757.30 1.364262e+09
46 2003-02-07 4757.31 4788.25 4702.00 4713.66 1.219609e+09
47 2003-02-10 4713.66 4733.08 4677.09 4732.77 1.195584e+09
48 2003-02-11 4732.77 4771.77 4692.49 4708.69 1.260459e+09
49 2003-02-12 4708.69 4714.85 4649.13 4649.71 1.208309e+09
50 2003-02-13 4649.70 4666.96 4601.45 4653.25 1.419208e+09