Как рассчитать размер тела свечи для OHLC для сравнения

#python #pandas #quantitative-finance #feature-engineering

#python #панды #количественный-финансы #разработка функций

Вопрос:

Нужна помощь в понимании того, как вычислять в коде python тело свечи из OHLC, и хотелось бы сделать следующие классификации из OHLC.

СИЛЬНАЯ ПОКУПКА: если тело следующей свечи находится за пределами тела последней свечи, а тело следующей свечи> в 2 раза больше, чем тело последней свечи, а тело следующей свечи ВЫШЕ тела последней свечи

КУПИТЬ: если тело следующей свечи находится за пределами тела последней свечи и тела следующей свечи> тело последней свечи И тело следующей свечи НАД телом последней свечи

СИЛЬНАЯ ПРОДАЖА: если тело следующей свечи находится за пределами тела последней свечи, А тело следующей свечи> в 2 раза больше, чем тело последней свечи, а тело следующей свечи НИЖЕ тела последней свечи

ПРОДАТЬ: если тело следующей свечи находится за пределами тела последней свечи и тела следующей свечи> тело последней свечи И тело следующей свечи НИЖЕ тела последней свечи

Остальное нейтрально

Ниже приведена логика кода, которую мы придумали

 classification_body_size = ABS(class_open - class_high)    //determines size of classification 
last_body_size = ABS(last_open - last_close)   // determines size of last candle in the graph
classification = "Neutral"
if classification_open >= last_close AND classification_close > last_close
  if classification_body_size > 2 x last_body_size
    classification  = "STRONG_BUY"
  else
    classification = "BUY"
  endif
endif
if classification_open <= last_close AND classification_close < last_close
  if classification_body_size > 2 x last_body_size
    classification  = "STRONG_SELL"
  else
    classification = "SELL"
  endif
endif
 
 sample dataset-
    Dates   PX_OPEN PX_HIGH PX_LOW  PX_LAST Predict PX_LAST_SHIFTED
50  2000-03-15  136.875 140.4375    136.0625    139.8125    146.3438    146.3438
51  2000-03-16  141.625 146.8438    140.875 146.3438    146.9375    146.9375
52  2000-03-17  145.8125    148.0   145.4375    146.9375    146.1875    146.1875
53  2000-03-20  146.875 147.3438    144.7813    146.1875    149.1875    149.1875
54  2000-03-21  145.5313    149.75  144.5   149.1875    150.0938    150.0938
55  2000-03-22  149.5625    150.8438    148.6875    150.0938    152.6563    152.6563
56  2000-03-23  149.1563    153.4688    149.1563    152.6563    153.5625    153.5625
57  2000-03-24  152.875 155.75  151.7188    153.5625    151.9375    151.9375
58  2000-03-27  153.375 153.7813    151.8125    151.9375    151.0625    151.0625
59  2000-03-28  151.25  152.9844    150.5938    151.0625    151.2188    151.2188
60  2000-03-29  151.5625    152.4844    149.6563    151.2188    148.6875    148.6875
61  2000-03-30  150.1563    151.9219    147.125 148.6875    150.375 150.375
62  2000-03-31  149.625 152.3125    148.4375    150.375 151.25  151.25
63  2000-04-03  150.125 151.25  148.6875    151.25  145.75  145.75
64  2000-04-04  151.75  153.0   145.75  145.75  149.1875    149.1875
65  2000-04-05  147.875 150.8125    147.625 149.1875    150.4844    150.4844
66  2000-04-06  150.25  151.6875    149.0   150.4844    151.4375    151.4375
67  2000-04-07  151.5625    152.125 150.5   151.4375    150.8438    150.8438
68  2000-04-10  151.75  153.1094    150.3125    150.8438    150.4063    150.4063
69  2000-04-11  150.0   151.625 148.375 150.4063    146.2813    146.2813
70  2000-04-12  150.375 151.1563    146.1563    146.2813    144.25  144.25
71  2000-04-13  147.4688    148.1563    141.125 144.25  136.0   136.0
72  2000-04-14  142.625 142.8125    133.5   136.0   140.75  140.75
73  2000-04-17  135.1875    140.75  134.6875    140.75  144.4688    144.4688
74  2000-04-18  140.5625    144.4688    139.7813    144.4688    143.125 143.125
75  2000-04-19  144.5   145.125 142.5313    143.125 143.8125    143.8125
76  2000-04-20  143.5625    143.9375    142.375 143.8125    142.25  142.25
77  2000-04-24  141.5   143.3125    140.5   142.25  148.1563    148.1563
78  2000-04-25  144.625 148.1563    144.4375    148.1563    146.4844    146.4844
79  2000-04-26  147.9688    148.75  146.0   146.4844    146.0   146.0
80  2000-04-27  143.0   147.3438    143.0   146.0   145.0938    145.0938
81  2000-04-28  147.0   147.8594    145.0625    145.0938    147.0625    147.0625
82  2000-05-01  146.5625    148.4844    145.8438    147.0625    144.125 144.125
83  2000-05-02  145.5   147.125 144.125 144.125 140.75  140.75
84  2000-05-03  144.0   144.0   139.7813    140.75  141.8125    141.8125
85  2000-05-04  142.0   142.3594    140.75  141.8125    143.5313    143.5313
86  2000-05-05  141.0625    144.0   140.9375    143.5313    142.4531    142.4531
87  2000-05-08  142.75  143.375 141.8438    142.4531    141.3125    141.3125
88  2000-05-09  143.0625    143.4063    140.2656    141.3125    138.125 138.125
89  2000-05-10  140.5   140.9688    137.75  138.125 141.2813    141.2813
90  2000-05-11  140.125 141.5   139.125 141.2813    142.8125    142.8125
91  2000-05-12  141.8125    143.4688    141.625 142.8125    145.2813    145.2813
92  2000-05-15  142.75  145.6094    142.0   145.2813    146.6875    146.6875
93  2000-05-16  146.5625    147.7188    145.3125    146.6875    145.1563    145.1563
94  2000-05-17  145.6875    146.1875    144.4688    145.1563    143.375 143.375
95  2000-05-18  145.625 146.3125    143.375 143.375 141.125 141.125
96  2000-05-19  142.5625    143.2344    140.4063    141.125 140.0625    140.0625
97  2000-05-22  141.25  141.4688    137.0   140.0625    138.0   138.0
98  2000-05-23  140.4375    140.8125    137.5625    138.0   140.25  140.25
99  2000-05-24  138.0   140.6875    136.5   140.25  137.8438    137.8438