From 5603353cc55115fba73d518fcf97c70a29930a64 Mon Sep 17 00:00:00 2001 From: moshferatu Date: Sat, 20 Apr 2024 07:05:59 -0700 Subject: [PATCH] Add IQFeed host and port configuration settings --- indicators/MarketDepth.cs | 42 ++++++++++++++++++++++++--------------- 1 file changed, 26 insertions(+), 16 deletions(-) diff --git a/indicators/MarketDepth.cs b/indicators/MarketDepth.cs index 18d167f..6b81ccc 100644 --- a/indicators/MarketDepth.cs +++ b/indicators/MarketDepth.cs @@ -48,14 +48,14 @@ namespace NinjaTrader.NinjaScript.Indicators {"12", "Z"} }; - public static async Task StreamMarketDepth(Instrument instrument, int maxLevels) + public static async Task StreamMarketDepth(Instrument instrument, int maxLevels, string host, int port) { Asks.Clear(); Bids.Clear(); string symbol = GetIQFeedSymbol(instrument); - using (TcpClient client = new TcpClient("127.0.0.1", 9200)) + using (TcpClient client = new TcpClient(host, port)) using (NetworkStream stream = client.GetStream()) { StringBuilder data = new StringBuilder(); @@ -179,13 +179,15 @@ namespace NinjaTrader.NinjaScript.Indicators IsSuspendedWhileInactive = false; MaxLevels = 0; MaxWidth = 500; + Host = "127.0.0.1"; + Port = 9200; } else if (State == State.Configure) { } else if (State == State.DataLoaded) { - Task.Run(() => MarketDepthProcessor.StreamMarketDepth(Instrument, MaxLevels)); + Task.Run(() => MarketDepthProcessor.StreamMarketDepth(Instrument, MaxLevels, Host, Port)); } else if (State == State.Historical) { @@ -253,6 +255,14 @@ namespace NinjaTrader.NinjaScript.Indicators [Display(Name = "Max Width", Description = "The maximum width of the market depth levels in pixels", Order = 2, GroupName = "Market Depth")] public int MaxWidth { get; set; } + + [NinjaScriptProperty] + [Display(Name = "IQFeed Host", Description = "The host on which the IQFeed connection is running", Order = 3, GroupName = "Market Depth")] + public string Host { get; set; } + + [NinjaScriptProperty] + [Display(Name = "IQFeed Port", Description = "The port on which the IQFeed connection is listening", Order = 4, GroupName = "Market Depth")] + public int Port { get; set; } } } @@ -263,18 +273,18 @@ namespace NinjaTrader.NinjaScript.Indicators public partial class Indicator : NinjaTrader.Gui.NinjaScript.IndicatorRenderBase { private MarketDepth[] cacheMarketDepth; - public MarketDepth MarketDepth(int maxLevels, int maxWidth) + public MarketDepth MarketDepth(int maxLevels, int maxWidth, string host, int port) { - return MarketDepth(Input, maxLevels, maxWidth); + return MarketDepth(Input, maxLevels, maxWidth, host, port); } - public MarketDepth MarketDepth(ISeries input, int maxLevels, int maxWidth) + public MarketDepth MarketDepth(ISeries input, int maxLevels, int maxWidth, string host, int port) { if (cacheMarketDepth != null) for (int idx = 0; idx < cacheMarketDepth.Length; idx++) - if (cacheMarketDepth[idx] != null && cacheMarketDepth[idx].MaxLevels == maxLevels && cacheMarketDepth[idx].MaxWidth == maxWidth && cacheMarketDepth[idx].EqualsInput(input)) + if (cacheMarketDepth[idx] != null && cacheMarketDepth[idx].MaxLevels == maxLevels && cacheMarketDepth[idx].MaxWidth == maxWidth && cacheMarketDepth[idx].Host == host && cacheMarketDepth[idx].Port == port && cacheMarketDepth[idx].EqualsInput(input)) return cacheMarketDepth[idx]; - return CacheIndicator(new MarketDepth(){ MaxLevels = maxLevels, MaxWidth = maxWidth }, input, ref cacheMarketDepth); + return CacheIndicator(new MarketDepth(){ MaxLevels = maxLevels, MaxWidth = maxWidth, Host = host, Port = port }, input, ref cacheMarketDepth); } } } @@ -283,14 +293,14 @@ namespace NinjaTrader.NinjaScript.MarketAnalyzerColumns { public partial class MarketAnalyzerColumn : MarketAnalyzerColumnBase { - public Indicators.MarketDepth MarketDepth(int maxLevels, int maxWidth) + public Indicators.MarketDepth MarketDepth(int maxLevels, int maxWidth, string host, int port) { - return indicator.MarketDepth(Input, maxLevels, maxWidth); + return indicator.MarketDepth(Input, maxLevels, maxWidth, host, port); } - public Indicators.MarketDepth MarketDepth(ISeries input , int maxLevels, int maxWidth) + public Indicators.MarketDepth MarketDepth(ISeries input , int maxLevels, int maxWidth, string host, int port) { - return indicator.MarketDepth(input, maxLevels, maxWidth); + return indicator.MarketDepth(input, maxLevels, maxWidth, host, port); } } } @@ -299,14 +309,14 @@ namespace NinjaTrader.NinjaScript.Strategies { public partial class Strategy : NinjaTrader.Gui.NinjaScript.StrategyRenderBase { - public Indicators.MarketDepth MarketDepth(int maxLevels, int maxWidth) + public Indicators.MarketDepth MarketDepth(int maxLevels, int maxWidth, string host, int port) { - return indicator.MarketDepth(Input, maxLevels, maxWidth); + return indicator.MarketDepth(Input, maxLevels, maxWidth, host, port); } - public Indicators.MarketDepth MarketDepth(ISeries input , int maxLevels, int maxWidth) + public Indicators.MarketDepth MarketDepth(ISeries input , int maxLevels, int maxWidth, string host, int port) { - return indicator.MarketDepth(input, maxLevels, maxWidth); + return indicator.MarketDepth(input, maxLevels, maxWidth, host, port); } } }