Advertisement
Guest User

Untitled

a guest
Sep 7th, 2017
165
0
Never
Not a member of Pastebin yet? Sign Up, it unlocks many cool features!
C# 13.26 KB | None | 0 0
  1. #region Using declarations
  2. using System;
  3. using System.Collections.Generic;
  4. using System.ComponentModel;
  5. using System.ComponentModel.DataAnnotations;
  6. using System.Linq;
  7. using System.Text;
  8. using System.Threading.Tasks;
  9. using System.Windows;
  10. using System.Windows.Input;
  11. using System.Windows.Media;
  12. using System.Xml.Serialization;
  13. using NinjaTrader.Cbi;
  14. using NinjaTrader.Gui;
  15. using NinjaTrader.Gui.Chart;
  16. using NinjaTrader.Gui.SuperDom;
  17. using NinjaTrader.Gui.Tools;
  18. using NinjaTrader.Data;
  19. using NinjaTrader.NinjaScript;
  20. using NinjaTrader.Core.FloatingPoint;
  21. using NinjaTrader.NinjaScript.DrawingTools;
  22.  
  23. using System.IO;
  24. #endregion
  25.  
  26. //This namespace holds Indicators in this folder and is required. Do not change it.
  27. namespace NinjaTrader.NinjaScript.Indicators
  28. {
  29.     public class JammyZones : Indicator
  30.     {
  31.         #region Variables
  32.         private string instrumentName;
  33.         private string basePath;
  34.         private string instrumentZoneFilePath;
  35.         private int currentDate;
  36.         private int dateProcessed;
  37.        
  38.         // Zone current temp vars for assigning to series below
  39.         private double currentZone1a;
  40.         private double currentZone1b;
  41.         private double currentZone2a;
  42.         private double currentZone2b;
  43.         private double currentZone3a;
  44.         private double currentZone3b;
  45.         private double currentZone4a;
  46.         private double currentZone4b;
  47.         private double currentZone5a;
  48.         private double currentZone5b;
  49.         private double currentZone6a;
  50.         private double currentZone6b;
  51.         private double currentZone7a;
  52.         private double currentZone7b;
  53.         private double currentZone8a;
  54.         private double currentZone8b;
  55.         private double currentZone9a;
  56.         private double currentZone9b;
  57.         private double currentZone10a;
  58.         private double currentZone10b;
  59.         private double currentZone11a;
  60.         private double currentZone11b;
  61.         private double currentZone12a;
  62.         private double currentZone12b;
  63.        
  64.         // Zone series for Region plotting
  65.         private Series<double> zone1a;
  66.         private Series<double> zone1b;
  67.         private Series<double> zone2a;
  68.         private Series<double> zone2b;
  69.         private Series<double> zone3a;
  70.         private Series<double> zone3b;
  71.         private Series<double> zone4a;
  72.         private Series<double> zone4b;
  73.         private Series<double> zone5a;
  74.         private Series<double> zone5b;
  75.         private Series<double> zone6a;
  76.         private Series<double> zone6b;
  77.         private Series<double> zone7a;
  78.         private Series<double> zone7b;
  79.         private Series<double> zone8a;
  80.         private Series<double> zone8b;
  81.         private Series<double> zone9a;
  82.         private Series<double> zone9b;
  83.         private Series<double> zone10a;
  84.         private Series<double> zone10b;
  85.         private Series<double> zone11a;
  86.         private Series<double> zone11b;
  87.         private Series<double> zone12a;
  88.         private Series<double> zone12b;
  89.         #endregion
  90.        
  91.         protected override void OnStateChange()
  92.         {
  93.             if (State == State.SetDefaults)
  94.             {
  95.                 Description                                 = @"More easily plot zones from text file";
  96.                 Name                                        = " JammyZones";
  97.                 Calculate                                   = Calculate.OnBarClose;
  98.                 IsOverlay                                   = true;
  99.                 DisplayInDataBox                            = false;
  100.                 DrawOnPricePanel                            = true;
  101.                 DrawHorizontalGridLines                     = false;
  102.                 DrawVerticalGridLines                       = false;
  103.                 PaintPriceMarkers                           = true;
  104.                 ScaleJustification                          = NinjaTrader.Gui.Chart.ScaleJustification.Right;
  105.                 //Disable this property if your indicator requires custom values that cumulate with each new market data event.
  106.                 //See Help Guide for additional information.
  107.                 IsSuspendedWhileInactive                    = true;
  108.                
  109.                 basePath = Core.Globals.UserDataDir.ToString() + "zones\\";
  110.             }
  111.             else if (State == State.Configure)
  112.             {
  113.             }
  114.            
  115.             else if (State == State.DataLoaded)
  116.             {
  117.                 instrumentName = Instrument.FullName.Substring(0, 2);
  118.                
  119.                 zone1a = new Series<double> (this, MaximumBarsLookBack.Infinite);
  120.                 zone1b = new Series<double> (this, MaximumBarsLookBack.Infinite);
  121.                 zone2a = new Series<double> (this, MaximumBarsLookBack.Infinite);
  122.                 zone2b = new Series<double> (this, MaximumBarsLookBack.Infinite);
  123.                 zone3a = new Series<double> (this, MaximumBarsLookBack.Infinite);
  124.                 zone3b = new Series<double> (this, MaximumBarsLookBack.Infinite);
  125.                 zone4a = new Series<double> (this, MaximumBarsLookBack.Infinite);
  126.                 zone4b = new Series<double> (this, MaximumBarsLookBack.Infinite);
  127.                 zone5a = new Series<double> (this, MaximumBarsLookBack.Infinite);
  128.                 zone5b = new Series<double> (this, MaximumBarsLookBack.Infinite);
  129.                 zone6a = new Series<double> (this, MaximumBarsLookBack.Infinite);
  130.                 zone6b = new Series<double> (this, MaximumBarsLookBack.Infinite);
  131.                 zone7a = new Series<double> (this, MaximumBarsLookBack.Infinite);
  132.                 zone7b = new Series<double> (this, MaximumBarsLookBack.Infinite);
  133.                 zone8a = new Series<double> (this, MaximumBarsLookBack.Infinite);
  134.                 zone8b = new Series<double> (this, MaximumBarsLookBack.Infinite);
  135.                 zone9a = new Series<double> (this, MaximumBarsLookBack.Infinite);
  136.                 zone9b = new Series<double> (this, MaximumBarsLookBack.Infinite);
  137.                 zone10a = new Series<double> (this, MaximumBarsLookBack.Infinite);
  138.                 zone10b = new Series<double> (this, MaximumBarsLookBack.Infinite);
  139.                 zone11a = new Series<double> (this, MaximumBarsLookBack.Infinite);
  140.                 zone11b = new Series<double> (this, MaximumBarsLookBack.Infinite);
  141.                 zone12a = new Series<double> (this, MaximumBarsLookBack.Infinite);
  142.                 zone12b = new Series<double> (this, MaximumBarsLookBack.Infinite);
  143.             }
  144.         }
  145.  
  146.         protected override void OnBarUpdate()
  147.         {
  148.             currentDate = ToDay(Time[0]);
  149.  
  150.             if (dateProcessed == null || currentDate > dateProcessed)
  151.             {
  152.                 instrumentZoneFilePath = basePath + instrumentName + "_ZONES_" + currentDate + ".csv";
  153.                 dateProcessed = currentDate;
  154.  
  155.                 // Set current zones back to default value in the case that no file is found.
  156.                 currentZone1a = 0.0;
  157.                 currentZone1b = 0.0;
  158.                 currentZone2a = 0.0;
  159.                 currentZone2b = 0.0;
  160.                 currentZone3a = 0.0;
  161.                 currentZone3b = 0.0;
  162.                 currentZone4a = 0.0;
  163.                 currentZone4b = 0.0;
  164.                 currentZone5a = 0.0;
  165.                 currentZone5b = 0.0;
  166.                 currentZone6a = 0.0;
  167.                 currentZone6b = 0.0;
  168.                 currentZone7a = 0.0;
  169.                 currentZone7b = 0.0;
  170.                 currentZone8a = 0.0;
  171.                 currentZone8b = 0.0;
  172.                 currentZone9a = 0.0;
  173.                 currentZone9b = 0.0;
  174.                 currentZone10a = 0.0;
  175.                 currentZone10b = 0.0;
  176.                 currentZone11a = 0.0;
  177.                 currentZone11b = 0.0;
  178.                 currentZone12a = 0.0;
  179.                 currentZone12b = 0.0;
  180.  
  181.                 if (File.Exists(instrumentZoneFilePath))
  182.                 {
  183.                     string[] zoneLines = File.ReadAllLines(instrumentZoneFilePath);
  184.                    
  185.                     string[] split0 = zoneLines[0].Split(',');
  186.                     string[] split1 = zoneLines[1].Split(',');
  187.                     string[] split2 = zoneLines[2].Split(',');
  188.                     string[] split3 = zoneLines[3].Split(',');
  189.                     string[] split4 = zoneLines[4].Split(',');
  190.                     string[] split5 = zoneLines[5].Split(',');
  191.                     string[] split6 = zoneLines[6].Split(',');
  192.                     string[] split7 = zoneLines[7].Split(',');
  193.                     string[] split8 = zoneLines[8].Split(',');
  194.                     string[] split9 = zoneLines[9].Split(',');
  195.                     string[] split10 = zoneLines[10].Split(',');
  196.                     string[] split11 = zoneLines[11].Split(',');
  197.                    
  198.                     currentZone1a = double.Parse(split0[0]);
  199.                     currentZone1b = double.Parse(split0[1]);
  200.                     currentZone2a = double.Parse(split1[0]);
  201.                     currentZone2b = double.Parse(split1[1]);
  202.                     currentZone3a = double.Parse(split2[0]);
  203.                     currentZone3b = double.Parse(split2[1]);
  204.                     currentZone4a = double.Parse(split3[0]);
  205.                     currentZone4b = double.Parse(split3[1]);
  206.                     currentZone5a = double.Parse(split4[0]);
  207.                     currentZone5b = double.Parse(split4[1]);
  208.                     currentZone6a = double.Parse(split5[0]);
  209.                     currentZone6b = double.Parse(split5[1]);
  210.                     currentZone7a = double.Parse(split6[0]);
  211.                     currentZone7b = double.Parse(split6[1]);
  212.                     currentZone8a = double.Parse(split7[0]);
  213.                     currentZone8b = double.Parse(split7[1]);
  214.                     currentZone9a = double.Parse(split8[0]);
  215.                     currentZone9b = double.Parse(split8[1]);
  216.                     currentZone10a = double.Parse(split9[0]);
  217.                     currentZone10b = double.Parse(split9[1]);
  218.                     currentZone11a = double.Parse(split10[0]);
  219.                     currentZone11b = double.Parse(split10[1]);
  220.                     currentZone12a = double.Parse(split11[0]);
  221.                     currentZone12b = double.Parse(split11[1]);
  222.                    
  223.                     zone1a.Reset();
  224.                 }  
  225.             }
  226.            
  227.            
  228.             // Guard for when no file is found and thus no data has been set.
  229.             if (currentZone1a == 0.0) { return; };
  230.            
  231.             zone1a[0] = currentZone1a;
  232.             zone1b[0] = currentZone1b;
  233.             zone2a[0] = currentZone2a;
  234.             zone2b[0] = currentZone2b;
  235.             zone3a[0] = currentZone3a;
  236.             zone3b[0] = currentZone3b;
  237.             zone4a[0] = currentZone4a;
  238.             zone4b[0] = currentZone4b;
  239.             zone5a[0] = currentZone5a;
  240.             zone5b[0] = currentZone5b;
  241.             zone6a[0] = currentZone6a;
  242.             zone6b[0] = currentZone6b;
  243.             zone7a[0] = currentZone7a;
  244.             zone7b[0] = currentZone7b;
  245.             zone8a[0] = currentZone8a;
  246.             zone8b[0] = currentZone8b;
  247.             zone9a[0] = currentZone9a;
  248.             zone9b[0] = currentZone9b;
  249.             zone10a[0] = currentZone10a;
  250.             zone10b[0] = currentZone10b;
  251.             zone11a[0] = currentZone11a;
  252.             zone11b[0] = currentZone11b;
  253.             zone12a[0] = currentZone12a;
  254.             zone12b[0] = currentZone12b;
  255.            
  256.             Print(ToDay(Time[0]));
  257.             Print(dateProcessed);
  258.             Print("Zone1" + dateProcessed);
  259.             Print("    ");
  260.  
  261.             if (dateProcessed == 20170830)
  262.             {
  263.                 Print("20170830 alksdjflkjsdlkfjasldkjf");
  264.                 Print(CurrentBar);
  265.                 Draw.Region(this, "Zone1-" + dateProcessed, CurrentBar, 0, zone1a, zone1b, Brushes.Red, Brushes.Cyan, 25);
  266.                 Draw.Region(this, "Zone2-" + dateProcessed, CurrentBar, 0, zone2a, zone2b, Brushes.Red, Brushes.Cyan, 25);
  267.                 Draw.Region(this, "Zone3-" + dateProcessed, CurrentBar, 0, zone3a, zone3b, Brushes.Red, Brushes.Cyan, 25);
  268.                 Draw.Region(this, "Zone4-" + dateProcessed, CurrentBar, 0, zone4a, zone4b, Brushes.Red, Brushes.Cyan, 25);
  269.                 Draw.Region(this, "Zone5-" + dateProcessed, CurrentBar, 0, zone5a, zone5b, Brushes.Red, Brushes.Cyan, 25);
  270.                 Draw.Region(this, "Zone6-" + dateProcessed, CurrentBar, 0, zone6a, zone6b, Brushes.Red, Brushes.Cyan, 25);
  271.                 Draw.Region(this, "Zone7-" + dateProcessed, CurrentBar, 0, zone7a, zone7b, Brushes.Red, Brushes.Cyan, 25);
  272.                 Draw.Region(this, "Zone8-" + dateProcessed, CurrentBar, 0, zone8a, zone8b, Brushes.Red, Brushes.Cyan, 25);
  273.                 Draw.Region(this, "Zone9-" + dateProcessed, CurrentBar, 0, zone9a, zone9b, Brushes.Red, Brushes.Cyan, 25);
  274.                 Draw.Region(this, "Zone10-" + dateProcessed, CurrentBar, 0, zone10a, zone10b, Brushes.Red, Brushes.Cyan, 25);
  275.                 Draw.Region(this, "Zone11-" + dateProcessed, CurrentBar, 0, zone11a, zone11b, Brushes.Red, Brushes.Cyan, 25);
  276.                 Draw.Region(this, "Zone12-" + dateProcessed, CurrentBar, 0, zone12a, zone12b, Brushes.Red, Brushes.Cyan, 25);
  277.             }
  278.             else
  279.             {
  280.                 Draw.Region(this, "Zone1-" + dateProcessed, CurrentBar, 0, zone1a, zone1b, null, Brushes.Cyan, 25);
  281.                 Draw.Region(this, "Zone2-" + dateProcessed, CurrentBar, 0, zone2a, zone2b, null, Brushes.Cyan, 25);
  282.                 Draw.Region(this, "Zone3-" + dateProcessed, CurrentBar, 0, zone3a, zone3b, null, Brushes.Cyan, 25);
  283.                 Draw.Region(this, "Zone4-" + dateProcessed, CurrentBar, 0, zone4a, zone4b, null, Brushes.Cyan, 25);
  284.                 Draw.Region(this, "Zone5-" + dateProcessed, CurrentBar, 0, zone5a, zone5b, null, Brushes.Cyan, 25);
  285.                 Draw.Region(this, "Zone6-" + dateProcessed, CurrentBar, 0, zone6a, zone6b, null, Brushes.Cyan, 25);
  286.                 Draw.Region(this, "Zone7-" + dateProcessed, CurrentBar, 0, zone7a, zone7b, null, Brushes.Cyan, 25);
  287.                 Draw.Region(this, "Zone8-" + dateProcessed, CurrentBar, 0, zone8a, zone8b, null, Brushes.Cyan, 25);
  288.                 Draw.Region(this, "Zone9-" + dateProcessed, CurrentBar, 0, zone9a, zone9b, null, Brushes.Cyan, 25);
  289.                 Draw.Region(this, "Zone10-" + dateProcessed, CurrentBar, 0, zone10a, zone10b, null, Brushes.Cyan, 25);
  290.                 Draw.Region(this, "Zone11-" + dateProcessed, CurrentBar, 0, zone11a, zone11b, null, Brushes.Cyan, 25);
  291.                 Draw.Region(this, "Zone12-" + dateProcessed, CurrentBar, 0, zone12a, zone12b, null, Brushes.Cyan, 25);
  292.             }
  293.         }
  294.     }
  295. }
  296.  
  297. #region NinjaScript generated code. Neither change nor remove.
  298.  
  299. namespace NinjaTrader.NinjaScript.Indicators
  300. {
  301.     public partial class Indicator : NinjaTrader.Gui.NinjaScript.IndicatorRenderBase
  302.     {
  303.         private JammyZones[] cacheJammyZones;
  304.         public JammyZones JammyZones()
  305.         {
  306.             return JammyZones(Input);
  307.         }
  308.  
  309.         public JammyZones JammyZones(ISeries<double> input)
  310.         {
  311.             if (cacheJammyZones != null)
  312.                 for (int idx = 0; idx < cacheJammyZones.Length; idx++)
  313.                     if (cacheJammyZones[idx] != null &&  cacheJammyZones[idx].EqualsInput(input))
  314.                         return cacheJammyZones[idx];
  315.             return CacheIndicator<JammyZones>(new JammyZones(), input, ref cacheJammyZones);
  316.         }
  317.     }
  318. }
  319.  
  320. namespace NinjaTrader.NinjaScript.MarketAnalyzerColumns
  321. {
  322.     public partial class MarketAnalyzerColumn : MarketAnalyzerColumnBase
  323.     {
  324.         public Indicators.JammyZones JammyZones()
  325.         {
  326.             return indicator.JammyZones(Input);
  327.         }
  328.  
  329.         public Indicators.JammyZones JammyZones(ISeries<double> input )
  330.         {
  331.             return indicator.JammyZones(input);
  332.         }
  333.     }
  334. }
  335.  
  336. namespace NinjaTrader.NinjaScript.Strategies
  337. {
  338.     public partial class Strategy : NinjaTrader.Gui.NinjaScript.StrategyRenderBase
  339.     {
  340.         public Indicators.JammyZones JammyZones()
  341.         {
  342.             return indicator.JammyZones(Input);
  343.         }
  344.  
  345.         public Indicators.JammyZones JammyZones(ISeries<double> input )
  346.         {
  347.             return indicator.JammyZones(input);
  348.         }
  349.     }
  350. }
  351.  
  352. #endregion
Advertisement
Add Comment
Please, Sign In to add comment
Advertisement