/// <summary>
        /// Returns the candle setting for the requested type
        /// </summary>
        /// <param name="type">The candle setting type</param>
        public static CandleSetting Get(CandleSettingType type)
        {
            CandleSetting setting;

            DefaultSettings.TryGetValue(type, out setting);
            return(setting);
        }
示例#2
0
        /// <summary>
        /// Returns the average range of the previous candles
        /// </summary>
        /// <param name="type">The type of setting to use</param>
        /// <param name="sum">The sum of the previous candles ranges</param>
        /// <param name="tradeBar">The input candle</param>
        protected static double GetCandleAverage(CandleSettingType type, double sum, DoubleArray tradeBar)
        {
            var defaultSetting = CandleSettings.Get(type);

            return(defaultSetting.Factor *
                   (defaultSetting.AveragePeriod != 0 ? sum / defaultSetting.AveragePeriod : GetCandleRange(type, tradeBar)) /
                   (defaultSetting.RangeType == CandleRangeType.Shadows ? 2.0d : 1.0d));
        }
示例#3
0
        /// <summary>
        /// Returns the average range of the previous candles
        /// </summary>
        /// <param name="type">The type of setting to use</param>
        /// <param name="sum">The sum of the previous candles ranges</param>
        /// <param name="tradeBar">The input candle</param>
        protected static decimal GetCandleAverage(CandleSettingType type, decimal sum, DataPointBar tradeBar)
        {
            var defaultSetting = CandleSettings.Get(type);

            return(defaultSetting.Factor *
                   (defaultSetting.AveragePeriod != 0 ? sum / defaultSetting.AveragePeriod : GetCandleRange(type, tradeBar)) /
                   (defaultSetting.RangeType == CandleRangeType.Shadows ? 2.0m : 1.0m));
        }
示例#4
0
 protected double GetCandleRange(CandleSettingType candleSettingType, int index)
 {
     return(GetCandleRangeType(candleSettingType) switch
     {
         RangeType.RealBody => GetRealBody(index),
         RangeType.HighLow => GetHighLowRange(index),
         RangeType.Shadows => GetUpperShadow(index) + GetLowerShadow(index),
         _ => 0.0
     });
示例#5
0
 private static double TA_CandleRange(IReadOnlyList <double> open, IReadOnlyList <double> high, IReadOnlyList <double> low,
                                      IReadOnlyList <double> close, CandleSettingType set, int idx)
 {
     return(TA_CandleRangeType(set) switch
     {
         RangeType.RealBody => TA_RealBody(close, open, idx),
         RangeType.HighLow => TA_HighLowRange(high, low, idx),
         RangeType.Shadows => TA_UpperShadow(high, close, open, idx) + TA_LowerShadow(close, open, low, idx),
         _ => 0
     });
示例#6
0
 public static RetCode SetCandleSettings(CandleSettingType settingType, RangeType rangeType, int avgPeriod, double factor)
 {
     if (settingType >= CandleSettingType.AllCandleSettings)
     {
         return(RetCode.BadParam);
     }
     Globals.candleSettings[(int)settingType].settingType = settingType;
     Globals.candleSettings[(int)settingType].rangeType   = rangeType;
     Globals.candleSettings[(int)settingType].avgPeriod   = avgPeriod;
     Globals.candleSettings[(int)settingType].factor      = factor;
     return(RetCode.Success);
 }
示例#7
0
        /// <summary>
        /// Returns the range of a candle
        /// </summary>
        /// <param name="type">The type of setting to use</param>
        /// <param name="tradeBar">The input candle</param>
        protected static double GetCandleRange(CandleSettingType type, DoubleArray tradeBar)
        {
            switch (CandleSettings.Get(type).RangeType)
            {
            case CandleRangeType.RealBody:
                return(GetRealBody(tradeBar));

            case CandleRangeType.HighLow:
                return(GetHighLowRange(tradeBar));

            case CandleRangeType.Shadows:
                return(GetUpperShadow(tradeBar) + GetLowerShadow(tradeBar));

            default:
                return(0d);
            }
        }
示例#8
0
        /// <summary>
        /// Returns the range of a candle
        /// </summary>
        /// <param name="type">The type of setting to use</param>
        /// <param name="tradeBar">The input candle</param>
        protected static decimal GetCandleRange(CandleSettingType type, DataPointBar tradeBar)
        {
            switch (CandleSettings.Get(type).RangeType)
            {
            case CandleRangeType.RealBody:
                return(GetRealBody(tradeBar));

            case CandleRangeType.HighLow:
                return(GetHighLowRange(tradeBar));

            case CandleRangeType.Shadows:
                return(GetUpperShadow(tradeBar) + GetLowerShadow(tradeBar));

            default:
                return(0m);
            }
        }
示例#9
0
        public static RetCode RestoreCandleDefaultSettings(CandleSettingType settingType)
        {
            switch (settingType)
            {
            case CandleSettingType.BodyLong:
                SetCandleSettings(CandleSettingType.BodyLong, RangeType.RealBody, 10, 1.0);
                break;

            case CandleSettingType.BodyVeryLong:
                SetCandleSettings(CandleSettingType.BodyVeryLong, RangeType.RealBody, 10, 3.0);
                break;

            case CandleSettingType.BodyShort:
                SetCandleSettings(CandleSettingType.BodyShort, RangeType.RealBody, 10, 1.0);
                break;

            case CandleSettingType.BodyDoji:
                SetCandleSettings(CandleSettingType.BodyDoji, RangeType.HighLow, 10, 0.1);
                break;

            case CandleSettingType.ShadowLong:
                SetCandleSettings(CandleSettingType.ShadowLong, RangeType.RealBody, 0, 1.0);
                break;

            case CandleSettingType.ShadowVeryLong:
                SetCandleSettings(CandleSettingType.ShadowVeryLong, RangeType.RealBody, 0, 2.0);
                break;

            case CandleSettingType.ShadowShort:
                SetCandleSettings(CandleSettingType.ShadowShort, RangeType.Shadows, 10, 1.0);
                break;

            case CandleSettingType.ShadowVeryShort:
                SetCandleSettings(CandleSettingType.ShadowVeryShort, RangeType.HighLow, 10, 0.1);
                break;

            case CandleSettingType.Near:
                SetCandleSettings(CandleSettingType.Near, RangeType.HighLow, 5, 0.2);
                break;

            case CandleSettingType.Far:
                SetCandleSettings(CandleSettingType.Far, RangeType.HighLow, 5, 0.6);
                break;

            case CandleSettingType.Equal:
                SetCandleSettings(CandleSettingType.Equal, RangeType.HighLow, 5, 0.05);
                break;

            case CandleSettingType.AllCandleSettings:
                SetCandleSettings(CandleSettingType.BodyLong, RangeType.RealBody, 10, 1.0);
                SetCandleSettings(CandleSettingType.BodyVeryLong, RangeType.RealBody, 10, 3.0);
                SetCandleSettings(CandleSettingType.BodyShort, RangeType.RealBody, 10, 1.0);
                SetCandleSettings(CandleSettingType.BodyDoji, RangeType.HighLow, 10, 0.1);
                SetCandleSettings(CandleSettingType.ShadowLong, RangeType.RealBody, 0, 1.0);
                SetCandleSettings(CandleSettingType.ShadowVeryLong, RangeType.RealBody, 0, 2.0);
                SetCandleSettings(CandleSettingType.ShadowShort, RangeType.Shadows, 10, 1.0);
                SetCandleSettings(CandleSettingType.ShadowVeryShort, RangeType.HighLow, 10, 0.1);
                SetCandleSettings(CandleSettingType.Near, RangeType.HighLow, 5, 0.2);
                SetCandleSettings(CandleSettingType.Far, RangeType.HighLow, 5, 0.6);
                SetCandleSettings(CandleSettingType.Equal, RangeType.HighLow, 5, 0.05);
                break;
            }
            return(RetCode.Success);
        }
示例#10
0
 private static double TA_CandleFactor(CandleSettingType set)
 {
     return(Globals.CandleSettings[(int)set].Factor);
 }
示例#11
0
 private static int TA_CandleAvgPeriod(CandleSettingType set)
 {
     return(Globals.CandleSettings[(int)set].AvgPeriod);
 }
示例#12
0
 private static RangeType TA_CandleRangeType(CandleSettingType set)
 {
     return(Globals.CandleSettings[(int)set].RangeType);
 }
示例#13
0
 /// <summary>
 /// Changes the default candle setting for the requested type
 /// </summary>
 /// <param name="type">The candle setting type</param>
 /// <param name="setting">The candle setting</param>
 public static void Set(CandleSettingType type, CandleSetting setting)
 {
     DefaultSettings[type] = setting;
 }
示例#14
0
 protected double GetCandleFactor(CandleSettingType candleSettingType)
 => TACore.Globals.candleSettings[(int)candleSettingType].factor;
示例#15
0
 protected int GetCandleAvgPeriod(CandleSettingType candleSettingType)
 => TACore.Globals.candleSettings[(int)candleSettingType].avgPeriod;
示例#16
0
 protected RangeType GetCandleRangeType(CandleSettingType candleSettingType)
 => TACore.Globals.candleSettings[(int)candleSettingType].rangeType;
 /// <summary>
 /// Changes the default candle setting for the requested type
 /// </summary>
 /// <param name="type">The candle setting type</param>
 /// <param name="setting">The candle setting</param>
 public static void Set(CandleSettingType type, CandleSetting setting)
 {
     DefaultSettings[type] = setting;
 }
示例#18
0
 /// <summary>
 /// Returns the candle setting for the requested type
 /// </summary>
 /// <param name="type">The candle setting type</param>
 public static CandleSetting Get(CandleSettingType type)
 {
     CandleSetting setting;
     DefaultSettings.TryGetValue(type, out setting);
     return setting;
 }