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());
            }
        }
Exemplo n.º 2
0
        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));
        }
Exemplo n.º 4
0
 public IndicatorArrowProperty()
 {
     LineColor = Color.Gray;
     LineSize  = IndicatorSize.Large;
 }