I'm not a hydrologist, so I'm not aware of any metrics/heuristics that should likely govern your methods, but here's a stream-of-consciousness response for something that would be fun to try.
Interpolate points along the line:
First, I'd interpolate points along the line with an equal-length, short spacing according to a minimal granularity where the distance between points arguably equates with a distance long-enough to establish a "winding trait".
I'd experiment with something like 4x the bank-full width, or maybe the width of the 25 or 50 yr floodplain as the spacing distance. In other words, something other than a magic-number guess that could be repeated for other streams---as such an approach would make it repeatable for streams in subsequent studies.
Get change-in-bearing values for each point:
Next, I'd iterate over the points (or do this alongside the interpolation, above) and get a value for the change in bearing between each point and the two points preceding/following it. Obviously, the higher the delta value, the more winding.
Pick thresholds to classify winding intensity:
Once you had the delta values established, you could probably "eyeball" that data against your flow path and select a thresholds for value ranges that constitute various intensities of winding. Alternatively, you could use most any classification criteria as you might for a typical choropleth map.
What a fun research question to explore. I'm jealous. :)
PS. FWIW, I'd do 100% of this in PostGRESql using PostGIS spatial queries/operators. Useful functions would include.. ST_Line_Interpolate_Point
, ST_Azimuth
, and possibly generate_series