static PivotPoints CalculatePivotPoints(decimal dcOpeningPrice, decimal dcHighPrice, decimal dcLowPrice, decimal dcClosingPrice) { PivotPoints objPivotPoints = new PivotPoints(); try { objPivotPoints.OpeningPrice = dcOpeningPrice; objPivotPoints.HighPrice = dcHighPrice; objPivotPoints.LowPrice = dcLowPrice; objPivotPoints.ClosingPrice = dcClosingPrice; decimal dcAveragePrice = ((objPivotPoints.HighPrice + objPivotPoints.LowPrice + objPivotPoints.ClosingPrice) / 3); objPivotPoints.ClassicResistance1 = ((2 * dcAveragePrice) - objPivotPoints.LowPrice); objPivotPoints.ClassicSupport1 = ((2 * dcAveragePrice) - objPivotPoints.HighPrice); objPivotPoints.ClassicResistance2 = dcAveragePrice + (objPivotPoints.HighPrice - objPivotPoints.LowPrice); objPivotPoints.ClassicSupport2 = dcAveragePrice - (objPivotPoints.HighPrice - objPivotPoints.LowPrice); objPivotPoints.ClassicResistance3 = objPivotPoints.HighPrice + 2 * (dcAveragePrice - objPivotPoints.LowPrice); objPivotPoints.ClassicSupport3 = objPivotPoints.LowPrice - 2 * (objPivotPoints.HighPrice - dcAveragePrice); objPivotPoints.ClassicPivotPoint = dcAveragePrice; objPivotPoints.WoodiePivotPoint = (objPivotPoints.HighPrice + objPivotPoints.LowPrice + (2 * objPivotPoints.ClosingPrice)) / 4; objPivotPoints.WoodieResistance1 = (2 * objPivotPoints.WoodiePivotPoint) - objPivotPoints.LowPrice; objPivotPoints.WoodieSupport1 = (2 * objPivotPoints.WoodiePivotPoint) - objPivotPoints.HighPrice; objPivotPoints.WoodieResistance2 = objPivotPoints.WoodiePivotPoint + (objPivotPoints.HighPrice - objPivotPoints.LowPrice); objPivotPoints.WoodieSupport2 = objPivotPoints.WoodiePivotPoint - (objPivotPoints.HighPrice - objPivotPoints.LowPrice); objPivotPoints.CamarillaResistance1 = objPivotPoints.ClosingPrice + ((objPivotPoints.HighPrice - objPivotPoints.LowPrice) * Convert.ToDecimal(1.0833)); objPivotPoints.CamarillaSupport1 = objPivotPoints.ClosingPrice - ((objPivotPoints.HighPrice - objPivotPoints.LowPrice) * Convert.ToDecimal(1.0833)); objPivotPoints.CamarillaResistance2 = objPivotPoints.ClosingPrice + ((objPivotPoints.HighPrice - objPivotPoints.LowPrice) * Convert.ToDecimal(1.1666)); objPivotPoints.CamarillaSupport2 = objPivotPoints.ClosingPrice - ((objPivotPoints.HighPrice - objPivotPoints.LowPrice) * Convert.ToDecimal(1.1666)); objPivotPoints.CamarillaResistance3 = objPivotPoints.ClosingPrice + ((objPivotPoints.HighPrice - objPivotPoints.LowPrice) * Convert.ToDecimal(1.2500)); objPivotPoints.CamarillaSupport3 = objPivotPoints.ClosingPrice - ((objPivotPoints.HighPrice - objPivotPoints.LowPrice) * Convert.ToDecimal(1.2500)); objPivotPoints.CamarillaResistance4 = objPivotPoints.ClosingPrice + ((objPivotPoints.HighPrice - objPivotPoints.LowPrice) * Convert.ToDecimal(1.5000)); objPivotPoints.CamarillaSupport4 = objPivotPoints.ClosingPrice - ((objPivotPoints.HighPrice - objPivotPoints.LowPrice) * Convert.ToDecimal(1.5000)); decimal dcDeMarkFactor = 0; if (objPivotPoints.ClosingPrice < objPivotPoints.OpeningPrice) { dcDeMarkFactor = (objPivotPoints.HighPrice + (objPivotPoints.LowPrice * 2) + objPivotPoints.ClosingPrice); } else if (objPivotPoints.ClosingPrice > objPivotPoints.OpeningPrice) { dcDeMarkFactor = ((objPivotPoints.HighPrice * 2) + objPivotPoints.LowPrice + objPivotPoints.ClosingPrice); } else if (objPivotPoints.ClosingPrice == objPivotPoints.OpeningPrice) { dcDeMarkFactor = (objPivotPoints.HighPrice + objPivotPoints.LowPrice + (objPivotPoints.ClosingPrice * 2)); } objPivotPoints.DeMarkResistance = (dcDeMarkFactor / 2) - objPivotPoints.LowPrice; objPivotPoints.DeMarkSupport = (dcDeMarkFactor / 2) - objPivotPoints.HighPrice; } catch (Exception ex) { Console.WriteLine("error occurred while calculating pivot points:" + ex.Message); } return(objPivotPoints); }
static void Main(string[] args) { decimal dcOpeningPrice = 0; decimal dcHighPrice = 0; decimal dcLowPrice = 0; decimal dcClosingPrice = 0; Console.WriteLine("Please Enter Opening Price:"); if (!(decimal.TryParse(Console.ReadLine(), out dcOpeningPrice))) { Console.WriteLine("Invalid Opening Price; please try again!"); } Console.WriteLine("Please Enter High Price:"); if (!(decimal.TryParse(Console.ReadLine(), out dcHighPrice))) { Console.WriteLine("Invalid High Price; please try again!"); } Console.WriteLine("Please Enter Low Price:"); if (!(decimal.TryParse(Console.ReadLine(), out dcLowPrice))) { Console.WriteLine("Invalid Low Price; please try again!"); } Console.WriteLine("Please Enter Closing Price:"); if (!(decimal.TryParse(Console.ReadLine(), out dcClosingPrice))) { Console.WriteLine("Invalid Closing Price; please try again!"); } Console.WriteLine("\n#########################################################################"); Console.WriteLine("\nCalculated Pivot Points are:"); PivotPoints objPivotPoints = CalculatePivotPoints(dcOpeningPrice, dcHighPrice, dcLowPrice, dcClosingPrice); string sPropertyName = string.Empty; object objPropertyValue = null; foreach (PropertyDescriptor descriptor in TypeDescriptor.GetProperties(objPivotPoints)) { sPropertyName = descriptor.Name; objPropertyValue = descriptor.GetValue(objPivotPoints); Console.WriteLine("{0}: {1}", sPropertyName, Math.Round(Convert.ToDecimal(objPropertyValue), 2)); } Console.WriteLine("\n#########################################################################"); Console.WriteLine("\nCalculated Fibonacci Retracements are:"); FibonacciRetracements objFibonacciRetracements = CalculateFibonacciRetracements(dcHighPrice, dcLowPrice); foreach (PropertyDescriptor descriptor in TypeDescriptor.GetProperties(objPivotPoints)) { sPropertyName = descriptor.Name; objPropertyValue = descriptor.GetValue(objPivotPoints); Console.WriteLine("{0}: {1}", sPropertyName, Math.Round(Convert.ToDecimal(objPropertyValue), 2)); } Console.WriteLine("\n#########################################################################"); Console.ReadKey(); }