Tip 1: This may seem dead obvious, but it's a good idea to have your Pokemon learn moves that are super effective against Pokemon its weak to. For example: Lucario is a Fighting and Steel type Pokemon. Because of its Steel type, its weak aganst Fighting types, but you can teach it Psychic, a move that's strong aganst Fighting types.
Tip 2: (Another dead obvious one) It's also a good idea to mix the types of Pokemon on your team. If you had all Grass types, then it would be easy for one Fire type to knock out your entire team.
Tip 3: You should also mix the genders of Pokemon in your team. For example: If the opponent has a girl Cleffairy, and you had a team composed of all males, then the opponent can easily use moves like Attract or Charm to hinder your team's stats. I get that you can't control the genders of your Pokemon, but if you can get a team of mixed genders, then this would really help.
Tip 4: You should take advantage of weather effects by using weather changing moves. Like with Cacturne's ability Sand Veil, which boosts its evasiveness in sandstorm weather, or Floatzel's Swift Swim, which boosts its speed in rainy weather. If you use Sandstorm or Rain Dance, you can boost your Pokemon's stats, assisting you in future turns.