/// <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); }