You can use UnitStep
to convert negative numbers to 0 and positive numbers to 1. Then, you are just looking for the longest run of 0s. There are several answers for this, but I couldn't find a canonical version to point to after a brief look. So, here is a function that does this for you:
longestNegativeSequenceLength[v_]:=With[{bool = UnitStep[v]},
Max[
Length /@ Split[bool][[bool[[1]]+1 ;; -1 ;; 2]]
]
]
For example:
SeedRandom[1]
data = RandomReal[{-1, 1}, 20]
longestNegativeSequenceLength[data]
{0.634779, -0.777161, 0.579052, -0.624394, -0.517278, -0.868522, 0.0844932, -0.537691, -0.207988, 0.400948, -0.576348, 0.497314, -0.154299, -0.50501, 0.954344, 0.650326, 0.85055, 0.156112, -0.414261, -0.583898}
3
Addendum
To address the actual question of finding the sequence of negative values, you could do:
longestNegativeSequence[v_] := Module[{split = SplitBy[v, Negative]},
First @ MaximalBy[split[[If[v[[1]]<0, 1, 2] ;; -1 ;; 2]], Length]
]
longestNegativeSequence[data]
{-0.624394, -0.517278, -0.868522}