Esempio n. 1
0
        protected override void UpdateColor(FootPrint.FpBar bar)
        {
            double maxVolume = 0;

            foreach (var line1 in bar.Lines)
            {
                var line = (BidAskLine)line1;
                maxVolume = Math.Max(maxVolume, line.AskVolume);
                maxVolume = Math.Max(maxVolume, line.BidVolume);
            }
            var logMax = ConvertPriceValue(maxVolume);

            foreach (var line1 in bar.Lines)
            {
                var line = (BidAskLine)line1;
                int r    = 50;
                int g    = 50;
                if (line.AskVolume >= line.BidVolume)
                {
                    var coef = line.AskVolume == 0 ? 0 : ConvertPriceValue(line.AskVolume) / logMax;
                    g = 255 - Math.Min(120, (int)(coef * 120));
                }
                if (line.AskVolume <= line.BidVolume)
                {
                    var coef = line.BidVolume == 0 ? 0 : ConvertPriceValue(line.BidVolume) / logMax;
                    r = 255 - Math.Min(120, (int)(coef * 120));
                }
                line.Color = new Color(r, g, 50);
            }
        }
Esempio n. 2
0
 private void ProcessTrades(FootPrint.FpBar bar, IEnumerable <ITrade> trades)
 {
     foreach (var trade in trades)
     {
         ProcessTrade(bar, trade);
         m_lastTrade = trade;
     }
 }
Esempio n. 3
0
        protected override void UpdateColor(FootPrint.FpBar bar)
        {
            double maxVolume = bar.Lines.Cast <VolumeLine>().Aggregate <VolumeLine, double>(0, (current, line) => Math.Max(current, line.Volume));
            var    logMax    = ConvertPriceValue(maxVolume);

            foreach (var line1 in bar.Lines)
            {
                var line    = (VolumeLine)line1;
                var coef    = line.Volume == 0 ? 0 : ConvertPriceValue(line.Volume) / logMax;
                var intCoef = Math.Min(120, (int)(coef * 120));
                line.Color = new Color(50, 50, 255 - intCoef);
            }
        }
Esempio n. 4
0
 protected abstract FootPrint.Line GetLine(FootPrint.FpBar bar, ITrade trade);
Esempio n. 5
0
 protected abstract void UpdateColor(FootPrint.FpBar bar);
Esempio n. 6
0
 protected abstract void ProcessTrade(FootPrint.FpBar bar, ITrade trade);
Esempio n. 7
0
 private void AddTick(FootPrint.FpBar bar, IEnumerable <ITrade> barTrades)
 {
     bar.Lines.Clear();
     ProcessTrades(bar, barTrades);
     UpdateColor(bar);
 }
Esempio n. 8
0
 protected override FootPrint.Line GetLine(FootPrint.FpBar bar, ITrade trade)
 {
     return(bar.GetLine <DeltaLine>(trade.Price));
 }
Esempio n. 9
0
        protected override void ProcessTrade(FootPrint.FpBar bar, ITrade trade)
        {
            var  line        = (BidAskLine)GetLine(bar, trade);
            bool isProcessed = false;

            if (trade.Direction != TradeDirection.Unknown)
            {
                if (trade.Direction == TradeDirection.Buy)
                {
                    line.AskVolume += trade.Quantity;
                }
                else
                {
                    line.BidVolume += trade.Quantity;
                }
                isProcessed = true;
            }
            else if (trade is ITradeWithBidAsk)
            {
                var trd = trade as ITradeWithBidAsk;
                if (trd.AskPrice > 0 && trd.BidPrice > 0)
                {
                    if (Math.Abs(trd.AskPrice - trade.Price) < Math.Abs(trd.BidPrice - trade.Price))
                    {
                        line.AskVolume += trade.Quantity;
                    }
                    else
                    {
                        line.BidVolume += trd.Quantity;
                    }
                    isProcessed = true;
                }
                else if (trd.AskPrice > 0)
                {
                    line.AskVolume += trade.Quantity;
                    isProcessed     = true;
                }
                else if (trd.BidPrice > 0)
                {
                    line.BidVolume += trd.Quantity;
                    isProcessed     = true;
                }
            }
            if (!isProcessed)
            {
                var lastPrice = m_lastTrade == null ? 0.0 : m_lastTrade.Price;
                if (trade.Price > lastPrice)
                {
                    line.AskVolume += trade.Quantity;
                    m_lastWasAsk    = true;
                }
                else if (trade.Price < lastPrice)
                {
                    line.BidVolume += trade.Quantity;
                    m_lastWasAsk    = false;
                }
                else
                {
                    if (m_lastWasAsk)
                    {
                        line.AskVolume += trade.Quantity;
                    }
                    else
                    {
                        line.BidVolume += trade.Quantity;
                    }
                }
            }
        }
Esempio n. 10
0
        protected override void ProcessTrade(FootPrint.FpBar bar, ITrade trade)
        {
            var line = (VolumeLine)GetLine(bar, trade);

            line.Volume += trade.Quantity;
        }