示例#1
0
        protected override void CalcBar()
        {
            var m_avg  = m_averagefc1[0];
            var m_sdev = bollingerprice.StandardDeviationCustom(length, 1);

            m_upperband.Value = (m_avg + (numdevsup * m_sdev));
            m_lowerband.Value = (m_avg + (numdevsdn * m_sdev));
            if (((displace >= 0) || Bars.CurrentBar > Math.Abs(displace)))
            {
                Plot1.Set(displace, m_upperband.Value);
                Plot2.Set(displace, m_lowerband.Value);
                Plot3.Set(displace, m_avg);

                m_IndicatorArea.SetValue("UpperBand", m_upperband.Value, Bars.TimeValue.ToBinary());
                m_IndicatorArea.SetValue("LowerBand", m_lowerband.Value, Bars.TimeValue.ToBinary());

                if ((displace <= 0))
                {
                    if (this.CrossesOver(testpricelband, m_lowerband))
                    {
                        Alerts.Alert("Price crossing over lower price band");
                    }
                    else
                    {
                        if (this.CrossesUnder(testpriceuband, m_upperband))
                        {
                            Alerts.Alert("Price crossing under upper price band");
                        }
                    }
                }
            }

            ChartCustomDraw.ReDraw();
        }
示例#2
0
 protected override void Create()
 {
     ChartCustomDraw.Register(this);
     askPen             = new Pen(askColor, lineWidth);
     bidPen             = new Pen(bidColor, lineWidth);
     pricePen           = new Pen(priceColor, lineWidth);
     pricePen.DashStyle = DashStyle.Dash;
 }
示例#3
0
 protected override void StopCalc()
 {
     if (isCSDRegistred)
     {
         ChartCustomDraw.Unregister(this);
         isCSDRegistred = false;
     }
 }
示例#4
0
 protected override void StopCalc()
 {
     m_last_cb       = 0;
     m_last_tick_val = 0;
     m_volumes.Clear();
     Asks = null;
     Bids = null;
     ChartCustomDraw.ReDraw();
 }
示例#5
0
        protected override void StartCalc()
        {
            if (!isCSDRegistred)
            {
                ChartCustomDraw.Register(this);
                isCSDRegistred = true;
            }

            volstddev.numdays = length;
        }
示例#6
0
        protected override void StartCalc()
        {
            if (!isCSDRegistred)
            {
                ChartCustomDraw.Register(this);
                isCSDRegistred = true;
            }

            bollingerprice      = Bars.Close;
            testpriceuband      = Bars.Close;
            testpricelband      = Bars.Close;
            m_averagefc1.price  = bollingerprice;
            m_averagefc1.length = length;
        }
示例#7
0
        protected override void StartCalc()
        {
            if (!isCSDRegistred)
            {
                ChartCustomDraw.Register(this);
                isCSDRegistred = true;
            }

            mean_absolute_difference_fn.length = length;
            mean_absolute_difference_fn.target = Bars.Close;

            mean_absolute_difference_delta_fn.length = length;
            mean_absolute_difference_delta_fn.target = Bars.Close;
        }
示例#8
0
        protected override void CalcBar()
        {
            if (Bars.LastBarInSession)
            {
                m_upperband.Value = (Bars.Close[0] * (1 + (numdevs * volstddev[0] / Math.Sqrt(252))));
                m_lowerband.Value = (Bars.Close[0] * (1 - (numdevs * volstddev[0] / Math.Sqrt(252))));
            }
            else
            {
                m_upperband.Value = (Bars.Close[1] * (1 + (numdevs * volstddev[0] / Math.Sqrt(252))));
                m_lowerband.Value = (Bars.Close[1] * (1 - (numdevs * volstddev[0] / Math.Sqrt(252))));
            }

            Plot1.Set(0, m_upperband.Value);
            Plot2.Set(0, m_lowerband.Value);

            m_IndicatorArea.SetValue("UpperBand", m_upperband.Value, Bars.TimeValue.ToBinary());
            m_IndicatorArea.SetValue("LowerBand", m_lowerband.Value, Bars.TimeValue.ToBinary());

            ChartCustomDraw.ReDraw();
        }
示例#9
0
        protected override void CalcBar()
        {
            if (delta)
            {
                m_upperband.Value = Bars.Close[1] + multiplier * mean_absolute_difference_delta_fn[1];
                m_lowerband.Value = Bars.Close[1] - multiplier * mean_absolute_difference_delta_fn[1];
            }
            else
            {
                m_upperband.Value = Bars.Close[1] + multiplier * mean_absolute_difference_fn[1];
                m_lowerband.Value = Bars.Close[1] - multiplier * mean_absolute_difference_fn[1];
            }

            Plot1.Set(0, m_upperband.Value);
            Plot2.Set(0, m_lowerband.Value);

            m_IndicatorArea.SetValue("UpperBand", m_upperband.Value, Bars.TimeValue.ToBinary());
            m_IndicatorArea.SetValue("LowerBand", m_lowerband.Value, Bars.TimeValue.ToBinary());

            ChartCustomDraw.ReDraw();
        }
        protected override void OnRecalcLastBarAfterEvent()
        {
            if (Bars.DOM.Connected)
            {
                var _changed = false;
                lock (this){
                    var _old_ask = Asks;
                    var _old_bid = Bids;

                    Asks = Bars.DOM.Ask;
                    Bids = Bars.DOM.Bid;

                    _changed = !(equal(_old_ask, Asks) && equal(_old_bid, Bids));
                }

                if (_changed)
                {
                    ChartCustomDraw.ReDraw();
                }
                ExecControl.RecalcLastBarAfter(TimeSpan.FromSeconds(UpdateSpeedsec));
            }
        }
示例#11
0
        // Drawing is triggered here on a timer rather than in
        // CalcBar() because the bid and ask can change without CalcBar()
        // being called.
        protected override void OnRecalcLastBarAfterEvent()
        {
            if (Bars.DOM.Connected)
            {
                var _changed = false;
                // confusing logic; necessary because Bids/Asks will be null
                // on the first pass through.
                DOMPrice _old_ask  = new DOMPrice(double.NaN, double.NaN);
                DOMPrice _old_bid  = new DOMPrice(double.NaN, double.NaN);
                double   _old_last = double.NaN;
                lock (this){
                    if (null == Asks)
                    {
                        _changed = true;
                    }
                    else
                    {
                        _old_ask  = Asks[0];
                        _old_bid  = Bids[0];
                        _old_last = LastPrice;
                    }
                    Asks      = Bars.DOM.Ask;
                    Bids      = Bars.DOM.Bid;
                    LastPrice = Bars.Close[0];
                    _changed  = _changed || !((_old_ask == Asks[0]) &&
                                              (_old_bid == Bids[0]) &&
                                              (_old_last == LastPrice));
                }
                _changed = _changed || !(LastPrice == Bars.Close[0]);

                if (_changed)
                {
                    ChartCustomDraw.ReDraw();
                }
                ExecControl.RecalcLastBarAfter(TimeSpan.FromSeconds(UpdateSpeedSecs));
            }
        }
示例#12
0
 protected override void Destroy()
 {
     ChartCustomDraw.Unregister(this);
     askPen = bidPen = pricePen = null;
 }
 protected override void Create()
 {
     ChartCustomDraw.Register(this);
 }
 protected override void Destroy()
 {
     ChartCustomDraw.Unregister(this);
 }