Effective Stock Price Forecasting Using Machine Learning Techniques Whilst Accounting For The State Of The Market