public static string ConvertToString(this IndicatorSize sizeEnum) { switch (sizeEnum) { case IndicatorSize.OneMin: return("1min"); case IndicatorSize.FiveMin: return("5min"); case IndicatorSize.FifteenMin: return("15min"); case IndicatorSize.ThirtyMin: return("30min"); case IndicatorSize.SixtyMin: return("60min"); case IndicatorSize.Daily: return("daily"); case IndicatorSize.Weekly: return("weekly"); case IndicatorSize.Monthly: return("monthly"); default: throw new NotSupportedException(sizeEnum.ToString()); } }
public static PointF[] GetIndicatorArrowPoints(PointF p1, PointF p2, IndicatorSize size) { int hw = 0; float tw = 0; switch (size) { case IndicatorSize.Small: hw = 10; tw = 0.8f; break; case IndicatorSize.Medium: hw = 16; tw = 0.8f; break; case IndicatorSize.Large: hw = 22; tw = 0.8f; break; } PointF[] pf = new PointF[7]; PointF tmp = new PointF(); double angle = Math.Atan2(p2.Y - p1.Y, p2.X - p1.X); tmp.X = p2.X + (float)(hw * Math.Cos(angle + Math.PI)); tmp.Y = p2.Y + (float)(hw * Math.Sin(angle + Math.PI)); pf[0] = new PointF( p1.X + (float)(tw * Math.Cos(angle - Math.PI / 2)), p1.Y + (float)(tw * Math.Sin(angle - Math.PI / 2))); pf[6] = new PointF( p1.X + (float)(tw * Math.Cos(angle + Math.PI / 2)), p1.Y + (float)(tw * Math.Sin(angle + Math.PI / 2))); pf[3] = p2; pf[1] = new PointF( tmp.X + (float)(hw / 4 * Math.Cos(angle - Math.PI / 2)), tmp.Y + (float)(hw / 4 * Math.Sin(angle - Math.PI / 2))); pf[2] = new PointF( tmp.X + (float)(hw / 2 * Math.Cos(angle - Math.PI / 2)), tmp.Y + (float)(hw / 2 * Math.Sin(angle - Math.PI / 2))); pf[4] = new PointF( tmp.X + (float)(hw / 2 * Math.Cos(angle + Math.PI / 2)), tmp.Y + (float)(hw / 2 * Math.Sin(angle + Math.PI / 2))); pf[5] = new PointF( tmp.X + (float)(hw / 4 * Math.Cos(angle + Math.PI / 2)), tmp.Y + (float)(hw / 4 * Math.Sin(angle + Math.PI / 2))); return(pf); }
/// <summary> /// This API call returns the simple moving average (SMA) values. /// See also: https://www.investopedia.com/articles/technical/052201.asp and /// mathematical reference. /// </summary> /// <param name="symbol"></param> /// <param name="size"></param> /// <param name="timePeriod"></param> /// <param name="seriesType"></param> /// <returns></returns> public async Task <StockIndicator> GetSMAAsync( string symbol, IndicatorSize size, int timePeriod, IndicatorSeriesType seriesType) { if (timePeriod < 1) { throw new ArgumentException("Time period must be a positive value"); } var query = new Dictionary <string, string>() { { StockApiQueryVars.Symbol, symbol }, { StockApiQueryVars.IndicatorInterval, size.ConvertToString() }, { StockApiQueryVars.TimePeriod, timePeriod.ToString() }, { StockApiQueryVars.SeriesType, seriesType.ToString() } }; var function = ApiFunction.SMA; return(await RequestTimeSeriesAsync(function, query)); }
public IndicatorArrowProperty() { LineColor = Color.Gray; LineSize = IndicatorSize.Large; }