I am using ITCH protocol to get the Market Data information for Forex and trying to implement LOB on it and what i have noticed is that Bid and Ask prices are crossing very often. Should that be happening in the normal circumstances for Forex trading? or Raw data from the ITCH data stream has to be filtered first manually?
Where are you sourcing your data from? In the equities markets you will see crossed/locked markets at the NBBO if consuming direct feeds from each venue. You typically will not see it at a specific venue, however there are circumstances where you will (for example, NYSE pre-open or during LRP, etc).
For FOREX I'd assume crossed/locked markets would be significantly more common since there is no central exchange or book, but rather a collection of books and market makers.
As an aside you reference "ITCH" so I presume you're taking data from some FOREX broker who's using ITCH to broadcast book changes. When referring to ITCH 99.99% of the people in the world assume you mean NASDAQ markets.