With a stick-built roof there may not be angle bracing between the roof rafters and attic joists, or it may be inadequate such as 1" stock that can flex, as the roof tries to flatten. If you just want to try stuff, start by adding more bracing with 2" stock. If you don't know what that means, drive by a construction site to see how roof trusses are designed and basically copy that. Attachment is important, to make the bracing as stiff as possible. You won't be able to gangnail like trusses but it would be better to use multiple construction screws rather than a nailgun.
Horizontal bracing (parallel to the eave/ridgeline) could also help, helps prevent the roof from trying to deviate from its rectangle shape.
Simpson ties aka hurricane clips are a good idea and cheap, IF you can access the attachment points. Those help prevent the roof from trying to lift off the house.
BUT, it's possible that the rafters and attic joists are undersized, depending on how old the house is and expertise of the original contractor. That's especially true if the old shingles weren't removed and the weight has thus been significantly increased, might have been borderline before and now the stress is increased. Contractors might not have noticed, not knowing about the shingle load, or perhaps not wanted to be the bearer of bad news, ie major fix and you might think they're trying to scam you, and didn'twantthe job anyway. You could probably do it yourself if you're somewhat handy and don't mind spending considerable time in the oh so pleasant attic environment.
Good luck, hope you're successful in resolving the issue!