Esempio n. 1
0
        static IEnumerable <Models.Rate> GetRsi(List <Rate> rates, int func, int index)
        {
            if (rates.Count == index)
            {
                yield break;
            }

            var date = DateTime.Now;
            var rsi  = new Rsi(func);

            for (int i = index; i < func + index; i++)
            {
                rsi.AddValue(rates[index].Value);
                date = rates[index].Time;
            }

            yield return(new Models.Rate {
                Date = date, Value = rsi.Last
            });

            foreach (var r in GetRate(rates, func, index + 1))
            {
                yield return(r);
            }
        }
Esempio n. 2
0
        public TwoLegArbitrage(string name, StartProgram startProgram)
            : base(name, startProgram)
        {
            TabCreate(BotTabType.Index);
            _tabIndex = TabsIndex[0];

            TabCreate(BotTabType.Simple);
            _tab1 = TabsSimple[0];
            TabCreate(BotTabType.Simple);
            _tab2 = TabsSimple[1];

            _tab1.CandleFinishedEvent   += Tab1_CandleFinishedEvent;
            _tab2.CandleFinishedEvent   += Tab2_CandleFinishedEvent;
            _tabIndex.SpreadChangeEvent += TabIndex_CandleFinishedEvent;

            Regime    = CreateParameter("Regime", "Off", new[] { "Off", "On", "OnlyLong", "OnlyShort", "OnlyClosePosition" });
            Upline    = CreateParameter("Upline", 10, 50, 80, 3);
            Downline  = CreateParameter("Downline", 10, 25, 50, 2);
            Volume    = CreateParameter("Volume", 3, 1, 50, 4);
            Slippage  = CreateParameter("Slipage", 0, 0, 20, 1);
            RsiLength = CreateParameter("RsiLength", 10, 5, 150, 2);

            _rsi = new Rsi(name + "RSI", false)
            {
                Lenght = 20, ColorBase = Color.Gold,
            };
            _rsi        = (Rsi)_tabIndex.CreateCandleIndicator(_rsi, "RsiArea");
            _rsi.Lenght = RsiLength.ValueInt;
            _rsi.Save();

            ParametrsChangeByUser += TwoLegArbitrage_ParametrsChangeByUser;
        }
Esempio n. 3
0
        public void AverageLoss_PeriodBiggerOrEqualToDataLength_ReturnZero()
        {
            //When
            var result = Rsi.AverageLoss(ascending_data, period: 10);

            //Then
            Assert.Equal(0, result);
        }
Esempio n. 4
0
        public void RsiSingle_PeriodBiggerOrEqualToDataLength_ReturnNull()
        {
            //When
            var result = Rsi.RsiSingle(descending_data, period: 10);

            //Then
            Assert.Null(result);
        }
Esempio n. 5
0
        public void Rsi_SimpleValues_Calculated(int period, params double?[] expected)
        {
            //When
            var result = Rsi.RSI(_ascendingData, period);

            //Then
            Assert.Equal(expected, result);
        }
Esempio n. 6
0
        public void AverageLoss_SimpleValues_Calculated(int period, double expected)
        {
            //When
            var result = Rsi.AverageLoss(_descendingData, period);

            //Then
            Assert.Equal(expected, result);
        }
Esempio n. 7
0
        public void AverageGain_Must_Return_Zero_On_Descending_Values(int period, double expected)
        {
            //When
            var result = Rsi.AverageGain(_descendingData, period);

            //Then
            Assert.Equal(expected, result);
        }
Esempio n. 8
0
        public void AverageLoss_SimpleValues_Calculated()
        {
            //When
            var result = Rsi.AverageLoss(descending_data, period: 9);

            //Then
            Assert.Equal(1, result);
        }
Esempio n. 9
0
        public void Rsi_Test_14()
        {
            var rsi = new Rsi(BuildCandleSticks(), 14, "");

            Assert.AreEqual(37.77m, Math.Round(rsi.Value, 2));
            var results = rsi.rsi.Select(value => Math.Round(value, 2)).ToList();

            Compare(RsiResults().ToList(), results);
        }
Esempio n. 10
0
        public static List <decimal?> Rsi(this IEnumerable <ICandle> candles, int?period = null)
        {
            period ??= 14;

            IIndicatorOptions options = new RsiOptions(period.Value);
            Rsi rsi = new Rsi();

            return(rsi.Get(candles, options));
        }
Esempio n. 11
0
        public void Rsi_Simplevalues_Calculated()
        {
            //When
            var result = Rsi.RSI(ascending_data, period: 9);

            double?[] expected = { null, null, null, null, null, null, null, null, null, 100 };
            //Then
            Assert.Equal(expected, result);
        }
Esempio n. 12
0
        public DataNode Write(ISerializationManager serializationManager, Rsi value, bool alwaysWrite = false,
                              ISerializationContext?context = null)
        {
            var mapping = new MappingDataNode();

            mapping.Add("sprite", serializationManager.WriteValue(value.RsiPath));
            mapping.Add("state", new ValueDataNode(value.RsiState));
            return(mapping);
        }
Esempio n. 13
0
        public void RsiSingle_SimpleValues_Calculated(int period)
        {
            //When
            var result  = Rsi.RsiSingle(_descendingData, period);
            var result2 = Rsi.RsiSingle(_ascendingData, period);

            //Then
            Assert.Equal(0D, result);
            Assert.Equal(100D, result2);
        }
Esempio n. 14
0
        public void RsiSingle_SimpleValues_Calculated()
        {
            //When
            var result  = Rsi.RsiSingle(descending_data, period: 9);
            var result2 = Rsi.RsiSingle(ascending_data, period: 9);

            //Then
            Assert.Equal(0D, result);
            Assert.Equal(100D, result2);
        }
Esempio n. 15
0
        /// <summary>
        /// Called on every new bar of data.
        /// </summary>
        /// <param name="currentBar">The current bar of the simulation</param>
        protected override void OnBarUpdate(int currentBar)
        {
            base.OnBarUpdate(currentBar);

            Rsi rsi = (Rsi)Dependents[0];

            if (DataSeries.CrossBelow(rsi.Value, 70, currentBar, 0) != -1)
            {
                WasFound[currentBar] = true;
            }
        }
Esempio n. 16
0
        /// <summary>
        /// Called on every new bar of data.
        /// </summary>
        /// <param name="currentBar">The current bar of the simulation</param>
        protected override void OnBarUpdate(int currentBar)
        {
            base.OnBarUpdate(currentBar);

            Rsi rsi = (Rsi)Dependents[0];

            if (DataSeries.IsAboutToCrossAbove(rsi.Value, 30, currentBar) == true)
            {
                WasFound[currentBar] = true;
            }
        }
Esempio n. 17
0
        public RsiContrtrend(string name, StartProgram startProgram)
            : base(name, startProgram)
        {
            TabCreate(BotTabType.Simple);
            _tab = TabsSimple[0];

            _ma = new MovingAverage(name + "MA", false)
            {
                Lenght = 50, ColorBase = Color.CornflowerBlue,
            };
            _ma = (MovingAverage)_tab.CreateCandleIndicator(_ma, "Prime");

            _rsi = new Rsi(name + "RSI", false)
            {
                Lenght = 20, ColorBase = Color.Gold,
            };
            _rsi = (Rsi)_tab.CreateCandleIndicator(_rsi, "RsiArea");

            Upline = new LineHorisontal("upline", "RsiArea", false)
            {
                Color = Color.Green,
                Value = 0,
            };
            _tab.SetChartElement(Upline);

            Downline = new LineHorisontal("downline", "RsiArea", false)
            {
                Color = Color.Yellow,
                Value = 0
            };
            _tab.SetChartElement(Downline);

            _rsi.Save();
            _ma.Save();

            _tab.CandleFinishedEvent += Strateg_CandleFinishedEvent;

            Slipage        = 0;
            VolumeFix      = 1;
            Upline.Value   = 65;
            Downline.Value = 35;


            Load();

            Upline.TimeEnd   = DateTime.Now;
            Downline.TimeEnd = DateTime.Now;

            DeleteEvent += Strategy_DeleteEvent;
        }
Esempio n. 18
0
        public StochRsi(IEnumerable <Candlestick> candleSticks, int rsiLength, int shochRsiLength, int smoothK,
                        int smoothD, string ticker)
        {
            this._candleSticks   = candleSticks;
            this._rsiLength      = rsiLength;
            this._shochRsiLength = shochRsiLength;
            this._smoothK        = smoothK;
            this._smoothD        = smoothD;

            rsi = new Rsi(candleSticks, _rsiLength, "");
            var candlesticks = _candleSticks.Skip(_rsiLength + _shochRsiLength - 1).ToList();

            CalculateShochRsi(candlesticks);
        }
Esempio n. 19
0
        static Models.Rate GetRsi(List <Rate> rates, int func)
        {
            var date = DateTime.Now;
            var rsi  = new Rsi(func);

            foreach (var rate in rates)
            {
                rsi.AddValue(rate.Value);
                date = rate.Time;
            }

            return(new Models.Rate {
                Date = date, Value = rsi.Last
            });
        }
Esempio n. 20
0
        public DataNode Write(ISerializationManager serializationManager, SpriteSpecifier value, bool alwaysWrite = false,
                              ISerializationContext?context = null)
        {
            return(value switch
            {
                Rsi rsi
                => Write(serializationManager, rsi, alwaysWrite, context),

                Texture texture
                => Write(serializationManager, texture, alwaysWrite, context),

                EntityPrototype entityPrototype
                => Write(serializationManager, entityPrototype, alwaysWrite, context),

                _ => throw new InvalidOperationException("Invalid SpriteSpecifier specified!")
            });
Esempio n. 21
0
 public Prices()
 {
     Type = Price.Close;
     Map  = new Dictionary <Price, List <double> >();
     foreach (Price type in Enum.GetValues(typeof(Price)))
     {
         Map[type] = new List <double>();
     }
     FastEma = new Ema(Const.DIRECTIONAL_FAST_EMA_LENGTH);
     SlowEma = new Ema(Const.DIRECTIONAL_SLOW_EMA_LENGTH);
     Bb      = new Bb(Const.BB_WIDTH, Const.BB_PERIOD);
     //Kc = new Kc(Const.BB_WIDTH, Const.BB_PERIOD);
     //Mc = new Mc(Const.BB_PERIOD);
     Macd       = new Macd(FastEma, SlowEma, Const.MACD_SIGNAL_LENGTH);
     Rsi        = new Rsi(Const.RSI_LENGTH);
     StochRsi   = new StochRsi(Rsi, Const.STOCH_RSI_LENGTH, Const.STOCH_RSI_D_LENGTH);
     Indicators = new List <IIndicator>
     {
         FastEma, SlowEma, Bb, /*Kc,*/ /*Mc,*/ Macd, Rsi, StochRsi
     };
 }
Esempio n. 22
0
        private void BuildIndicators()
        {
            Sma.Add(5, new Sma(_candleSticks, 5, pair));
            Sma.Add(10, new Sma(_candleSticks, 10, pair));
            Sma.Add(15, new Sma(_candleSticks, 15, pair));
            Sma.Add(20, new Sma(_candleSticks, 20, pair));
            Sma.Add(40, new Sma(_candleSticks, 40, pair));
            Sma.Add(100, new Sma(_candleSticks, 100, pair));
            Ema.Add(5, new Ema(_candleSticks, 5, pair));
            Ema.Add(10, new Ema(_candleSticks, 10, pair));
            Ema.Add(15, new Ema(_candleSticks, 15, pair));
            Ema.Add(20, new Ema(_candleSticks, 20, pair));
            Ema.Add(40, new Ema(_candleSticks, 40, pair));
            Ema.Add(80, new Ema(_candleSticks, 80, pair));

            Gsma.Add(20, new Gsma(_candleSticks, 20, 10, pair));

            stochRsi = new StochRsi(_candleSticks, 14, 14, 8, 8, pair);
            rsi      = new Rsi(_candleSticks, 14, pair);
            macd     = new Macd(_candleSticks, 12, 26, 9, pair);
        }
Esempio n. 23
0
        /// <summary>
        /// If the runnable has already been created, returns that object. If not then
        /// returns an new runnable object based on the name and the instrument.
        /// </summary>
        /// <param name="nameAndParameters">Name of the runnable</param>
        /// <returns>The runnable object</returns>
        public Runnable GetRunnable(string nameAndParameters)
        {
            Runnable requestedItem = null;

            // The name can have parameters to pass to the runnable construtor
            // and are separated by commas.
            // Ex: Rsi,11,3 would create the Rsi and pass the numbers to it in a
            // list. Its up to the indicator to do what it will with each number.
            string[] splitParams  = nameAndParameters.Split(',');
            string   runnableName = splitParams[0];

            string[] runnableParams = splitParams.Skip(1).Take(splitParams.Length - 1).ToArray();

            // See if the runnable is created already and return that object if it is.
            int key = nameAndParameters.GetHashCode();

            if (_createdItems.ContainsKey(key))
            {
                requestedItem = _createdItems[key];
            }
            else
            {
                switch (runnableName)
                {
                // Indicators.
                case "Bollinger":
                    requestedItem = new Bollinger(_tickerData, this);
                    Simulator.DataOutput.SaveIndicator((Indicator)requestedItem);
                    break;

                case "BressertDss":
                    requestedItem = new BressertDss(_tickerData, this, runnableParams);
                    Simulator.DataOutput.SaveIndicator((Indicator)requestedItem);
                    break;

                case "BressertTimingBands":
                    requestedItem = new BressertTimingBands(_tickerData, this);
                    Simulator.DataOutput.SaveIndicator((Indicator)requestedItem);
                    break;

                case "BearBeltHold":
                    requestedItem = new BearBeltHold(_tickerData, this);
                    Simulator.DataOutput.SaveIndicator((Indicator)requestedItem);
                    break;

                case "BearEngulfing":
                    requestedItem = new BearEngulfing(_tickerData, this);
                    Simulator.DataOutput.SaveIndicator((Indicator)requestedItem);
                    break;

                case "BearHarami":
                    requestedItem = new BearHarami(_tickerData, this);
                    Simulator.DataOutput.SaveIndicator((Indicator)requestedItem);
                    break;

                case "BearHaramiCross":
                    requestedItem = new BearHaramiCross(_tickerData, this);
                    Simulator.DataOutput.SaveIndicator((Indicator)requestedItem);
                    break;

                case "BullBeltHold":
                    requestedItem = new BullBeltHold(_tickerData, this);
                    Simulator.DataOutput.SaveIndicator((Indicator)requestedItem);
                    break;

                case "BullEngulfing":
                    requestedItem = new BullEngulfing(_tickerData, this);
                    Simulator.DataOutput.SaveIndicator((Indicator)requestedItem);
                    break;

                case "BullHarami":
                    requestedItem = new BullHarami(_tickerData, this);
                    Simulator.DataOutput.SaveIndicator((Indicator)requestedItem);
                    break;

                case "BullHaramiCross":
                    requestedItem = new BullHaramiCross(_tickerData, this);
                    Simulator.DataOutput.SaveIndicator((Indicator)requestedItem);
                    break;

                case "Cci14":
                    requestedItem = new Cci(_tickerData, this, 14);
                    Simulator.DataOutput.SaveIndicator((Indicator)requestedItem);
                    break;

                case "DarkCloudCover":
                    requestedItem = new DarkCloudCover(_tickerData, this);
                    Simulator.DataOutput.SaveIndicator((Indicator)requestedItem);
                    break;

                case "Doji":
                    requestedItem = new Doji(_tickerData, this);
                    Simulator.DataOutput.SaveIndicator((Indicator)requestedItem);
                    break;

                case "BearDoji":
                    requestedItem = new BearDoji(_tickerData, this);
                    Simulator.DataOutput.SaveIndicator((Indicator)requestedItem);
                    break;

                case "DownsideTasukiGap":
                    requestedItem = new DownsideTasukiGap(_tickerData, this);
                    Simulator.DataOutput.SaveIndicator((Indicator)requestedItem);
                    break;

                case "EaseOfMovement":
                    requestedItem = new EaseOfMovement(_tickerData, this);
                    Simulator.DataOutput.SaveIndicator((Indicator)requestedItem);
                    break;

                case "EveningStar":
                    requestedItem = new EveningStar(_tickerData, this);
                    Simulator.DataOutput.SaveIndicator((Indicator)requestedItem);
                    break;

                case "FallingThreeMethods":
                    requestedItem = new FallingThreeMethods(_tickerData, this);
                    Simulator.DataOutput.SaveIndicator((Indicator)requestedItem);
                    break;

                case "Hammer":
                    requestedItem = new Hammer(_tickerData, this);
                    Simulator.DataOutput.SaveIndicator((Indicator)requestedItem);
                    break;

                case "HangingMan":
                    requestedItem = new HangingMan(_tickerData, this);
                    Simulator.DataOutput.SaveIndicator((Indicator)requestedItem);
                    break;

                case "InvertedHammer":
                    requestedItem = new InvertedHammer(_tickerData, this);
                    Simulator.DataOutput.SaveIndicator((Indicator)requestedItem);
                    break;

                case "KeltnerChannel":
                    requestedItem = new KeltnerChannel(_tickerData, this);
                    Simulator.DataOutput.SaveIndicator((Indicator)requestedItem);
                    break;

                case "Macd":
                    requestedItem = new Macd(_tickerData, this);
                    Simulator.DataOutput.SaveIndicator((Indicator)requestedItem);
                    break;

                case "Momentum14":
                    requestedItem = new Momentum(_tickerData, this, 14);
                    Simulator.DataOutput.SaveIndicator((Indicator)requestedItem);
                    break;

                case "MorningStar":
                    requestedItem = new MorningStar(_tickerData, this);
                    Simulator.DataOutput.SaveIndicator((Indicator)requestedItem);
                    break;

                case "PiercingLine":
                    requestedItem = new PiercingLine(_tickerData, this);
                    Simulator.DataOutput.SaveIndicator((Indicator)requestedItem);
                    break;

                case "PriceOscillator":
                    requestedItem = new PriceOscillator(_tickerData, this);
                    Simulator.DataOutput.SaveIndicator((Indicator)requestedItem);
                    break;

                case "RisingThreeMethods":
                    requestedItem = new RisingThreeMethods(_tickerData, this);
                    Simulator.DataOutput.SaveIndicator((Indicator)requestedItem);
                    break;

                case "Rsi":
                    requestedItem = new Rsi(_tickerData, this, runnableParams);
                    Simulator.DataOutput.SaveIndicator((Indicator)requestedItem);
                    break;

                case "Rsi3m3":
                    requestedItem = new Rsi3m3(_tickerData, this);
                    Simulator.DataOutput.SaveIndicator((Indicator)requestedItem);
                    break;

                case "ShootingStar":
                    requestedItem = new ShootingStar(_tickerData, this);
                    Simulator.DataOutput.SaveIndicator((Indicator)requestedItem);
                    break;

                case "Sma":
                    requestedItem = new Sma(_tickerData, this);
                    Simulator.DataOutput.SaveIndicator((Indicator)requestedItem);
                    break;

                case "StickSandwitch":
                    requestedItem = new StickSandwitch(_tickerData, this);
                    Simulator.DataOutput.SaveIndicator((Indicator)requestedItem);
                    break;

                case "StochasticsFast":
                    requestedItem = new StochasticsFast(_tickerData, this);
                    Simulator.DataOutput.SaveIndicator((Indicator)requestedItem);
                    break;

                case "Stochastics":
                    requestedItem = new Stochastics(_tickerData, this);
                    Simulator.DataOutput.SaveIndicator((Indicator)requestedItem);
                    break;

                case "StochRsi":
                    requestedItem = new StochRsi(_tickerData, this);
                    Simulator.DataOutput.SaveIndicator((Indicator)requestedItem);
                    break;

                case "Trend":
                    requestedItem = new Trend(_tickerData, this);
                    Simulator.DataOutput.SaveIndicator((Indicator)requestedItem);
                    break;

                case "ThreeBlackCrows":
                    requestedItem = new ThreeBlackCrows(_tickerData, this);
                    Simulator.DataOutput.SaveIndicator((Indicator)requestedItem);
                    break;

                case "ThreeWhiteSoldiers":
                    requestedItem = new ThreeWhiteSoldiers(_tickerData, this);
                    Simulator.DataOutput.SaveIndicator((Indicator)requestedItem);
                    break;

                case "Trix":
                    requestedItem = new Trix(_tickerData, this);
                    Simulator.DataOutput.SaveIndicator((Indicator)requestedItem);
                    break;

                case "UpsideGapTwoCrows":
                    requestedItem = new UpsideGapTwoCrows(_tickerData, this);
                    Simulator.DataOutput.SaveIndicator((Indicator)requestedItem);
                    break;

                case "UpsideTasukiGap":
                    requestedItem = new UpsideTasukiGap(_tickerData, this);
                    Simulator.DataOutput.SaveIndicator((Indicator)requestedItem);
                    break;

                case "WilliamsR":
                    requestedItem = new WilliamsR(_tickerData, this);
                    Simulator.DataOutput.SaveIndicator((Indicator)requestedItem);
                    break;

                case "Dmi":
                    requestedItem = new Dmi(_tickerData, this);
                    Simulator.DataOutput.SaveIndicator((Indicator)requestedItem);
                    break;

                case "DtOscillator":
                    requestedItem = new DtOscillator(_tickerData, this, runnableParams);
                    Simulator.DataOutput.SaveIndicator((Indicator)requestedItem);
                    break;

                case "FibonacciZones":
                    requestedItem = new FibonacciZones(_tickerData, this);
                    Simulator.DataOutput.SaveIndicator((Indicator)requestedItem);
                    break;

                case "ElliotWaves":
                    requestedItem = new ElliotWaves(_tickerData, this);
                    Simulator.DataOutput.SaveIndicator((Indicator)requestedItem);
                    break;

                case "ZigZag":
                    requestedItem = new ZigZag(_tickerData, this, runnableParams);
                    Simulator.DataOutput.SaveIndicator((Indicator)requestedItem);
                    break;

                ///////////////////////////// Strategies ////////////////////////////

                case "BestOfRootStrategies":
                    requestedItem = new BestOfRootStrategies(_tickerData, this);
                    break;

                case "ComboStrategy":
                    requestedItem = new ComboStrategy(_tickerData, this);
                    break;

                case "BressertApproach":
                    requestedItem = new BressertApproach(_tickerData, this);
                    break;

                case "BressertComboStrategy":
                    requestedItem = new BressertComboStrategy(_tickerData, this);
                    break;

                case "FibonacciRsi3m3":
                    requestedItem = new FibonacciRsi3m3(_tickerData, this);
                    break;

                case "FibonacciDtOscillator":
                    requestedItem = new FibonacciDtOscillator(_tickerData, this);
                    break;

                case "ElliotWavesStrategy":
                    requestedItem = new ElliotWavesStrategy(_tickerData, this);
                    break;

                //
                // Bull
                //

                case "BullBollingerExtended":
                    requestedItem = new BullBollingerExtended(_tickerData, this);
                    break;

                case "BullBeltHoldFound":
                    requestedItem = new BullBeltHoldFound(_tickerData, this);
                    break;

                case "BullEngulfingFound":
                    requestedItem = new BullEngulfingFound(_tickerData, this);
                    break;

                case "BullHaramiFound":
                    requestedItem = new BullHaramiFound(_tickerData, this);
                    break;

                case "BullHaramiCrossFound":
                    requestedItem = new BullHaramiCrossFound(_tickerData, this);
                    break;

                case "BullCciCrossover":
                    requestedItem = new BullCciCrossover(_tickerData, this);
                    break;

                case "BullEaseOfMovement":
                    requestedItem = new BullEaseOfMovement(_tickerData, this);
                    break;

                case "BullDojiFound":
                    requestedItem = new BullDojiFound(_tickerData, this);
                    break;

                case "HammerFound":
                    requestedItem = new HammerFound(_tickerData, this);
                    break;

                case "BullKeltnerExtended":
                    requestedItem = new BullKeltnerExtended(_tickerData, this);
                    break;

                case "BullMacdCrossover":
                    requestedItem = new BullMacdCrossover(_tickerData, this);
                    break;

                case "BullMacdMomentum":
                    requestedItem = new BullMacdMomentum(_tickerData, this);
                    break;

                case "BullMomentumCrossover":
                    requestedItem = new BullMomentumCrossover(_tickerData, this);
                    break;

                case "MorningStarFound":
                    requestedItem = new MorningStarFound(_tickerData, this);
                    break;

                case "PiercingLineFound":
                    requestedItem = new PiercingLineFound(_tickerData, this);
                    break;

                case "RisingThreeMethodsFound":
                    requestedItem = new RisingThreeMethodsFound(_tickerData, this);
                    break;

                case "BullRsiCrossover":
                    requestedItem = new BullRsiCrossover(_tickerData, this);
                    break;

                case "BullSmaCrossover":
                    requestedItem = new BullSmaCrossover(_tickerData, this);
                    break;

                case "StickSandwitchFound":
                    requestedItem = new StickSandwitchFound(_tickerData, this);
                    break;

                case "BullStochasticsFastCrossover":
                    requestedItem = new BullStochasticsFastCrossover(_tickerData, this);
                    break;

                case "BullStochasticsCrossover":
                    requestedItem = new BullStochasticsCrossover(_tickerData, this);
                    break;

                case "BullStochRsiCrossover":
                    requestedItem = new BullStochRsiCrossover(_tickerData, this);
                    break;

                case "ThreeWhiteSoldiersFound":
                    requestedItem = new ThreeWhiteSoldiersFound(_tickerData, this);
                    break;

                case "BullTrendStart":
                    requestedItem = new BullTrendStart(_tickerData, this);
                    break;

                case "BullTrixSignalCrossover":
                    requestedItem = new BullTrixSignalCrossover(_tickerData, this);
                    break;

                case "BullTrixZeroCrossover":
                    requestedItem = new BullTrixZeroCrossover(_tickerData, this);
                    break;

                case "UpsideTasukiGapFound":
                    requestedItem = new UpsideTasukiGapFound(_tickerData, this);
                    break;

                case "BullWilliamsRCrossover":
                    requestedItem = new BullWilliamsRCrossover(_tickerData, this);
                    break;

                case "BullPriceOscillator":
                    requestedItem = new BullPriceOscillator(_tickerData, this);
                    break;

                case "BullDmi":
                    requestedItem = new BullDmi(_tickerData, this);
                    break;

                case "BullBressertDss":
                    requestedItem = new BullBressertDss(_tickerData, this, runnableParams);
                    break;

                case "BullRsi3m3":
                    requestedItem = new BullRsi3m3(_tickerData, this);
                    break;

                case "BullDtOscillator":
                    requestedItem = new BullDtOscillator(_tickerData, this);
                    break;

                //////////// Predicted bull strategies ///////////

                case "BullCciCrossoverPredicted":
                    requestedItem = new BullCciCrossoverPredicted(_tickerData, this);
                    break;

                case "BullDmiPredicted":
                    requestedItem = new BullDmiPredicted(_tickerData, this);
                    break;

                case "BullEaseOfMovementPredicted":
                    requestedItem = new BullEaseOfMovementPredicted(_tickerData, this);
                    break;

                case "BullKeltnerExtendedPredicted":
                    requestedItem = new BullKeltnerExtendedPredicted(_tickerData, this);
                    break;

                case "BullMacdCrossoverPredicted":
                    requestedItem = new BullMacdCrossoverPredicted(_tickerData, this);
                    break;

                case "BullMomentumCrossoverPredicted":
                    requestedItem = new BullMomentumCrossoverPredicted(_tickerData, this);
                    break;

                case "BullPriceOscillatorPredicted":
                    requestedItem = new BullPriceOscillatorPredicted(_tickerData, this);
                    break;

                case "BullRsiCrossoverPredicted":
                    requestedItem = new BullRsiCrossoverPredicted(_tickerData, this);
                    break;

                case "BullSmaCrossoverPredicted":
                    requestedItem = new BullSmaCrossoverPredicted(_tickerData, this);
                    break;

                case "BullStochasticsCrossoverPredicted":
                    requestedItem = new BullStochasticsCrossoverPredicted(_tickerData, this);
                    break;

                case "BullStochasticsFastCrossoverPredicted":
                    requestedItem = new BullStochasticsFastCrossoverPredicted(_tickerData, this);
                    break;

                case "BullStochRsiCrossoverPredicted":
                    requestedItem = new BullStochRsiCrossoverPredicted(_tickerData, this);
                    break;

                case "BullTrixSignalCrossoverPredicted":
                    requestedItem = new BullTrixSignalCrossoverPredicted(_tickerData, this);
                    break;

                case "BullTrixZeroCrossoverPredicted":
                    requestedItem = new BullTrixZeroCrossoverPredicted(_tickerData, this);
                    break;

                case "BullWilliamsRCrossoverPredicted":
                    requestedItem = new BullWilliamsRCrossoverPredicted(_tickerData, this);
                    break;


                //
                // Bear
                //

                case "BearBollingerExtended":
                    requestedItem = new BearBollingerExtended(_tickerData, this);
                    break;

                case "BearCciCrossover":
                    requestedItem = new BearCciCrossover(_tickerData, this);
                    break;

                case "BearEaseOfMovement":
                    requestedItem = new BearEaseOfMovement(_tickerData, this);
                    break;

                case "BearDojiFound":
                    requestedItem = new BearDojiFound(_tickerData, this);
                    break;

                case "BearKeltnerExtended":
                    requestedItem = new BearKeltnerExtended(_tickerData, this);
                    break;

                case "BearMacdMomentum":
                    requestedItem = new BearMacdMomentum(_tickerData, this);
                    break;

                case "BearMacdCrossover":
                    requestedItem = new BearMacdCrossover(_tickerData, this);
                    break;

                case "BearMomentumCrossover":
                    requestedItem = new BearMomentumCrossover(_tickerData, this);
                    break;

                case "BearRsiCrossover":
                    requestedItem = new BearRsiCrossover(_tickerData, this);
                    break;

                case "BearSmaCrossover":
                    requestedItem = new BearSmaCrossover(_tickerData, this);
                    break;

                case "BearStochasticsCrossover":
                    requestedItem = new BearStochasticsCrossover(_tickerData, this);
                    break;

                case "BearStochasticsFastCrossover":
                    requestedItem = new BearStochasticsFastCrossover(_tickerData, this);
                    break;

                case "BearStochRsiCrossover":
                    requestedItem = new BearStochRsiCrossover(_tickerData, this);
                    break;

                case "BearTrendStart":
                    requestedItem = new BearTrendStart(_tickerData, this);
                    break;

                case "BearTrixSignalCrossover":
                    requestedItem = new BearTrixSignalCrossover(_tickerData, this);
                    break;

                case "BearTrixZeroCrossover":
                    requestedItem = new BearTrixZeroCrossover(_tickerData, this);
                    break;

                case "BearWilliamsRCrossover":
                    requestedItem = new BearWilliamsRCrossover(_tickerData, this);
                    break;

                case "BearBeltHoldFound":
                    requestedItem = new BearBeltHoldFound(_tickerData, this);
                    break;

                case "BearEngulfingFound":
                    requestedItem = new BearEngulfingFound(_tickerData, this);
                    break;

                case "BearHaramiFound":
                    requestedItem = new BearHaramiFound(_tickerData, this);
                    break;

                case "BearHaramiCrossFound":
                    requestedItem = new BearHaramiCrossFound(_tickerData, this);
                    break;

                case "DarkCloudCoverFound":
                    requestedItem = new DarkCloudCoverFound(_tickerData, this);
                    break;

                case "DownsideTasukiGapFound":
                    requestedItem = new DownsideTasukiGapFound(_tickerData, this);
                    break;

                case "EveningStarFound":
                    requestedItem = new EveningStarFound(_tickerData, this);
                    break;

                case "FallingThreeMethodsFound":
                    requestedItem = new FallingThreeMethodsFound(_tickerData, this);
                    break;

                case "HangingManFound":
                    requestedItem = new HangingManFound(_tickerData, this);
                    break;

                case "InvertedHammerFound":
                    requestedItem = new InvertedHammerFound(_tickerData, this);
                    break;

                case "ShootingStarFound":
                    requestedItem = new ShootingStarFound(_tickerData, this);
                    break;

                case "ThreeBlackCrowsFound":
                    requestedItem = new ThreeBlackCrowsFound(_tickerData, this);
                    break;

                case "UpsideGapTwoCrowsFound":
                    requestedItem = new UpsideGapTwoCrowsFound(_tickerData, this);
                    break;

                case "BearPriceOscillator":
                    requestedItem = new BearPriceOscillator(_tickerData, this);
                    break;

                case "BearDmi":
                    requestedItem = new BearDmi(_tickerData, this);
                    break;

                case "BearBressertDss":
                    requestedItem = new BearBressertDss(_tickerData, this, runnableParams);
                    break;

                case "BearRsi3m3":
                    requestedItem = new BearRsi3m3(_tickerData, this);
                    break;

                case "BearDtOscillator":
                    requestedItem = new BearDtOscillator(_tickerData, this);
                    break;

                //////////// Predicted bear strategies ///////////

                case "BearCciCrossoverPredicted":
                    requestedItem = new BearCciCrossoverPredicted(_tickerData, this);
                    break;

                case "BearDmiPredicted":
                    requestedItem = new BearDmiPredicted(_tickerData, this);
                    break;

                case "BearEaseOfMovementPredicted":
                    requestedItem = new BearEaseOfMovementPredicted(_tickerData, this);
                    break;

                case "BearKeltnerExtendedPredicted":
                    requestedItem = new BearKeltnerExtendedPredicted(_tickerData, this);
                    break;

                case "BearMacdCrossoverPredicted":
                    requestedItem = new BearMacdCrossoverPredicted(_tickerData, this);
                    break;

                case "BearMomentumCrossoverPredicted":
                    requestedItem = new BearMomentumCrossoverPredicted(_tickerData, this);
                    break;

                case "BearPriceOscillatorPredicted":
                    requestedItem = new BearPriceOscillatorPredicted(_tickerData, this);
                    break;

                case "BearRsiCrossoverPredicted":
                    requestedItem = new BearRsiCrossoverPredicted(_tickerData, this);
                    break;

                case "BearSmaCrossoverPredicted":
                    requestedItem = new BearSmaCrossoverPredicted(_tickerData, this);
                    break;

                case "BearStochasticsCrossoverPredicted":
                    requestedItem = new BearStochasticsCrossoverPredicted(_tickerData, this);
                    break;

                case "BearStochasticsFastCrossoverPredicted":
                    requestedItem = new BearStochasticsFastCrossoverPredicted(_tickerData, this);
                    break;

                case "BearStochRsiCrossoverPredicted":
                    requestedItem = new BearStochRsiCrossoverPredicted(_tickerData, this);
                    break;

                case "BearTrixSignalCrossoverPredicted":
                    requestedItem = new BearTrixSignalCrossoverPredicted(_tickerData, this);
                    break;

                case "BearTrixZeroCrossoverPredicted":
                    requestedItem = new BearTrixZeroCrossoverPredicted(_tickerData, this);
                    break;

                case "BearWilliamsRCrossoverPredicted":
                    requestedItem = new BearWilliamsRCrossoverPredicted(_tickerData, this);
                    break;

                default:
                    throw new Exception(nameAndParameters + " doesn't exist");
                }

                _createdItems[key] = requestedItem;
            }

            return(requestedItem);
        }
Esempio n. 24
0
        public FastDelta(string name, StartProgram startProgram) : base(name, startProgram)
        {
            TabCreate(BotTabType.Simple);
            TabCreate(BotTabType.Simple);
            _tab      = TabsSimple[0];
            _tab_Slow = TabsSimple[1];

            _tab.CandleFinishedEvent        += _tab_CandleFinishedEvent;
            _tab.PositionOpeningSuccesEvent += _tab_PositionOpeningSuccesEvent;
            _tab.PositionClosingSuccesEvent += _tab_PositionClosingSuccesEvent;

            _tab_Slow.CandleFinishedEvent += _tab_Slow_CandleFinishedEvent;

            this.ParametrsChangeByUser += FastDelta_ParametrsChangeByUser;
            Regime           = CreateParameter("Regime", "Off", new[] { "Off", "On" });
            Slippage         = CreateParameter("Slippage", 0, 0, 20, 1);
            TrailStop        = CreateParameter("Trail Stop", 0.1m, 0m, 5, 0.1m);
            MinProfitTraling = CreateParameter("Минимальный профит для трэйлинга", 0.2m, 0.2m, 2, 0.1m);
            leverage         = CreateParameter("Маржинальное плечо", 0.1m, 0.1m, 10, 0.1m);
            MaxStop          = CreateParameter("MaxStop", 1, 1, 10, 0.1m);
            isContract       = CreateParameter("Торгуем контрактами", false);
            DepoCurrency     = CreateParameter("DepoCurrency", "Currency2", new[] { "Currency1", "Currency2" });

            TimeFastLenth = CreateParameter("MA Time fast", 10, 5, 200, 5);
            TimeSlowLenth = CreateParameter("MA Time slow", 10, 5, 200, 5);

            VolFastLenth = CreateParameter("MA Vol fast", 10, 5, 200, 5);
            VolSlowLenth = CreateParameter("MA Vol slow", 10, 5, 200, 5);

            TralingMaLenth = CreateParameter("MA Traling", 10, 5, 200, 5);

            maLenth    = CreateParameter("Период скользящей по объему", 24, 24, 48, 1);
            DeltaSizeK = CreateParameter("Коэфт для размера дельты", 6, 1, 40, 1);

            TimeMaFast = new MovingAverage(name + "TimeMaFast", false)
            {
                ColorBase = System.Drawing.Color.Yellow, TypePointsToSearch = PriceTypePoints.Time
            };
            TimeMaFast.Lenght = TimeFastLenth.ValueInt;
            TimeMaFast        = (MovingAverage)_tab.CreateCandleIndicator(TimeMaFast, "New1");
            TimeMaFast.Save();

            TimeMaSlow = new MovingAverage(name + "TimeMaSlow", false)
            {
                ColorBase = System.Drawing.Color.Green, TypePointsToSearch = PriceTypePoints.Time
            };
            TimeMaSlow        = (MovingAverage)_tab.CreateCandleIndicator(TimeMaSlow, "New1");
            TimeMaSlow.Lenght = TimeSlowLenth.ValueInt;
            TimeMaSlow.Save();

            VolMaFast = new MovingAverage(name + "VolMaFast", false)
            {
                ColorBase = System.Drawing.Color.Yellow, Lenght = 10, TypePointsToSearch = PriceTypePoints.Volume, TypeCalculationAverage = MovingAverageTypeCalculation.Exponential
            };
            VolMaFast        = (MovingAverage)_tab.CreateCandleIndicator(VolMaFast, "New2");
            VolMaFast.Lenght = VolFastLenth.ValueInt;
            VolMaFast.Save();

            VolMaSlow = new MovingAverage(name + "VolMaSlow", false)
            {
                ColorBase = System.Drawing.Color.Green, TypePointsToSearch = PriceTypePoints.Volume, TypeCalculationAverage = MovingAverageTypeCalculation.Exponential
            };
            VolMaSlow        = (MovingAverage)_tab.CreateCandleIndicator(VolMaSlow, "New2");
            VolMaSlow.Lenght = VolSlowLenth.ValueInt;
            VolMaSlow.Save();

            TralingStopMa = new MovingAverage(name + "TralingStopMa", false)
            {
                ColorBase = System.Drawing.Color.Blue, TypePointsToSearch = PriceTypePoints.Close
            };
            TralingStopMa        = (MovingAverage)_tab.CreateCandleIndicator(TralingStopMa, "Prime");
            TralingStopMa.Lenght = TralingMaLenth.ValueInt;
            TralingStopMa.Save();

            maVolume        = new MovingAverage(name + "_maVolume", false);
            maVolume        = (MovingAverage)_tab_Slow.CreateCandleIndicator(maVolume, "New1");
            maVolume.Lenght = maLenth.ValueInt;
            maVolume.TypeCalculationAverage = MovingAverageTypeCalculation.Exponential;
            maVolume.TypePointsToSearch     = PriceTypePoints.Volume;
            maVolume.Save();

            delta = new Delta(name + "delta", false);
            delta = (Delta)_tab.CreateCandleIndicator(delta, "New3");
            delta.Save();

            rsi        = new Rsi(name + "Rsi", false);
            rsi        = (Rsi)_tab.CreateCandleIndicator(rsi, "New4");
            rsi.Lenght = 21;
            rsi.Save();


            /*
             * _envelop = new Envelops(name + "Envelop", false);
             * _envelop = (Envelops)_tab.CreateCandleIndicator(_envelop, "Prime");
             * _envelop.MovingAverage.Lenght = 21;
             * _envelop.Deviation = 0.3m;
             * _envelop.Save();
             */
            CanTrade = false;
        }
Esempio n. 25
0
 public Rsi Copy(ISerializationManager serializationManager, Rsi source, Rsi target, bool skipHook,
                 ISerializationContext?context = null)
 {
     return(new(source.RsiPath, source.RsiState));
 }
        internal static TradeIdeasGeneratorArgument Create(List <Signal> signals, HistoricalData historicalData)
        {
            TradeIdeasGeneratorArgument result = new TradeIdeasGeneratorArgument();

            SmaVol smaVol20 = new SmaVol(20);
            Sma    sma50    = new Sma(50);
            Rsi    stRsi5   = new Rsi(5);
            Rsi    rsi14    = new Rsi(14);
            Rsi    ltrsi50  = new Rsi(50);
            Cci    stCci5   = new Cci(5);
            Cci    cci14    = new Cci(14);
            Cci    ltCci50  = new Cci(50);
            Stoch  stoch14  = new Stoch(14, 14, 3);
            WillR  willr14  = new WillR(14);
            Mfi    mfi14    = new Mfi(14);
            Adx    adx20    = new Adx(20);
            Atr    atr20    = new Atr(20);

            //Assuming that signals are sorted by dates descending and all signals are present. otherwize an exception will be thrown during fetching signals (First())

            #region Indicators

            result.Rsi14           = GetValue(signals.LatestForIndicator(rsi14));
            result.YesterdayRsi14  = GetValue(signals.PreviousForIndicator(rsi14, 1));
            result.StRsi5          = GetValue(signals.LatestForIndicator(stRsi5));
            result.YesterdayStRsi5 = GetValue(signals.PreviousForIndicator(stRsi5, 1));
            result.LtRsi50         = GetValue(signals.LatestForIndicator(ltrsi50));

            result.Cci14           = GetValue(signals.LatestForIndicator(cci14));
            result.YesterdayCci14  = GetValue(signals.PreviousForIndicator(cci14, 1));
            result.StCci5          = GetValue(signals.LatestForIndicator(stCci5));
            result.YesterdayStCci5 = GetValue(signals.PreviousForIndicator(stCci5, 1));
            result.LtCci50         = GetValue(signals.LatestForIndicator(ltCci50));

            result.Stoch14          = GetValue(signals.LatestForIndicator(stoch14));
            result.YesterdayStoch14 = GetValue(signals.PreviousForIndicator(stoch14, 1));

            result.WillR14          = GetValue(signals.LatestForIndicator(willr14));
            result.YesterdayWillR14 = GetValue(signals.PreviousForIndicator(willr14, 1));

            result.Mfi14          = GetValue(signals.LatestForIndicator(mfi14));
            result.YesterdayMfi14 = GetValue(signals.PreviousForIndicator(mfi14, 1));

            result.SmaVol20 = GetValue(signals.LatestForIndicator(smaVol20));
            result.Sma50    = GetValue(signals.LatestForIndicator(sma50));

            result.Adx20 = GetValue(signals.LatestForIndicator(adx20));

            result.Atr20 = GetValue(signals.LatestForIndicator(atr20));

            //Long Term Sentiment(6 months)
            Signal syrahSentiment = signals.LatestForIndicator(LongTermSentimentForDependencies);
            int?   sentimentValue = syrahSentiment == null
                ? null
                : (int?)syrahSentiment.Value;
            result.LongTermSentiment = SyrahSentiment.MakeInterpretationInTermsOfSentiment(sentimentValue);

            //Short Term Sentiment(1 month)
            syrahSentiment = signals.LatestForIndicator(ShortTermSentimentForDependencies);
            sentimentValue = syrahSentiment == null
                ? null
                : (int?)syrahSentiment.Value;
            result.ShortTermSentiment = SyrahSentiment.MakeInterpretationInTermsOfSentiment(sentimentValue);

            #endregion

            //if (expandedQuote == null)
            //{
            //    result.LastPrice = historicalData.Close[historicalData.Count - 1];
            //}
            //else
            //{
            //    result.LastPrice = expandedQuote.Last;
            //    result.HasOption = expandedQuote.HasOption;
            //}

            result.RangeStdDev = historicalData.GetPriceRangeStdDevFor6Months();

            //result.NearestSupport = supportAndResistance.GetClosestSupport(expandedQuote.Last);
            //result.NearestResistance = supportAndResistance.GetClosestResistance(expandedQuote.Last);

            //TODO: check
            int yesterdayIndex = historicalData.High.Length - 2;
            result.YesterdayHigh = historicalData.High[yesterdayIndex];
            result.YesterdayLow  = historicalData.Low[yesterdayIndex];

            return(result);
        }
Esempio n. 27
0
        public static void CalculateRsiOriginal()
        {
            var data = Rsi.CalculateRsi(HistoricalData, 14, CancellationToken.None);

            Debug.WriteLine(data.ToList().Count);
        }
Esempio n. 28
0
        public static void CalculateRsiFixed()
        {
            var dataFromFixed = Rsi.CalculateRsiFixed(HistoricalData, 14, CancellationToken.None);

            Debug.WriteLine(dataFromFixed.ToList().Count);
        }
Esempio n. 29
0
        // Example:
        //
        // rax=000007f7d5e4e000 rbx=0000000000000000 rcx=0000000000000000
        // rdx=000007fcac628f98 rsi=0000000000000000 rdi=0000000000000000
        // rip=000007fcac571e00 rsp=0000000b9879fb78 rbp=0000000000000000
        //  r8=0000000000000000  r9=000007fcac628f98 r10=0000000000000000
        // r11=0000000000000000 r12=0000000000000000 r13=0000000000000000
        // r14=0000000000000000 r15=0000000000000000
        // iopl=0         nv up ei pl zr na po nc
        // cs=0033  ss=002b  ds=002b  es=002b  fs=0053  gs=002b             efl=00000246
        //   ntdll!DbgBreakPoint:
        //
        public override ColorString ToColorString()
        {
            if (null == m_colorString)
            {
                ConsoleColor color;
                ColorString  cs = new ColorString("rax=");
                color = GetColorForDiffAgainstBaseline("rax");
                cs.Append(Rax.GetColorizedValueString(color));
                cs.Append(" rbx=");
                color = GetColorForDiffAgainstBaseline("rbx");
                cs.Append(Rbx.GetColorizedValueString(color));
                cs.Append(" rcx=");
                color = GetColorForDiffAgainstBaseline("rcx");
                cs.Append(Rcx.GetColorizedValueString(color));
                cs.AppendLine();

                cs.Append("rdx=");
                color = GetColorForDiffAgainstBaseline("rdx");
                cs.Append(Rdx.GetColorizedValueString(color));
                cs.Append(" rsi=");
                color = GetColorForDiffAgainstBaseline("rsi");
                cs.Append(Rsi.GetColorizedValueString(color));
                cs.Append(" rdi=");
                color = GetColorForDiffAgainstBaseline("rdi");
                cs.Append(Rdi.GetColorizedValueString(color));
                cs.AppendLine();

                cs.Append("rip=");
                color = GetColorForDiffAgainstBaseline("rip");
                cs.Append(Rip.GetColorizedValueString(color));
                cs.Append(" rsp=");
                color = GetColorForDiffAgainstBaseline("rsp");
                cs.Append(Rsp.GetColorizedValueString(color));
                cs.Append(" rbp=");
                color = GetColorForDiffAgainstBaseline("rbp");
                cs.Append(Rbp.GetColorizedValueString(color));
                cs.AppendLine();

                cs.Append(" r8=");
                color = GetColorForDiffAgainstBaseline("r8");
                cs.Append(R8.GetColorizedValueString(color));
                cs.Append("  r9=");
                color = GetColorForDiffAgainstBaseline("r9");
                cs.Append(R9.GetColorizedValueString(color));
                cs.Append(" r10=");
                color = GetColorForDiffAgainstBaseline("r10");
                cs.Append(R10.GetColorizedValueString(color));
                cs.AppendLine();

                cs.Append("r11=");
                color = GetColorForDiffAgainstBaseline("r11");
                cs.Append(R11.GetColorizedValueString(color));
                cs.Append(" r12=");
                color = GetColorForDiffAgainstBaseline("r12");
                cs.Append(R12.GetColorizedValueString(color));
                cs.Append(" r13=");
                color = GetColorForDiffAgainstBaseline("r13");
                cs.Append(R13.GetColorizedValueString(color));
                cs.AppendLine();

                cs.Append("r14=");
                color = GetColorForDiffAgainstBaseline("r14");
                cs.Append(R14.GetColorizedValueString(color));
                cs.Append(" r15=");
                color = GetColorForDiffAgainstBaseline("r15");
                cs.Append(R15.GetColorizedValueString(color));
                cs.AppendLine();

                cs.Append("iopl=");
                color = GetColorForDiffAgainstBaseline("iopl");
                cs.AppendPushPopFg(color, ((ulong)Iopl.Value).ToString("x"));
                // TODO:
                cs.AppendLine("   TBD: flags");

                cs.Append("cs=");
                color = GetColorForDiffAgainstBaseline("cs");
                cs.AppendPushPopFg(color, ((ushort)Cs.Value).ToString("x4"));
                cs.Append("  ss=");
                color = GetColorForDiffAgainstBaseline("ss");
                cs.AppendPushPopFg(color, ((ushort)Ss.Value).ToString("x4"));
                cs.Append("  ds=");
                color = GetColorForDiffAgainstBaseline("ds");
                cs.AppendPushPopFg(color, ((ushort)Ds.Value).ToString("x4"));
                cs.Append("  es=");
                color = GetColorForDiffAgainstBaseline("es");
                cs.AppendPushPopFg(color, ((ushort)Es.Value).ToString("x4"));
                cs.Append("  fs=");
                color = GetColorForDiffAgainstBaseline("fs");
                cs.AppendPushPopFg(color, ((ushort)Fs.Value).ToString("x4"));
                cs.Append("  gs=");
                color = GetColorForDiffAgainstBaseline("gs");
                cs.AppendPushPopFg(color, ((ushort)Gs.Value).ToString("x4"));
                cs.Append("             efl=");
                color = GetColorForDiffAgainstBaseline("efl");
                cs.Append(Efl.GetColorizedValueString(color));
                cs.AppendLine();

                cs.Append(DbgProvider.ColorizeSymbol(StackFrame.SymbolName));
                if (0 != StackFrame.Displacement)
                {
                    cs.Append("+0x");
                    cs.Append(StackFrame.Displacement.ToString("x"));
                }
                cs.AppendLine(":");
                cs.Append(Disasm(Rip.ValueAsPointer));

                m_colorString = cs;
            }
            return(m_colorString);
        } // end ToString()