Exemple #1
0
 /// <summary>
 ///   建構子
 /// </summary>
 /// <param name="master">IStudyControl 介面</param>
 /// <param name="defaultVal">預設值</param>
 /// <param name="dataStream">資料串流編號(預設值=1)</param>
 internal _Variable(IStudyControl master, T defaultVal, int dataStream = 1)
 {
     //目前的 CurrentBar 需要超過兩個 Bars 之後才開始保存前一筆的資訊(前兩個 Bars 資訊可能會因為往前請求而導致 CurrentBar 不準確, 所以都跳過兩個 Bars 後在保存前一筆的資訊)
     __iPreviousBar = 2;
     __current      = defaultVal;
     __previous     = defaultVal;
     __cBars        = master.BarsOfData(dataStream);
 }
Exemple #2
0
		/// <summary>
		///   計算真實區間移動平均的移動平均值
		/// </summary>
		/// <param name="_this">IStudyControl 類別</param>
		/// <param name="length">移動平均長度</param>
		/// <param name="barsBack">Bars 索引值(0=目前索引位置)</param>
		/// <param name="dataStream">資料串流編號</param>
		/// <param name="previous">前一筆真實區間移動平均值</param>
		/// <returns>返回值: 真實區間移動平均值</returns>
		public static double AverageTrueRange(IStudyControl _this, int length, int barsBack, int dataStream, double previous) {
			double dValue = 0;
			
			IInstrument cBars = _this.BarsOfData(dataStream);
			if (previous == 0d) {
				double dSum = 0;
				for (int i = length - 1; i >= 0; i--) {
					dSum += GetTrueRange(cBars, barsBack + i);
				}
				dValue = dSum / length;
			} else {
				previous *= length;
				dValue = (previous - GetTrueRange(cBars, barsBack + length) + GetTrueRange(cBars, barsBack)) / ((length == 0) ? 1 : length);
			}
			return dValue;
		}
Exemple #3
0
        /// <summary>
        ///   計算真實區間移動平均的移動平均值
        /// </summary>
        /// <param name="_this">IStudyControl 類別</param>
        /// <param name="length">移動平均長度</param>
        /// <param name="barsBack">Bars 索引值(0=目前索引位置)</param>
        /// <param name="dataStream">資料串流編號</param>
        /// <param name="previous">前一筆真實區間移動平均值</param>
        /// <returns>返回值: 真實區間移動平均值</returns>
        public static double AverageTrueRange(IStudyControl _this, int length, int barsBack, int dataStream, double previous)
        {
            double dValue = 0;

            IInstrument cBars = _this.BarsOfData(dataStream);

            if (previous == 0d)
            {
                double dSum = 0;
                for (int i = length - 1; i >= 0; i--)
                {
                    dSum += GetTrueRange(cBars, barsBack + i);
                }
                dValue = dSum / length;
            }
            else
            {
                previous *= length;
                dValue    = (previous - GetTrueRange(cBars, barsBack + length) + GetTrueRange(cBars, barsBack)) / ((length == 0) ? 1 : length);
            }
            return(dValue);
        }
Exemple #4
0
 /// <summary>
 ///   建構子
 /// </summary>
 /// <param name="master">CStudyControl 類別</param>
 public VariableSeries(IStudyControl master)
     : this(master, default(T), 1)
 {
 }
Exemple #5
0
 /// <summary>
 ///   初始化 TextContainer 類別(建立 TextObject 儲存體)
 /// </summary>
 /// <param name="master">IStudyControl 腳本控制介面</param>
 public void Initialate(IStudyControl master)
 {
     __cAbsoluteObjects = new List <TextObject>(32);
     __cTextObjects     = new VariableSeries <List <TextObject> >(master);
 }
Exemple #6
0
		/// <summary>
		///   加入 FunctionObject 類別方法
		/// </summary>
		/// <param name="func">IStudyControl 介面</param>
		public void AddFunction(IStudyControl func) {
			lock (__cFunctions) {
				__cFunctions.Add(func);
			}
		}
		/// <summary>
		///   加入 FunctionObject 類別方法
		/// </summary>
		/// <param name="func">IStudyControl 介面</param>
		public void AddFunction(IStudyControl func) {
			lock (__cFunctions) {
				__cFunctions.Add(func);
			}
		}
Exemple #8
0
		/// <summary>
		///   計算真實區間移動平均的移動平均值
		/// </summary>
		/// <param name="_this">IStudyControl 類別</param>
		/// <param name="length">移動平均長度</param>
		/// <param name="dataStream">資料串流編號</param>
		/// <param name="previous">前一筆真實區間移動平均值</param>
		/// <returns>返回值: 真實區間移動平均值</returns>
		public static double AverageTrueRange(IStudyControl _this, int length, int dataStream, double previous) {
			return AverageTrueRange(_this, length, 0, dataStream, previous);
		}
Exemple #9
0
		/// <summary>
		///   計算真實區間移動平均的移動平均值
		/// </summary>
		/// <param name="_this">IStudyControl 類別</param>
		/// <param name="length">移動平均長度</param>
		/// <param name="barsBack">Bars 索引值(0=目前索引位置)</param>
		/// <param name="dataStream">資料串流編號</param>
		/// <returns>返回值: 真實區間移動平均值</returns>
		public static double AverageTrueRange(IStudyControl _this, int length, int barsBack, int dataStream) {
			return AverageTrueRange(_this, length, barsBack, dataStream, 0d);
		}
Exemple #10
0
		/// <summary>
		///   計算真實區間移動平均的移動平均值
		/// </summary>
		/// <param name="_this">IStudyControl 類別</param>
		/// <param name="length">移動平均長度</param>
		/// <returns>返回值: 真實區間移動平均值</returns>
		public static double AverageTrueRange(IStudyControl _this, int length) {
			return AverageTrueRange(_this, length, 0, 1, 0d);
		}
Exemple #11
0
 /// <summary>
 ///   計算真實區間移動平均的移動平均值
 /// </summary>
 /// <param name="_this">IStudyControl 類別</param>
 /// <param name="length">移動平均長度</param>
 /// <param name="dataStream">資料串流編號</param>
 /// <param name="previous">前一筆真實區間移動平均值</param>
 /// <returns>返回值: 真實區間移動平均值</returns>
 public static double AverageTrueRange(IStudyControl _this, int length, int dataStream, double previous)
 {
     return(AverageTrueRange(_this, length, 0, dataStream, previous));
 }
Exemple #12
0
 /// <summary>
 ///   計算真實區間移動平均的移動平均值
 /// </summary>
 /// <param name="_this">IStudyControl 類別</param>
 /// <param name="length">移動平均長度</param>
 /// <param name="barsBack">Bars 索引值(0=目前索引位置)</param>
 /// <param name="dataStream">資料串流編號</param>
 /// <returns>返回值: 真實區間移動平均值</returns>
 public static double AverageTrueRange(IStudyControl _this, int length, int barsBack, int dataStream)
 {
     return(AverageTrueRange(_this, length, barsBack, dataStream, 0d));
 }
Exemple #13
0
 /// <summary>
 ///   計算真實區間移動平均的移動平均值
 /// </summary>
 /// <param name="_this">IStudyControl 類別</param>
 /// <param name="length">移動平均長度</param>
 /// <returns>返回值: 真實區間移動平均值</returns>
 public static double AverageTrueRange(IStudyControl _this, int length)
 {
     return(AverageTrueRange(_this, length, 0, 1, 0d));
 }