input_array =
([[13, 93, 47, 857],
[16, 91, 55, 800],
[18, 105, 85, 821],
[17, 106, 89, 890],
[19, 105, 60, 961],
[20, 106, 41, 988],
[21, 107, 45, 999],])
take_profit =
([[15, 105, 90, 960]])
stop_loss =
([[10, 92, 45, 750]])
Каждый столбец в массиве - это цены отдельных акций, когда цена находится между тейк_профитом и стоп_лоссом, сделка открыта, а значение остается неизменным. Если цена становится выше или равна тейк-профиту, статус сделки — TP, а когда цена ниже или равна стоп-лоссу — статус SL для оставшейся части столбца.
desired_output_array =
([[13, 93, 47, 857],
[TP, SL, 55, 800],
[TP, SL, 85, 821],
[TP, SL, 89, 890],
[TP, SL, 60, TP],
[TP, SL, SL, TP],
[TP, SL, SL, TP],])
Может ли кто-нибудь помочь мне решить эту проблему? Массив имеет длину 3000 строк. Мой подход был следующим:
# My approach:
for value in input_array:
if value > take_profit:
value == "TP"
if value < stop_loss:
value == "SL"
else:
value == value
Это не сработало, поэтому попробовал
output_array = np.where(input_array> take_profit , "TP", input_array)
Проблема с этим заключается в том, что выход сначала изменится на TP, но затем вернется между SL и числами между ними, если цена вернется. Как только цена меняет статус, сделка закрывается, поэтому для остальных значений, идущих вниз в столбце, она должна оставаться фиксированной до конца!