private void Instrument_onPositionChange(object sender, SeriesPositionChangeEvent e)
        {
            int iCount = __cVariables.Count;

            if (iCount > 0)
            {
                lock (__cVariables) {
                    Parallel.For(0, iCount, (i) => {
                        IVariables cVariables = __cVariables[i];
                        cVariables.Move(e.Current);
                    });
                }
            }
            CalcBar();
        }
		/// <summary>
		///   計算使用者設計的邏輯方法 CalcBar
		/// </summary>
		internal void OnCalculate() {
			int iCount = __cVariables.Count;
			if (iCount > 0) {
				lock (__cVariables) {
					Parallel.For(0, iCount, (i) => {
						IVariables cVariables = __cVariables[i];

						Instrument cInstrument = this.Instruments[cVariables.DataStream - 1];
						cVariables.Move(cInstrument.CurrentBar);
					});
				}
			}

			try {
				this.CalcBar();
			} catch(Exception __errExcep) {
				if (logger.IsErrorEnabled) logger.ErrorFormat("{0}\r\n{1}", __errExcep.Message, __errExcep.StackTrace);
			}
		}