Esempio n. 1
0
 /// <summary>
 /// Initialize the risk check variables in the constructor.
 /// </summary>
 /// <param name="name"></param>
 /// <param name="keltnerTradingVariables"></param>
 public KeltnerStrategyRiskManager(string name, KeltnerTradingVariables keltnerTradingVariables)
     : base(name)
 {
     this.m_MaxNetPosition       = keltnerTradingVariables.MaxNetPosition;
     this.m_MaxTotalFills        = keltnerTradingVariables.MaxTotalFills;
     this.m_StopLossTrackingTime = keltnerTradingVariables.StopLossTimeTrack;
 }
        public override void AddSubElement(IStringifiable subElement)
        {
            base.AddSubElement(subElement);
            Type elementType = subElement.GetType();

            if (elementType == typeof(TradingNode))
            {
                TradingNode tradingNode = (TradingNode)subElement;
                if (tradingNode.TradeLevel == 0)
                {
                    switch (tradingNode.TradeSide)
                    {
                    case TradeSide.Unknown:
                        break;

                    case TradeSide.Buy:
                        m_EntryLongNode = tradingNode;
                        break;

                    case TradeSide.Sell:
                        m_EntryShortNode = tradingNode;
                        break;
                    }
                }
                if (tradingNode.TradeLevel == 1)
                {
                    switch (tradingNode.TradeSide)
                    {
                    case TradeSide.Unknown:
                        break;

                    case TradeSide.Buy:
                        m_FadeLongNode = tradingNode;
                        break;

                    case TradeSide.Sell:
                        m_FadeShortNode = tradingNode;
                        break;
                    }
                }
            }
            if (elementType == typeof(KeltnerTradingVariables))
            {
                KeltnerTradingVariables = (KeltnerTradingVariables)subElement;
                m_EntryQty      = KeltnerTradingVariables.EntryQty;
                m_FadeQty       = KeltnerTradingVariables.FadeQty;
                m_EntryWidth    = KeltnerTradingVariables.EntryWidth;
                m_FadeWidth     = KeltnerTradingVariables.FadeWidth;
                m_PukeWidth     = KeltnerTradingVariables.PukeWidth;
                m_EMALength     = KeltnerTradingVariables.EMALength;
                m_ATRLength     = KeltnerTradingVariables.ATRLength;
                m_MOMLength     = KeltnerTradingVariables.MomentumLength;
                m_MomentumEntry = KeltnerTradingVariables.MomentumEntryValue;
                m_MomentumPuke  = KeltnerTradingVariables.MomentumPukeValue;
            }
        }
 //
 //
 /// <summary>
 /// Constructor using default trading variables.
 /// </summary>
 /// <param name="name"></param>
 /// <param name="keltnerTradingVariables"></param>
 public KeltnerTraderLogicManager(string name, KeltnerTradingVariables keltnerTradingVariables)
     : base(name)
 {
     KeltnerTradingVariables = keltnerTradingVariables;
     m_EntryQty      = KeltnerTradingVariables.EntryQty;
     m_FadeQty       = KeltnerTradingVariables.FadeQty;
     m_EntryWidth    = KeltnerTradingVariables.EntryWidth;
     m_FadeWidth     = KeltnerTradingVariables.FadeWidth;
     m_PukeWidth     = KeltnerTradingVariables.PukeWidth;
     m_EMALength     = KeltnerTradingVariables.EMALength;
     m_ATRLength     = KeltnerTradingVariables.ATRLength;
     m_MOMLength     = KeltnerTradingVariables.MomentumLength;
     m_MomentumEntry = KeltnerTradingVariables.MomentumEntryValue;
     m_MomentumPuke  = KeltnerTradingVariables.MomentumPukeValue;
     m_NetPosition   = KeltnerTradingVariables.CurrentPos;
     SetDefaultWorkings();
 }
        /// <summary>
        /// keltner constructor.
        /// </summary>
        /// <param name="initialNextUpdateDateTime"></param>
        /// <param name="keltnerTradingVariables"></param>
        /// <param name="marketOpens"></param>
        /// <param name="marketCloses"></param>
        public KeltnerIndicatorManager(DateTime initialNextUpdateDateTime, KeltnerTradingVariables keltnerTradingVariables, List <DateTime> marketOpens, List <DateTime> marketCloses)
            : base()
        {
            // Load keltner trading parameters.
            m_KeltnerTradingVariables = keltnerTradingVariables;
            m_EMALength = keltnerTradingVariables.EMALength;
            m_ATRLength = keltnerTradingVariables.ATRLength;
            m_MOMLength = keltnerTradingVariables.MomentumLength;
            m_BarUpdateIntervalSecond = keltnerTradingVariables.BarIntervalInSeconds;

            // Create indicators.
            m_EMA = new EMA(m_EMASeriesID, m_EMASeriesName, m_EMALength);
            m_ATR = new ATR(m_ATRSeriesID, m_ATRSeriesName, m_ATRLength);
            m_MOM = new MOM(m_MOMSeriesID, m_MOMSeriesName, m_MOMLength);
            this.AddIndicator(m_EMA, m_EMASeriesName);
            this.AddIndicator(m_ATR, m_ATRSeriesName);
            this.AddIndicator(m_MOM, m_MOMSeriesName);

            // Initial setup for the trading indicators.
            initialNextUpdateDateTime = Functions.GetNextBarUpdateDateTime(initialNextUpdateDateTime, m_BarUpdateIntervalSecond);
            m_EMA.SetupIndicator(m_BarUpdateIntervalSecond, initialNextUpdateDateTime, marketOpens, marketCloses);
            m_ATR.SetupIndicator(m_BarUpdateIntervalSecond, initialNextUpdateDateTime, marketOpens, marketCloses);
            m_MOM.SetupIndicator(m_BarUpdateIntervalSecond, initialNextUpdateDateTime, marketOpens, marketCloses);
        }