/// <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); }
/// <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; }
/// <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); }
/// <summary> /// 建構子 /// </summary> /// <param name="master">CStudyControl 類別</param> public VariableSeries(IStudyControl master) : this(master, default(T), 1) { }
/// <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); }
/// <summary> /// 加入 FunctionObject 類別方法 /// </summary> /// <param name="func">IStudyControl 介面</param> public void AddFunction(IStudyControl func) { lock (__cFunctions) { __cFunctions.Add(func); } }
/// <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); }
/// <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); }
/// <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); }
/// <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)); }
/// <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)); }
/// <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)); }