/// <summary>
        /// CALLED WHEN THE ROBOT FIRST STARTS, IT IS ONLY CALLED ONCE.
        /// </summary>
        protected override void OnStart()
        {
            // TRADE MANAGER DECLERATION
            //tm = new TradeManager(this);

            // INSTANTIATE THE INDICATORS
            VindIchi   = Indicators.IchimokuKinkoHyo(9, KijunSen, 52);
            VchaikinMF = Indicators.ChaikinMoneyFlow(ChaikinPeriod);
            //  CUSTOM INDICATORS
            Vosma = Indicators.GetIndicator <OSMA>(OsMAShort, OsMALong, OsMASignal);
            Vatr  = Indicators.GetIndicator <AverageTrueRange>(ATRFast, ATRSlow);
        }
        public void TestDivByZero()
        {
            var cmf = new ChaikinMoneyFlow("CMF", 3);

            foreach (var data in TestHelper.GetDataStream(4))
            {
                // Should handle High = Low case by returning 0m.
                var tradeBar = new TradeBar
                {
                    Open   = data.Value,
                    Close  = data.Value,
                    High   = 1,
                    Low    = 1,
                    Volume = 1
                };
                cmf.Update(tradeBar);
            }
            Assert.AreEqual(cmf.Current.Value, 0m);
        }
        public void TestTradeBarsWithNoVolume()
        {
            // As volume is a multiplier in numerator, should return default value 0m.
            var cmf = new ChaikinMoneyFlow("CMF", 3);

            foreach (var data in TestHelper.GetDataStream(4))
            {
                var tradeBar = new TradeBar
                {
                    Open   = data.Value,
                    Close  = data.Value,
                    High   = data.Value,
                    Low    = data.Value,
                    Volume = 0
                };
                cmf.Update(tradeBar);
            }
            Assert.AreEqual(cmf.Current.Value, 0m);
        }