It seems crucial to practice on problems of the right difficulty level. Too easy, and you waste your valuable practice time and energy solving problems you already mastered and gaining nothing new in skills or knowledge. Too hard, and you just get stuck and demotivated, banging your head against a solid wall without making any progress or improvement.

Seems like the best are problems that are difficult enough to challenge your current skill level, but not so difficult that you'll just hopelessly crash against them. How do you identify such problems?

One method I tried was relying on the new "difficulty rating". Unfortunately it seems to be very inaccurate, with many problems having unreasonably high or low difficulty score.

Binary search on problemset pages sorted by solve count :)

This is what I try to do. Participate in a contest and after the contest solve one/two least difficult problems which I couldn't solve. Such problems can be easily selected by looking at the the number of people who have solved it.

3 months gone. Did you find the right method ?

I will say honest words

if you stuck on a color for too long it means that you have reached your maximum cap

it is very hard for dunpeal to reach expert

I completely disagree with you. For those kind of persons who stuck in a level, the boost come more than anyone else. It used to be a huge jump. But it takes it's time and practice.