Advertisement
Guest User

Untitled

a guest
Jul 18th, 2021
106
0
Never
Not a member of Pastebin yet? Sign Up, it unlocks many cool features!
C# 7.95 KB | None | 0 0
  1. #region Using declarations
  2. using System;
  3. using System.Diagnostics;
  4. using System.Drawing;
  5. using System.Drawing.Drawing2D;
  6. using System.ComponentModel;
  7. using System.Xml.Serialization;
  8. using NinjaTrader.Cbi;
  9. using NinjaTrader.Data;
  10. using NinjaTrader.Gui.Chart;
  11.  
  12. using System.Reflection;
  13. using System.Windows.Forms;
  14.  
  15. using NinjaTrader.Strategy;            
  16. using NinjaTrader.Indicator;           
  17.  
  18. using System.Collections;
  19. #endregion
  20.  
  21. namespace NinjaTrader.Indicator
  22. {          
  23.     [Description("")]
  24.     public class ManageTradesV1 : Indicator
  25.     {
  26.         #region Variables
  27.         private int period = 14;
  28.        
  29.         private DataSeries ma;
  30.        
  31.         private string account = "";
  32.         private int accountindex = -1;
  33.         private int positionindex = -1;
  34.         private Font textFont = new Font("Arial",10,FontStyle.Bold);
  35.         #endregion
  36.  
  37.         protected override void Initialize()
  38.         {
  39.             ma = new DataSeries(this);
  40.            
  41.             CalculateOnBarClose = true;
  42.             Overlay             = true;
  43.             PaintPriceMarkers   = false;
  44.             DisplayInDataBox    = false;
  45.  
  46.         }
  47.  
  48.         protected override void OnStartUp()
  49.         {
  50.             if ( NinjaTrader.Cbi.Globals.Accounts.Count > 0)
  51.             {
  52.                 for (int j=0; j < NinjaTrader.Cbi.Globals.Accounts.Count; j++ )
  53.                 {
  54.                     if (NinjaTrader.Cbi.Globals.Accounts[j].Name == "Sim101") //Replay101")//
  55.                     {
  56.                         account = NinjaTrader.Cbi.Globals.Accounts[j].Name;
  57.                         accountindex = j;
  58.                         return;
  59.                     }
  60.                 }
  61.             }
  62.         }
  63.        
  64.         protected override void OnBarUpdate()
  65.         {
  66.             ma.Set(SMA(Median,period)[0]);//(EMA(SMA(Median,46),37)[0]);
  67.            
  68.             DrawTextFixed("acct",account + " " + accountindex,TextPosition.BottomLeft,Color.White,textFont,Color.Black,Color.Black,10);
  69.            
  70.             if ( CurrentBar < period || Historical ) return;
  71.  
  72.             if (NinjaTrader.Cbi.Globals.Accounts[accountindex].Positions.Count > 0)
  73.             {
  74.                 for (int j=0; j < NinjaTrader.Cbi.Globals.Accounts[accountindex].Positions.Count; j++ )
  75.                 {
  76.                     if ( NinjaTrader.Cbi.Globals.Accounts[accountindex].Positions[j].Instrument.FullName == Instrument.FullName )
  77.                     {
  78.                         if (NinjaTrader.Cbi.Globals.Accounts[accountindex].Positions[j].MarketPosition == MarketPosition.Short &&
  79.                             ma[0] > ma[1])
  80.                         {
  81.                             Print(Time[0] + " " + NinjaTrader.Cbi.Globals.Accounts[accountindex].Name +" Position " +(j+1) +". "
  82.                             +NinjaTrader.Cbi.Globals.Accounts[accountindex].Positions[j].Instrument.FullName +" "
  83.                             +NinjaTrader.Cbi.Globals.Accounts[accountindex].Positions[j].MarketPosition +" "
  84.                             +NinjaTrader.Cbi.Globals.Accounts[accountindex].Positions[j].Quantity +" "
  85.                             +"@"+NinjaTrader.Cbi.Globals.Accounts[accountindex].Positions[j].AvgPrice+" ");
  86.                            
  87.                             NinjaTrader.Cbi.Globals.Accounts[accountindex].Positions[j].Close();
  88.                             Print("Close Short Position");
  89.                             positionindex = j;
  90.                             return;
  91.                         }
  92.                         else if (NinjaTrader.Cbi.Globals.Accounts[accountindex].Positions[j].MarketPosition == MarketPosition.Long &&
  93.                             ma[0] < ma[1])
  94.                         {
  95.                             Print(Time[0] + " " + NinjaTrader.Cbi.Globals.Accounts[accountindex].Name +" Position " +(j+1) +". "
  96.                             +NinjaTrader.Cbi.Globals.Accounts[accountindex].Positions[j].Instrument.FullName +" "
  97.                             +NinjaTrader.Cbi.Globals.Accounts[accountindex].Positions[j].MarketPosition +" "
  98.                             +NinjaTrader.Cbi.Globals.Accounts[accountindex].Positions[j].Quantity +" "
  99.                             +"@"+NinjaTrader.Cbi.Globals.Accounts[accountindex].Positions[j].AvgPrice+" ");
  100.                            
  101.                             NinjaTrader.Cbi.Globals.Accounts[accountindex].Positions[j].Close();
  102.                             Print("Close Long Position");
  103.                             positionindex = j;
  104.                             return;
  105.                         }
  106.                     }
  107.                 }
  108.             }
  109.         }
  110.  
  111.         #region Properties
  112.         [Description("")]
  113.         [Category("Parameters")]
  114.         public int Period
  115.         {
  116.             get { return Math.Max(1,period); }
  117.             set { period = value; }
  118.         }
  119.        
  120.         #endregion
  121.     }
  122. }
  123.  
  124.  
  125. #region NinjaScript generated code. Neither change nor remove.
  126. // This namespace holds all indicators and is required. Do not change it.
  127. namespace NinjaTrader.Indicator
  128. {
  129.     public partial class Indicator : IndicatorBase
  130.     {
  131.         private ManageTradesV1[] cacheManageTradesV1 = null;
  132.  
  133.         private static ManageTradesV1 checkManageTradesV1 = new ManageTradesV1();
  134.  
  135.         /// <summary>
  136.         ///
  137.         /// </summary>
  138.         /// <returns></returns>
  139.         public ManageTradesV1 ManageTradesV1(int period)
  140.         {
  141.             return ManageTradesV1(Input, period);
  142.         }
  143.  
  144.         /// <summary>
  145.         ///
  146.         /// </summary>
  147.         /// <returns></returns>
  148.         public ManageTradesV1 ManageTradesV1(Data.IDataSeries input, int period)
  149.         {
  150.             if (cacheManageTradesV1 != null)
  151.                 for (int idx = 0; idx < cacheManageTradesV1.Length; idx++)
  152.                     if (cacheManageTradesV1[idx].Period == period && cacheManageTradesV1[idx].EqualsInput(input))
  153.                         return cacheManageTradesV1[idx];
  154.  
  155.             lock (checkManageTradesV1)
  156.             {
  157.                 checkManageTradesV1.Period = period;
  158.                 period = checkManageTradesV1.Period;
  159.  
  160.                 if (cacheManageTradesV1 != null)
  161.                     for (int idx = 0; idx < cacheManageTradesV1.Length; idx++)
  162.                         if (cacheManageTradesV1[idx].Period == period && cacheManageTradesV1[idx].EqualsInput(input))
  163.                             return cacheManageTradesV1[idx];
  164.  
  165.                 ManageTradesV1 indicator = new ManageTradesV1();
  166.                 indicator.BarsRequired = BarsRequired;
  167.                 indicator.CalculateOnBarClose = CalculateOnBarClose;
  168. #if NT7
  169.                 indicator.ForceMaximumBarsLookBack256 = ForceMaximumBarsLookBack256;
  170.                 indicator.MaximumBarsLookBack = MaximumBarsLookBack;
  171. #endif
  172.                 indicator.Input = input;
  173.                 indicator.Period = period;
  174.                 Indicators.Add(indicator);
  175.                 indicator.SetUp();
  176.  
  177.                 ManageTradesV1[] tmp = new ManageTradesV1[cacheManageTradesV1 == null ? 1 : cacheManageTradesV1.Length + 1];
  178.                 if (cacheManageTradesV1 != null)
  179.                     cacheManageTradesV1.CopyTo(tmp, 0);
  180.                 tmp[tmp.Length - 1] = indicator;
  181.                 cacheManageTradesV1 = tmp;
  182.                 return indicator;
  183.             }
  184.         }
  185.     }
  186. }
  187.  
  188. // This namespace holds all market analyzer column definitions and is required. Do not change it.
  189. namespace NinjaTrader.MarketAnalyzer
  190. {
  191.     public partial class Column : ColumnBase
  192.     {
  193.         /// <summary>
  194.         ///
  195.         /// </summary>
  196.         /// <returns></returns>
  197.         [Gui.Design.WizardCondition("Indicator")]
  198.         public Indicator.ManageTradesV1 ManageTradesV1(int period)
  199.         {
  200.             return _indicator.ManageTradesV1(Input, period);
  201.         }
  202.  
  203.         /// <summary>
  204.         ///
  205.         /// </summary>
  206.         /// <returns></returns>
  207.         public Indicator.ManageTradesV1 ManageTradesV1(Data.IDataSeries input, int period)
  208.         {
  209.             return _indicator.ManageTradesV1(input, period);
  210.         }
  211.     }
  212. }
  213.  
  214. // This namespace holds all strategies and is required. Do not change it.
  215. namespace NinjaTrader.Strategy
  216. {
  217.     public partial class Strategy : StrategyBase
  218.     {
  219.         /// <summary>
  220.         ///
  221.         /// </summary>
  222.         /// <returns></returns>
  223.         [Gui.Design.WizardCondition("Indicator")]
  224.         public Indicator.ManageTradesV1 ManageTradesV1(int period)
  225.         {
  226.             return _indicator.ManageTradesV1(Input, period);
  227.         }
  228.  
  229.         /// <summary>
  230.         ///
  231.         /// </summary>
  232.         /// <returns></returns>
  233.         public Indicator.ManageTradesV1 ManageTradesV1(Data.IDataSeries input, int period)
  234.         {
  235.             if (InInitialize && input == null)
  236.                 throw new ArgumentException("You only can access an indicator with the default input/bar series from within the 'Initialize()' method");
  237.  
  238.             return _indicator.ManageTradesV1(input, period);
  239.         }
  240.     }
  241. }
  242. #endregion
  243.  
Advertisement
Add Comment
Please, Sign In to add comment
Advertisement