Advertisement
Not a member of Pastebin yet?
Sign Up,
it unlocks many cool features!
- #region Using declarations
- using System;
- using System.Collections.Generic;
- using System.ComponentModel;
- using System.ComponentModel.DataAnnotations;
- using System.Linq;
- using System.Text;
- using System.Threading.Tasks;
- using System.Windows;
- using System.Windows.Input;
- using System.Windows.Media;
- using System.Xml.Serialization;
- using NinjaTrader.Cbi;
- using NinjaTrader.Gui;
- using NinjaTrader.Gui.Chart;
- using NinjaTrader.Gui.SuperDom;
- using NinjaTrader.Gui.Tools;
- using NinjaTrader.Data;
- using NinjaTrader.NinjaScript;
- using NinjaTrader.Core.FloatingPoint;
- using NinjaTrader.NinjaScript.DrawingTools;
- using System.IO;
- #endregion
- //This namespace holds Indicators in this folder and is required. Do not change it.
- namespace NinjaTrader.NinjaScript.Indicators
- {
- public class JammyZones : Indicator
- {
- #region Variables
- private string instrumentName;
- private string basePath;
- private string instrumentZoneFilePath;
- private int currentDate;
- private int dateProcessed;
- // Zone current temp vars for assigning to series below
- private double currentZone1a;
- private double currentZone1b;
- private double currentZone2a;
- private double currentZone2b;
- private double currentZone3a;
- private double currentZone3b;
- private double currentZone4a;
- private double currentZone4b;
- private double currentZone5a;
- private double currentZone5b;
- private double currentZone6a;
- private double currentZone6b;
- private double currentZone7a;
- private double currentZone7b;
- private double currentZone8a;
- private double currentZone8b;
- private double currentZone9a;
- private double currentZone9b;
- private double currentZone10a;
- private double currentZone10b;
- private double currentZone11a;
- private double currentZone11b;
- private double currentZone12a;
- private double currentZone12b;
- // Zone series for Region plotting
- private Series<double> zone1a;
- private Series<double> zone1b;
- private Series<double> zone2a;
- private Series<double> zone2b;
- private Series<double> zone3a;
- private Series<double> zone3b;
- private Series<double> zone4a;
- private Series<double> zone4b;
- private Series<double> zone5a;
- private Series<double> zone5b;
- private Series<double> zone6a;
- private Series<double> zone6b;
- private Series<double> zone7a;
- private Series<double> zone7b;
- private Series<double> zone8a;
- private Series<double> zone8b;
- private Series<double> zone9a;
- private Series<double> zone9b;
- private Series<double> zone10a;
- private Series<double> zone10b;
- private Series<double> zone11a;
- private Series<double> zone11b;
- private Series<double> zone12a;
- private Series<double> zone12b;
- #endregion
- protected override void OnStateChange()
- {
- if (State == State.SetDefaults)
- {
- Description = @"More easily plot zones from text file";
- Name = " JammyZones";
- Calculate = Calculate.OnBarClose;
- IsOverlay = true;
- DisplayInDataBox = false;
- DrawOnPricePanel = true;
- DrawHorizontalGridLines = false;
- DrawVerticalGridLines = false;
- PaintPriceMarkers = true;
- ScaleJustification = NinjaTrader.Gui.Chart.ScaleJustification.Right;
- //Disable this property if your indicator requires custom values that cumulate with each new market data event.
- //See Help Guide for additional information.
- IsSuspendedWhileInactive = true;
- basePath = Core.Globals.UserDataDir.ToString() + "zones\\";
- }
- else if (State == State.Configure)
- {
- }
- else if (State == State.DataLoaded)
- {
- instrumentName = Instrument.FullName.Substring(0, 2);
- zone1a = new Series<double> (this, MaximumBarsLookBack.Infinite);
- zone1b = new Series<double> (this, MaximumBarsLookBack.Infinite);
- zone2a = new Series<double> (this, MaximumBarsLookBack.Infinite);
- zone2b = new Series<double> (this, MaximumBarsLookBack.Infinite);
- zone3a = new Series<double> (this, MaximumBarsLookBack.Infinite);
- zone3b = new Series<double> (this, MaximumBarsLookBack.Infinite);
- zone4a = new Series<double> (this, MaximumBarsLookBack.Infinite);
- zone4b = new Series<double> (this, MaximumBarsLookBack.Infinite);
- zone5a = new Series<double> (this, MaximumBarsLookBack.Infinite);
- zone5b = new Series<double> (this, MaximumBarsLookBack.Infinite);
- zone6a = new Series<double> (this, MaximumBarsLookBack.Infinite);
- zone6b = new Series<double> (this, MaximumBarsLookBack.Infinite);
- zone7a = new Series<double> (this, MaximumBarsLookBack.Infinite);
- zone7b = new Series<double> (this, MaximumBarsLookBack.Infinite);
- zone8a = new Series<double> (this, MaximumBarsLookBack.Infinite);
- zone8b = new Series<double> (this, MaximumBarsLookBack.Infinite);
- zone9a = new Series<double> (this, MaximumBarsLookBack.Infinite);
- zone9b = new Series<double> (this, MaximumBarsLookBack.Infinite);
- zone10a = new Series<double> (this, MaximumBarsLookBack.Infinite);
- zone10b = new Series<double> (this, MaximumBarsLookBack.Infinite);
- zone11a = new Series<double> (this, MaximumBarsLookBack.Infinite);
- zone11b = new Series<double> (this, MaximumBarsLookBack.Infinite);
- zone12a = new Series<double> (this, MaximumBarsLookBack.Infinite);
- zone12b = new Series<double> (this, MaximumBarsLookBack.Infinite);
- }
- }
- protected override void OnBarUpdate()
- {
- currentDate = ToDay(Time[0]);
- if (dateProcessed == null || currentDate > dateProcessed)
- {
- instrumentZoneFilePath = basePath + instrumentName + "_ZONES_" + currentDate + ".csv";
- dateProcessed = currentDate;
- // Set current zones back to default value in the case that no file is found.
- currentZone1a = 0.0;
- currentZone1b = 0.0;
- currentZone2a = 0.0;
- currentZone2b = 0.0;
- currentZone3a = 0.0;
- currentZone3b = 0.0;
- currentZone4a = 0.0;
- currentZone4b = 0.0;
- currentZone5a = 0.0;
- currentZone5b = 0.0;
- currentZone6a = 0.0;
- currentZone6b = 0.0;
- currentZone7a = 0.0;
- currentZone7b = 0.0;
- currentZone8a = 0.0;
- currentZone8b = 0.0;
- currentZone9a = 0.0;
- currentZone9b = 0.0;
- currentZone10a = 0.0;
- currentZone10b = 0.0;
- currentZone11a = 0.0;
- currentZone11b = 0.0;
- currentZone12a = 0.0;
- currentZone12b = 0.0;
- if (File.Exists(instrumentZoneFilePath))
- {
- string[] zoneLines = File.ReadAllLines(instrumentZoneFilePath);
- string[] split0 = zoneLines[0].Split(',');
- string[] split1 = zoneLines[1].Split(',');
- string[] split2 = zoneLines[2].Split(',');
- string[] split3 = zoneLines[3].Split(',');
- string[] split4 = zoneLines[4].Split(',');
- string[] split5 = zoneLines[5].Split(',');
- string[] split6 = zoneLines[6].Split(',');
- string[] split7 = zoneLines[7].Split(',');
- string[] split8 = zoneLines[8].Split(',');
- string[] split9 = zoneLines[9].Split(',');
- string[] split10 = zoneLines[10].Split(',');
- string[] split11 = zoneLines[11].Split(',');
- currentZone1a = double.Parse(split0[0]);
- currentZone1b = double.Parse(split0[1]);
- currentZone2a = double.Parse(split1[0]);
- currentZone2b = double.Parse(split1[1]);
- currentZone3a = double.Parse(split2[0]);
- currentZone3b = double.Parse(split2[1]);
- currentZone4a = double.Parse(split3[0]);
- currentZone4b = double.Parse(split3[1]);
- currentZone5a = double.Parse(split4[0]);
- currentZone5b = double.Parse(split4[1]);
- currentZone6a = double.Parse(split5[0]);
- currentZone6b = double.Parse(split5[1]);
- currentZone7a = double.Parse(split6[0]);
- currentZone7b = double.Parse(split6[1]);
- currentZone8a = double.Parse(split7[0]);
- currentZone8b = double.Parse(split7[1]);
- currentZone9a = double.Parse(split8[0]);
- currentZone9b = double.Parse(split8[1]);
- currentZone10a = double.Parse(split9[0]);
- currentZone10b = double.Parse(split9[1]);
- currentZone11a = double.Parse(split10[0]);
- currentZone11b = double.Parse(split10[1]);
- currentZone12a = double.Parse(split11[0]);
- currentZone12b = double.Parse(split11[1]);
- zone1a.Reset();
- }
- }
- // Guard for when no file is found and thus no data has been set.
- if (currentZone1a == 0.0) { return; };
- zone1a[0] = currentZone1a;
- zone1b[0] = currentZone1b;
- zone2a[0] = currentZone2a;
- zone2b[0] = currentZone2b;
- zone3a[0] = currentZone3a;
- zone3b[0] = currentZone3b;
- zone4a[0] = currentZone4a;
- zone4b[0] = currentZone4b;
- zone5a[0] = currentZone5a;
- zone5b[0] = currentZone5b;
- zone6a[0] = currentZone6a;
- zone6b[0] = currentZone6b;
- zone7a[0] = currentZone7a;
- zone7b[0] = currentZone7b;
- zone8a[0] = currentZone8a;
- zone8b[0] = currentZone8b;
- zone9a[0] = currentZone9a;
- zone9b[0] = currentZone9b;
- zone10a[0] = currentZone10a;
- zone10b[0] = currentZone10b;
- zone11a[0] = currentZone11a;
- zone11b[0] = currentZone11b;
- zone12a[0] = currentZone12a;
- zone12b[0] = currentZone12b;
- Print(ToDay(Time[0]));
- Print(dateProcessed);
- Print("Zone1" + dateProcessed);
- Print(" ");
- if (dateProcessed == 20170830)
- {
- Print("20170830 alksdjflkjsdlkfjasldkjf");
- Print(CurrentBar);
- Draw.Region(this, "Zone1-" + dateProcessed, CurrentBar, 0, zone1a, zone1b, Brushes.Red, Brushes.Cyan, 25);
- Draw.Region(this, "Zone2-" + dateProcessed, CurrentBar, 0, zone2a, zone2b, Brushes.Red, Brushes.Cyan, 25);
- Draw.Region(this, "Zone3-" + dateProcessed, CurrentBar, 0, zone3a, zone3b, Brushes.Red, Brushes.Cyan, 25);
- Draw.Region(this, "Zone4-" + dateProcessed, CurrentBar, 0, zone4a, zone4b, Brushes.Red, Brushes.Cyan, 25);
- Draw.Region(this, "Zone5-" + dateProcessed, CurrentBar, 0, zone5a, zone5b, Brushes.Red, Brushes.Cyan, 25);
- Draw.Region(this, "Zone6-" + dateProcessed, CurrentBar, 0, zone6a, zone6b, Brushes.Red, Brushes.Cyan, 25);
- Draw.Region(this, "Zone7-" + dateProcessed, CurrentBar, 0, zone7a, zone7b, Brushes.Red, Brushes.Cyan, 25);
- Draw.Region(this, "Zone8-" + dateProcessed, CurrentBar, 0, zone8a, zone8b, Brushes.Red, Brushes.Cyan, 25);
- Draw.Region(this, "Zone9-" + dateProcessed, CurrentBar, 0, zone9a, zone9b, Brushes.Red, Brushes.Cyan, 25);
- Draw.Region(this, "Zone10-" + dateProcessed, CurrentBar, 0, zone10a, zone10b, Brushes.Red, Brushes.Cyan, 25);
- Draw.Region(this, "Zone11-" + dateProcessed, CurrentBar, 0, zone11a, zone11b, Brushes.Red, Brushes.Cyan, 25);
- Draw.Region(this, "Zone12-" + dateProcessed, CurrentBar, 0, zone12a, zone12b, Brushes.Red, Brushes.Cyan, 25);
- }
- else
- {
- Draw.Region(this, "Zone1-" + dateProcessed, CurrentBar, 0, zone1a, zone1b, null, Brushes.Cyan, 25);
- Draw.Region(this, "Zone2-" + dateProcessed, CurrentBar, 0, zone2a, zone2b, null, Brushes.Cyan, 25);
- Draw.Region(this, "Zone3-" + dateProcessed, CurrentBar, 0, zone3a, zone3b, null, Brushes.Cyan, 25);
- Draw.Region(this, "Zone4-" + dateProcessed, CurrentBar, 0, zone4a, zone4b, null, Brushes.Cyan, 25);
- Draw.Region(this, "Zone5-" + dateProcessed, CurrentBar, 0, zone5a, zone5b, null, Brushes.Cyan, 25);
- Draw.Region(this, "Zone6-" + dateProcessed, CurrentBar, 0, zone6a, zone6b, null, Brushes.Cyan, 25);
- Draw.Region(this, "Zone7-" + dateProcessed, CurrentBar, 0, zone7a, zone7b, null, Brushes.Cyan, 25);
- Draw.Region(this, "Zone8-" + dateProcessed, CurrentBar, 0, zone8a, zone8b, null, Brushes.Cyan, 25);
- Draw.Region(this, "Zone9-" + dateProcessed, CurrentBar, 0, zone9a, zone9b, null, Brushes.Cyan, 25);
- Draw.Region(this, "Zone10-" + dateProcessed, CurrentBar, 0, zone10a, zone10b, null, Brushes.Cyan, 25);
- Draw.Region(this, "Zone11-" + dateProcessed, CurrentBar, 0, zone11a, zone11b, null, Brushes.Cyan, 25);
- Draw.Region(this, "Zone12-" + dateProcessed, CurrentBar, 0, zone12a, zone12b, null, Brushes.Cyan, 25);
- }
- }
- }
- }
- #region NinjaScript generated code. Neither change nor remove.
- namespace NinjaTrader.NinjaScript.Indicators
- {
- public partial class Indicator : NinjaTrader.Gui.NinjaScript.IndicatorRenderBase
- {
- private JammyZones[] cacheJammyZones;
- public JammyZones JammyZones()
- {
- return JammyZones(Input);
- }
- public JammyZones JammyZones(ISeries<double> input)
- {
- if (cacheJammyZones != null)
- for (int idx = 0; idx < cacheJammyZones.Length; idx++)
- if (cacheJammyZones[idx] != null && cacheJammyZones[idx].EqualsInput(input))
- return cacheJammyZones[idx];
- return CacheIndicator<JammyZones>(new JammyZones(), input, ref cacheJammyZones);
- }
- }
- }
- namespace NinjaTrader.NinjaScript.MarketAnalyzerColumns
- {
- public partial class MarketAnalyzerColumn : MarketAnalyzerColumnBase
- {
- public Indicators.JammyZones JammyZones()
- {
- return indicator.JammyZones(Input);
- }
- public Indicators.JammyZones JammyZones(ISeries<double> input )
- {
- return indicator.JammyZones(input);
- }
- }
- }
- namespace NinjaTrader.NinjaScript.Strategies
- {
- public partial class Strategy : NinjaTrader.Gui.NinjaScript.StrategyRenderBase
- {
- public Indicators.JammyZones JammyZones()
- {
- return indicator.JammyZones(Input);
- }
- public Indicators.JammyZones JammyZones(ISeries<double> input )
- {
- return indicator.JammyZones(input);
- }
- }
- }
- #endregion
Advertisement
Add Comment
Please, Sign In to add comment
Advertisement