Esempio n. 1
0
        /// <summary>
        /// Called on each bar update event (incoming tick)
        /// </summary>
        protected override void OnBarUpdate()
        {
            /// ensure bar has EmProps
            if (props is IEmProps)
            {
                /// get EmProps for the specified bar, matching on OHLCVT
                EmProps barProps = props.GetEmProps(Open[0], High[0], Low[0], Close[0], (long)Volume[0], Time[0]) as EmProps;

                /// ensure EmProps exist for given bar (note: some historical data may not be available)
                if (barProps == null)
                {
                    return;
                }

                /// update plots
                Surge.Set(barProps.Surge);
                Tide.Set(barProps.Tide);
                ErrorCount.Set(barProps.ErrorCount);
                ErrorVolume.Set(barProps.ErrorVolume);

                /// update average
                TideAvg.Set(EmMath.EMA((double)barProps.Tide, CurrentBar, smooth, CurrentBar == 0 ? Tide[0] : TideAvg[1]));
            }
            else
            {
                /// generate log message one time
                if (!invalid)
                {
                    Log(String.Format("{0} does not implement interface IEmProps", Bars.BarsType.ToString()), LogLevel.Warning);
                    invalid = true;
                }
            }
        }
Esempio n. 2
0
 private void AnimateSun_Click(object sender, RoutedEventArgs e)
 {
     Surge.FrameTimeSpan = TimeSpan.FromSeconds(0.3);
     Surge.BeginAnimation(new[] { "Sun1", "Sun2", "Sun3", "Sun4", "Sun5", "Sun6", "Sun6", "Sun6", "Sun6" });
 }
Esempio n. 3
0
 private void Animate_Click(object sender, RoutedEventArgs e)
 {
     Surge.FrameTimeSpan = TimeSpan.FromSeconds(0.2);
     Surge.BeginAnimation(new[] { "Ball1", "Ball2", "Ball3", "Ball4" });
 }